Injetar operação assinada falha com erro irrexaled_key
1 responda
- votos
-
- 2019-03-03
Antes deenviartransações de uma conta,uma operação 'revelar' deve serfeitapara a conta. Parece queesta contapodeter sido ativada,mas aindanão revelada. Paratornarestetrabalho,precisaríamosincluir a operação de revelaçãona lista de operações:
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, } ], } ... })
Após a revelação da conta,a revelaçãonão énecessáriapara serincluídanas operações apartir deentão.
Resposta deenvios:
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)); };
-
Obrigado!Euediteiminhapergunta com a operação de revelação adicionada.Quandoeu corro agora,ele apenaspendura sem resultado ouerro.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
-
Ah Nevermind,foipor causa do contadorincremento.Eunotei suaediçãoe consertounomeumétodo.Estranhamente,noentanto,agoraestou recebendoesteerro: {"tipo": "permanente","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
-
Vocêjátentou amesmatransferência usando RPC.Sendoperation?Oenviooperação deve lidar se atransaçãoprecisa de uma revelaçãoe todos os contadorespara as operações.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
-
Eutentei essemétodoprimeiro,e apenaspendurado sem resposta ouerro.Entãoeupensei quefaria assim dessamaneira,pensando que seriamais segura,poisnãogostava que a sobrecarga leva o objeto de chaves como umparâmetro,e esperava construireste aplicativo sem hospedarmeupróprionó.Mas agora queeupasseie escrevi dessamaneira,percebi que aindaestouenviando o PKe SK de qualquermaneira dentro da operação ...entãoissonão ébom!Maspara responder suapergunta,eutentei isso,e apenaspendia.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
-
Euterei que ver o queestáfazendo as respostaspendurar,eu acho queeutentei um dos seusexemplos anteriormentee notei que a chave domontantenãoestava sendomanipulada corretamenteem Sotez (deveria ser coagidoem uma string).Se vocêtentar o seu singoperatione tornar o valor uma string,além de adicionar umataxa,gas_limite storage_limit quepodefuncionar.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
-
Obrigadopela sua ajuda,eu realmente aprecioisso!Atualizeiminhaperguntapara usar o Sendoperation.Desta vez,nãoestápendurado,está retornando "TypeError: Não épossível ler apropriedade 'tipo' deindefinido"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
-
Acabei de lembrar que oenviooperação leva um objeto deparâmetros contendo apartir da operaçãoe as chaves.Eu atualizeiminhaperguntae funcionou!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
Eu aprendimuito hoje,e nãopoderiater conseguidoissotão rapidamente semeste stategexchange. Eu quasetenhoenviadotrabalhado,maseunãopossopara a vida demim descobrirpor queissoestáfalhandonoponto deinjeção com umerro "irremaled_key".
Estou ciente de que devo decodificar atransaçãoforjadae reverificar os valoresparagarantir que onó remotonãotenhatentado alterarminhatransação,mas removiessebit dessepostpara simplicidade.
Retorna:
[{"kind":"branch","id":"proto.003-PsddFKi3.contract.unrevealed_key","contract":"tz1htPf3VPXrHBTX1E7y3tBteib6hA9Teosj"}]
editar: Entãoeupreciso revelaresta contaprimeiro. Eumodifiqueimeumétodo deenviopara verificar se a contafoi revelada antese,senão,adicione a revelação à lista de operações. Agora recebo
{"kind":"permanent","id":"proto.003-PsddFKi3.operation.invalid_signature"}
.edit2: Issofuncionou,usando o Sendoperation