Cómo crear una transacción
3 respuestas
- votos
-
- 2019-02-07
Hay varias referenciasen línea quebrindanmaterialpara comprender lospasosinvolucradosen esto. Puede consultar esto o eso . Algunoselementostambién seproporcionanen esta otra pregunta
Básicamente,lospasos son
- obtener dependencias
- hash de rama:
/chains/main/blocks/head/hash
- contador:
/chains/main/blocks/head/context/contracts/<source_pkh>/counter
- hash deprotocolo:
/protocols
- hash de rama:
- operación deforja (
/chains/main/blocks/head/helpers/forge/operations
) Tengaen cuenta siesfácil replicaresta lógicafuera del clientenativo - firmarbytes (
tezos-client sign bytes
) - operación de aplicaciónprevia (
/chains/main/blocks/head/helpers/preapply/operations/)
- decodificar lafirma aformato hexadecimal
- operación deinyección (
/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
es útilpara simular una operación sinfirmarla (puede usar cerobytespara lafirma),conelfin deestimar los requisitos degas y almacenamiento.Verátezos-client -l
configurandogas_limit y storage_limit a los valoresmáximos aquí,y luego usandoel resultadoparaestablecerelgas_limit y storage_limit reales (sujeto al límite de almacenamientomáximo aceptable del usuario,llamado "-casquillo-quemado ").Para saber cómo se codifica la operaciónen binario,puede ver
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
.-
Noté quemi respuestanoexplicapor qué senecesita una solicitudprevia.¿Por quéno simplemente 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
Lomásfácil sería comprobar cómop.ej.
eztz
implementatransferencias .Luego,vea cómo seforjan las operaciones detransferencia aquí .
Yfinalmente cómo seinyecta la operaciónforjada aquí .
Por lo queparece,parece que
forge
deeztz se realiza deforma remotamediante/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
.-
En realidad,eztzfalsifica localmente,peroporelmomento usamos lafalsificación remota como unaforma de verificar que lo quefalsificamos localmente coincide.Enelfuturo,eliminaremosel control remoto defalsificación :-)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
Estoytratando de comprender los diferentespasosinvolucradosen la creación de una operación detransacción.
Tezos-client -l
muestra una serie de llamadas RPC,entreellas:¿Qué hacen
run_operation
ypreapply
,ypor qué senecesitan ambos?Además,la operación ainyectarestá codificadaen binario,¿qué codificación se utiliza?(unopuede obtener la codificación usando
/chains/main/blocks/head/helpers/forge/operations
,perome gustaría codificar la operación yomismo).