Come effettuare una transazione offline?
1 risposta
- voti
-
- 2019-01-30
Tutte letransazioniinclusein Tezos devonofare riferimento a un hash diblocconegli ultimi 60 hash diblocco. Questofunge da ulteriore livello di autenticazionenotarile della catena,oltre al consenso,ma significa che sononecessari alcunipassaggi aggiuntiviperfirmare letransazioni offline.
Unmodoperfarlo è usare l'RPC:
/chains/main/blocks/head/helpers/forge/operations
Documentato qui .
Haibisogno di unnodoin esecuzioneper questo,manon ènecessario che sia connesso a Internetper questo. Dovrai ancheforniremanualmente l'hash di unblocco recente.
Dovraifirmarei dati che ottieniper ottenere una "operazionefirmata"ma,sfortunatamente,questanon è ancora supportatanella CLI.Devi quindifirmare l'operazione,cosa chepuoifare usandotezos cli con
./tezos-client signbytes & lt;bytes >per & lt; src > Dovrai aggiungereilbyte "03"prima dell'operazione. Questofunge dafiligranaperilfirmatario.
Infine ènecessario combinare lafirmae l'operazionenonfirmata,chepurtropponon è ancora supportatanella CLI.
Un altromodo è utilizzare uno smart-contract che accettii datifirmati di Michelsone intraprenda un'azionebasata su diessi (adesempio,inviafondi a unindirizzo specificatonei parametri). Il vantaggio di questo approccio è chenon ènecessario conoscere un hash recente quando sifirmailmessaggio stesso. Puoi semplicemente usaretezos cli conil comando
./tezos-clienttypecheck data & lt; data > controiltipo & lt;type >
seguito da
./tezos-client signbytes & lt; data >per & lt; src > Dovrai quindiinviare questomessaggio al contrattointelligente con unatransazione regolare,ma quellatransazionepuòessereeseguita con una chiave che controlla solo unapiccola quantità difondi,proprio quello che ènecessarioperpagare la commissione ditransazione.
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.
-
"sfortunatamente,questonon è ancora supportatonella CLI" - Sipuòeffettivamente `firmarebyte 0x03 ...per
`,piuttosto che (nella seconda situazione) `firmarebyte 0x05 ...per `. "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,nonero sicuro che "signfor"funzionasseper 0x03,produce unatransazionefirmata valida?ah, I wasn't sure if "sign for" worked for 0x03, does it produce a valid signed transaction?
- 0
- 2019-01-30
- Arthur B
-
comunquenonti dà un'operazionefirmatastill doesn't give you a signed operation though
- 1
- 2019-01-30
- Arthur B
-
Grazie @ArthurB:thumbsup: Immagino che usare la CLI sarebbe unmodo sicuroe "ufficiale".Ma IMHOnon èilmodopiù user-friendlyper lamaggiorparte dellepersone.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
Comefaccio a creare unatransazione offline su un dispositivo con airgape atrasmetterla alla rete?