Come creare una transazione
3 risposta
- voti
-
- 2019-02-07
Ci sonopiù riferimenti online chefornisconomaterialeper comprenderei passaggi coinvoltiin questo. Puoi controllare questo o quello . Alcunielementi sonoforniti anchein quest'altra domanda
Fondamentalmentei passaggi sono
- ottieni dipendenze
- hash ramo:
/chains/main/blocks/head/hash
- counter:
/chains/main/blocks/head/context/contracts/<source_pkh>/counter
- hash delprotocollo:
/protocols
- hash ramo:
- operazione diforgiatura (
/chains/main/blocks/head/helpers/forge/operations
) Notabene se èfacile replicare questa logica al difuori del clientnativo - byte di segno (
tezos-client sign bytes
) - operazionepreapply (
/chains/main/blocks/head/helpers/preapply/operations/)
- decodifica lafirmain formatoesadecimale
- inject operazione (
/inject/operation
)
There are multiple references online which provide material to understand the steps involved in this. You can check this or that. Some elements are also provided in this other question
Basically the steps are
- get dependencies
- branch hash:
/chains/main/blocks/head/hash
- counter:
/chains/main/blocks/head/context/contracts/<source_pkh>/counter
- protocol hash:
/protocols
- branch hash:
- forge operation (
/chains/main/blocks/head/helpers/forge/operations
) Note sure if it's easy to replicate this logic outside from the native client though - sign bytes (
tezos-client sign bytes
) - preapply operation (
/chains/main/blocks/head/helpers/preapply/operations/)
- decode signature to hexadecimal format
- inject operation (
/inject/operation
)
-
- 2019-02-07
helpers/scripts/run_operation
è utileper simulare un'operazione senzafirmarla (èpossibile utilizzare zerobyteper lafirma),alfine di stimarei requisiti digase stoccaggio.Vedraitezos-client -l
cheimpostagas_limite storage_limit ai valorimassimi qui,quindi utilizzail risultatoperimpostareilgas_limite lo storage_limiteffettivi (soggetto al limitemassimo di storage accettabile dell'utente,chiamato "-burn-cap ").Per sapere come l'operazione è codificatain binario,puoi vedere
tezos-client describe unsigned operation
.helpers/scripts/run_operation
is useful to simulate an operation without signing it (you may use zero bytes for the signature), in order to estimate the gas and storage requirements. You will seetezos-client -l
setting gas_limit and storage_limit to the maximum values here, and then using the result to set the actual gas_limit and storage_limit (subject to the user's maximum acceptable storage_limit, called "--burn-cap").To learn how the operation is encoded in binary, you can see
tezos-client describe unsigned operation
.-
Honotato che lamia rispostanon spiegaperché ènecessaria lapreapplicazione.Perchénon solo run_operation?I noticed my answer does not explain why preapply is needed. Why not just run_operation?
- 0
- 2019-03-02
- Tom
-
- 2019-02-07
Ilmodopiù semplice sarebbe controllare come ades.
eztz
implementai trasferimenti .Quindiguarda come vengonoforgiate le operazioni ditrasferimento qui .
Einfine come vieneiniettata l'operazione contraffatta qui .
A quantopare,sembra che
forge
dieztz siaeseguitoin remoto da/helpers/forge/operations
.Easiest would be checking out how e.g.
eztz
implements transfers.Then see how the transfer operations is forged here.
And finally how the forged operation is injected here.
By the looks of it, seems like eztz's
forge
is done remotely by/helpers/forge/operations
.-
In realtàeztzforgia localmente,maperilmomento usiamo laforgia remota come unmodoper ricontrollare che ciò che abbiamoforgiato localmente corrisponda.Infuturo,rimuoveremoil controllo remoto dellaforgiatura :-)Actually eztz forges locally, but for the time being we use the remote forge as a way to double check that what we forged locally matches. In future, we will remove the remote forge check :-)
- 1
- 2019-02-08
- Stephen Andrews
Sto cercando di capirei diversipassaggi coinvoltinella creazione di un'operazione ditransazione.
Tezos-client -l
mostra una serie di chiamate RPC,tra cui:Cosafanno
run_operation
epreapply
e perché sononecessarientrambi?Inoltre,l'operazione dainiettare è codificatain formatobinario,quale codifica viene utilizzata?(sipuò ottenere la codifica utilizzando
/chains/main/blocks/head/helpers/forge/operations
,mami piacerebbe codificare l'operazioneio stesso).