Comment faire une transaction hors ligne?
1 réponses
- votes
-
- 2019-01-30
Toutes lestransactionsincluses dans les Tezos doiventfaire référence à un hachage debloc dans les 60 derniers cashes. Cela agit comme une couche supplémentaire denotarisation de la chaîne,outre le consensus,mais cela signifie que vous avezbesoin de quelques étapes supplémentairespour signer destransactions hors ligne.
Unmoyen defaire cela consiste à utiliser le RPC:
/chaînes/principaux/blocs/tête/aides/forge/opérations
documenté ici .
Vous avezbesoin d'unnœuden cours d'exécutionpour cela,maisiln'estpasnécessaire d'être connecté à Internetpour cela. Vous devrez égalementfournirmanuellement le hachage d'unbloc récent.
Vous devez signer les données que vousen sortezpour obtenir une "opération signée",maismalheureusement,celan'estpasencoreprisen charge dans le CLI.Vous devezensuite signer l'opération,que vouspouvezfaire à l'aide de Tezos CLI avec
./Tezos-Client Sign Bytes & LT; Bytes & GT;pour & lt; src >
Vous devrez ajouter l'octet "03" devant l'opération. Cela agit comme unfiligranepour le signataire.
Enfin,vous devez combiner la signatureet l'opérationnon signée,malheureusement quin'estpasencorepriseen charge dans le CLI.
Une autre solution consiste à utiliser un contratintelligent qui accepte les données Michelson signéeset prend desmesuresen fonction de celui-ci (parexemple,envoyer desfonds à une adresse spécifiée dans lesparamètres). L'avantage de cette approcheest que vousn'avezpasbesoin de connaître un hachage récent lors de la signature dumessage lui-même. Vouspouvez simplement utiliser le Tezos CLI avec la commande
./Tezos-Client Typecheck Data & Lt; Data & GT; contretype & lt;type >
suivi de
./Tezos-Client Sign Bytes & LT; Data & GT;pour & lt; src >
Vous devrezensuiteenvoyer cemessage au contratintelligent avec unetransaction régulière,mais cettetransactionpeut êtreeffectuée avec une clé qui contrôle unetrèspetite quantité defonds,ce quiestnécessairepourpayer lesfrais detransaction.
All transactions included in the Tezos must reference a block hash within the past 60 block hashes. This acts as an additional layer of notarization of the chain, besides the consensus but it means you need a few extra steps to sign transactions offline.
One way to do this is to use the RPC:
/chains/main/blocks/head/helpers/forge/operations
Documented here.
You need a running node for this, but it doesn't have to be connected to the Internet for this. You will also need to manually provide the hash of a recent block.
You'll have to sign the data you get out of it to get a "signed operation" but, unfortunately, that is not supported in the CLI yet.You then need to sign the operation, which you can do using the tezos cli with
./tezos-client sign bytes <bytes> for <src>
You will need to add the "03" byte in front of the operation. This acts as a watermark for the signer.
Finally you need to combine the signature and the unsigned operation, unfortunately that is not supported in the CLI yet.
Another way is to use a smart-contract that accepts signed Michelson data and takes action based on it (for instance, send funds to an address specified in the parameters). The benefit of this approach is that you do not need to know a recent hash when signing the message itself. You can just use the tezos cli with the command
./tezos-client typecheck data <data> against type <type>
followed by
./tezos-client sign bytes <data> for <src>
You will then have to send this message to the smart contract with a regular transaction, but that transaction can be performed with a key that only controls a very small amount of funds, just what is needed to pay for the transaction fee.
-
"Malheureusement,cen'estpasencoreprisen charge dans le CLI" - onpeuten effet "signaler des octets 0x03 ...pour
",plutôt que (dans la deuxième situation) `signe des octets 0x05 ...pour `. "unfortunately, that is not supported in the CLI yet" -- One can indeed `sign bytes 0x03... for`, rather than (in the second situation) `sign bytes 0x05... for `. - 0
- 2019-01-30
- Tom
-
Ah,je n'étaispas sûr si "Signpour"travaillépour 0x03,produit-il unetransaction signée valide?ah, I wasn't sure if "sign for" worked for 0x03, does it produce a valid signed transaction?
- 0
- 2019-01-30
- Arthur B
-
ne vous donnetoujourspas une opération signée cependantstill doesn't give you a signed operation though
- 1
- 2019-01-30
- Arthur B
-
Merci @Arthurb: Thumbsup: Je suppose que l'utilisation de la CLI serait une voie sûreet "officielle".Mais IMHO,cen'estpas lamanière laplus convivialepour lamajorité desgens.Thank you @ArthurB :thumbsup: I guess using the CLI would be a safe and "official" way. But IMHO it is not the most user-friendly way for the majority of people.
- 1
- 2019-01-31
- XTZST2O
Comment créer unetransaction hors ligne sur unpériphériquepivotant à airet la diffuser sur le réseau?