Injecter une opération signée échoue avec une erreur irréverded_key
1 réponses
- votes
-
- 2019-03-03
Avant d'envoyer destransactions d'un compte,une opération «révéler» doit êtrefaitepour le compte. Il semble que ce compte aitpeut-être été activé,maispasencore révélé. Pourfaire cetravail,nous aurionsbesoin d'inclure l'opération de révélation dans la liste des opérations:
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, } ], } ... })
Unefois que le compte a été révélé,le révélateurn'estpasnécessairepour êtreinclus dans les opérationspar la suite.
Sendoperation Réponse:
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)); };
-
Merci!J'ai éditéma question avec l'opération de révélation ajoutée.Quandje l'exécutemaintenant,ilestjuste de suspendre sans résultatni erreur.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,c'était à cause de l'incrément de contre-incrément.J'ai remarqué votre éditionet j'ai réparé dansmaméthode.Curieusement,cependant,je reçois cetteerreur: {"type": "Permanent","ID": "proto.003-psdddfki3.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
-
Avez-vousessayé lemêmetransferten utilisant RPC.SENDOPERATION?L'envoi devraitgérer si latransactionnécessite une révélationet tous les compteurs des opérations.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
-
J'ai d'abordessayé cetteméthodeet je suisjuste suspendu sans réponseni erreur.Ensuite,je pensais queje leferais de cettefaçon,pensant que ce seraitplus sûr,carje n'aipas aimé que la sendopérationprend l'objet des clésen tant queparamètreet j'espérais construire cette application sans accueillirmonproprenœud.Maismaintenant quej'aitraverséet écrit cela de cettefaçon,j'ai réalisé quej'envoietoujours le PKet SK detoutefaçon dans l'opération ... donc cen'estpasbon!Maispour répondre à votre question,j'aiessayé cela,et cela ajustependu.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
-
Je vais devoir voir ce qui rend les réponses suspendues,je pense quej'aiessayé l'un de vosexemples d'auparavantet remarqua que la clé demontantn'étaitpastraitée correctement à Sotez (censée être contrainte dans une chaîne).Si vousessayez votreenvoiet faites lemontant une chaîne,ainsi que d'ajouter desfrais,gas_limitet stockage_limitpouvantfonctionner.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
-
Mercipour votre aide,je l'apprécie vraiment!J'aimis àjourma question à utiliser Sendoperation.Cettefois,cen'estpas suspendu,ça retourne "TypeError:impossible de lire lapropriété"type "denon défini"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
-
Je viens de vous rappeler que la sendopérationprend un objet Params contenant de l'opération,de l'opérationet des clés.J'aimis àjourma questionet ça afonctionné!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
J'aibeaucoup appris aujourd'huiet jen'auraispaspu être aussi vite que si vite sans que ce stackexchange. J'aipresqueeu l'envoi de l'envoi,maisje nepeuxpas que la vie demoine puisse comprendrepourquoi cela échoue aupoint d'injection avec uneerreur "irrégulière".
Je suis conscient queje devrais décoder latransactionforgéeet respecter les valeurspour vous assurer que lenœud distantn'apasessayé de changer detransaction,maisj'ai supprimé cebit de cepostepour le souci de simplicité.
retourne:
[{"kind":"branch","id":"proto.003-PsddFKi3.contract.unrevealed_key","contract":"tz1htPf3VPXrHBTX1E7y3tBteib6hA9Teosj"}]
EDIT: J'ai doncbesoin de révéler ce compteen premier. J'aimodifiémaméthode d'envoipour vérifier si le compte a été révélé avant,et sinon,ajoutez la révélation à la liste des opérations. Maintenant,je reçois
{"kind":"permanent","id":"proto.003-PsddFKi3.operation.invalid_signature"}
.EDIT2: Cela afonctionné,en utilisant Sendopération