서명 된 삽입 작업이 Unrevealed_Key 오류로 실패
1 대답
- 투표
-
- 2019-03-03
계정에서 거래를 보내기 전에 계정에 대해 '공개'작업을 수행해야합니다. 이 계정은 활성화되었지만 아직 공개되지 않은 것 같습니다. 이 작업을 수행하려면 작업 목록에 표시 작업을 포함해야합니다.
sotez.rpc.getHead() .then(head => { const operation = { branch: head.hash, contents: [ { kind: 'reveal', fee: '1269', counter: '31204', public_key: keys.pk, source: from, gas_limit: '10000', storage_limit: '0', }, { kind: 'transaction', source: from, fee: '50000', counter: '31205', gas_limit: '10200', storage_limit: '0', amount: amount, destination: to, } ], } ... })
계정이 공개 된 후에는 이후 작업에 공개를 포함 할 필요가 없습니다.
SendOperation 답변 :
const send = (from, to, amount, keys) => { const operation = { kind: 'transaction', source: from, fee: '50000', gas_limit: '10200', storage_limit: '0', amount: `${amount}`, destination: to, }; rpc.sendOperation({ from, operation, keys }) .then(result => console.log(result)); };
Before sending transactions from an account, a 'reveal' operation must be made for the account. It looks like this account may have been activated, but not yet revealed. To make this work we would need to include the reveal operation in the list of operations:
sotez.rpc.getHead() .then(head => { const operation = { branch: head.hash, contents: [ { kind: 'reveal', fee: '1269', counter: '31204', public_key: keys.pk, source: from, gas_limit: '10000', storage_limit: '0', }, { kind: 'transaction', source: from, fee: '50000', counter: '31205', gas_limit: '10200', storage_limit: '0', amount: amount, destination: to, } ], } ... })
After the account has been revealed, the reveal is not needed to be included in the operations thereafter.
SendOperation Answer:
const send = (from, to, amount, keys) => { const operation = { kind: 'transaction', source: from, fee: '50000', gas_limit: '10200', storage_limit: '0', amount: `${amount}`, destination: to, }; rpc.sendOperation({ from, operation, keys }) .then(result => console.log(result)); };
-
감사!공개 작업을 추가하여 내 질문을 편집했습니다.지금 실행하면 결과 나 오류없이 중단됩니다.Thanks! I edited my question with the reveal operation added. When I run it now, it just hangs with no result or error.
- 0
- 2019-03-03
- Michael Rodriguez
-
아,그건 카운터 증가 때문이었습니다.나는 당신의 편집을 발견하고 내 방법으로 수정했습니다.하지만 이상하게도 이제이 오류가 발생합니다. { "kind": "permanent","id": "proto.003-PsddFKi3.operation.invalid_signature"}Ah nevermind, it was because of the counter increment. I noticed your edit and fixed it in my method. Oddly, though, now I'm getting this error: {"kind":"permanent","id":"proto.003-PsddFKi3.operation.invalid_signature"}
- 0
- 2019-03-03
- Michael Rodriguez
-
rpc.sendOperation을 사용하여 동일한 전송을 시도 했습니까?sendOperation은 트랜잭션에 작업에 대한 공개 및 모든 카운터가 필요한지 여부를 처리해야합니다.Have you tried the same transfer using rpc.sendOperation? sendOperation should handle whether the transaction needs a reveal and all the counters for the operations.
- 0
- 2019-03-04
- AKISH
-
먼저 그 방법을 시도했지만 응답이나 오류없이 중단되었습니다.그런 다음 나는 sendOperation이 키 개체를 매개 변수로 사용하는 것을 좋아하지 않았기 때문에 더 안전 할 것이라고 생각하면서 이렇게 할 것이라고 생각했으며 내 노드를 호스팅하지 않고이 앱을 빌드하고 싶었습니다.하지만 지금까지 이렇게 작성 했으므로 작업 내에서 어쨌든pk와 sk를 여전히 보내고 있다는 것을 깨달았습니다 ... 그래서 좋지 않습니다!그러나 귀하의 질문에 답하기 위해 시도해 보았고 중단되었습니다.I tried that method first, and it just hung with no response or error. Then I thought I would do it this way, thinking it would be more secure, as I didn't like that the sendOperation takes the keys object as a parameter, and I was hoping to build this app without hosting my own node. But now that I've gone through and written it this way, I realized that I am still sending the pk and sk anyhow within the operation... so that's not good! But to answer your question, I did try that, and it just hung.
- 0
- 2019-03-04
- Michael Rodriguez
-
나는 응답을 중단시키는 것이 무엇인지 봐야 할 것입니다. 비트 나는 이전의 예제 중 하나를 시도했으며 금액 키가 sotez에서 올바르게 처리되지 않는다는 것을 알았습니다 (문자열로 강제 변환되어야 함).sendOperation을 시도하고 금액을 문자열로 만들고 수수료,gas_limit 및 storage_limit를 추가하면 작동 할 수 있습니다.I'll have to see what is making the responses hang, bit I think I tried one of your examples from earlier and noticed that the amount key wasn't being handled correctly in sotez (was supposed to be coerced into a string). If you try your sendOperation and make the amount a string, as well as adding a fee, gas_limit, and storage_limit that may work.
- 1
- 2019-03-04
- AKISH
-
도와 주셔서 감사합니다. 정말 감사합니다!sendOperation을 사용하도록 질문을 업데이트했습니다.이번에는 중단되지 않고 "TypeError : Cannot readproperty 'kind'of undefined"를 반환합니다.Thanks for your help, I really appreciate it! I've updated my question to use sendOperation. This time it's not hanging, it's returning "TypeError: Cannot read property 'kind' of undefined"
- 0
- 2019-03-04
- Michael Rodriguez
-
방금 sendOperation이from,작업 및 키를 포함하는params 객체를 취한다는 것을 기억했습니다.내 질문을 업데이트했고 효과가있었습니다!I just remembered that sendOperation takes a params object containing the from, the operation, and the keys. I've updated my question, and it worked!
- 1
- 2019-03-04
- Michael Rodriguez
오늘 많은 것을 배웠고이 StackExchange 없이는 이렇게 빨리 할 수 없었습니다. 거의 문제를 해결했지만 "unrevealed_key"오류와 함께 주입 시점에서 이것이 실패하는 이유를 평생 알 수 없습니다.
위조 된 트랜잭션을 디코딩하고 값을 재 검증하여 원격 노드가 트랜잭션을 변경하지 않았는지 확인해야한다는 것을 알고 있지만,단순성을 위해이 게시물에서 해당 비트를 제거했습니다.
반환 :
[{"kind":"branch","id":"proto.003-PsddFKi3.contract.unrevealed_key","contract":"tz1htPf3VPXrHBTX1E7y3tBteib6hA9Teosj"}]
편집 : 그래서 먼저이 계정을 공개해야합니다. 전송 방법을 수정하여 계정이 이전에 공개되었는지 확인하고 그렇지 않은 경우 공개를 작업 목록에 추가했습니다. 이제
{"kind":"permanent","id":"proto.003-PsddFKi3.operation.invalid_signature"}
가 표시됩니다.편집 2 : 이것은 sendOperation을 사용하여 작동했습니다.