Especificación del formato de dirección del contrato
1 respuesta
- votos
-
- 2019-02-11
Cuando usted origina un contrato,envía una "operación" a la red.Luego,esta operación se serializaen formato debytes y se deriva un hash:esteesel hash de la operaciónpara la operación dada.
Si una operacióngenera unnuevo contrato,puede calcularmanualmente lanueva dirección KT1medianteel hash de la operación hash + unbyte de índice (comenzando desde 0).Usamos un índice ya que algunas operaciones originanmúltiples direcciones KT1nuevas.Asíes como lo haceeztz: https://github.com/TezTech/eztz/blob/master/src/main.js#L751
Sinembargo,noestoy seguro depor quénecesitaesto: ¿nonecesita saber lanueva dirección antes de originar?
When your originate a contract, you send an "operation" to the network. This operation is then serialized into byte format and a hash is derived - this is the operation hash for the given operation.
If an operation generates a new contract, you can manually calculate the new KT1 address by hashing the operation hash + an index byte (starting from 0). We use an index as some operations originate multiple new KT1 addresses. This is how eztz does it: https://github.com/TezTech/eztz/blob/master/src/main.js#L751
I'm unsure why you need this though - you don't need to know the new address before originating?
-
Gracias.Entonces,soloesposible calcular la dirección del contrato originado,¿verdad?Lopreguntoporqueestoyescribiendo unintérprete de Michelson y hayinstrucción "DIRECCIÓN".Siempre devuelve la dirección de un contrato (noel valor de la "opción").¿Implica queesimposibleponer un contratoen lapila sieste contratono se ha originado? Hice unexperimento usando `./alphanet.sh client run script`.Calculé la dirección de `SELF` y` PACK`ed.Luegopasóesosbytes a otro script y "DESEMPAQUETE" con éxito.Peroeste contratono se origina.¿Comofunciona?Thanks. So it's only possible to compute address of originated contract, right? I am asking because I am writing an interpreter of Michelson and there is `ADDRESS` instruction. It always returns address of a contract (not `option` value). Does it imply that it's impossible to put a contract on stack if this contract hasn't been originated? I made an experiment using `./alphanet.sh client run script`. I computed address of `SELF` and `PACK`ed. Then passed those bytes to another script and succesfully `UNPACK`ed them. But this contract is not originated. How does it work?
- 1
- 2019-02-12
- Ivan Gromakovskii
-
Además,¿qué operacionespueden originarmúltiples direcciones KT1?Encontré las siguientes operacionesen laespecificación: `CREATE_CONTRACT`,` CREATE_ACCOUNT`,`TRANSFER_TOKENS` y` SET_DELEGATE`.Segúntengoentendido,elprimero origina 1 dirección KT1 y otras operacionesnogeneran direcciones KT1en absoluto.Also which operations can originate multiple KT1 addresses? I found the following operations in the spec: `CREATE_CONTRACT`, `CREATE_ACCOUNT`, `TRANSFER_TOKENS` and `SET_DELEGATE`. As far as I understand, the first one originates 1 KT1 address and other operations don't generate KT1 addresses at all.
- 1
- 2019-02-14
- Ivan Gromakovskii
-
Además,¿qué algoritmo de hash se utiliza?¿Esblake2ben ambas ocasiones?Also which hashing algorithm is used? Is it blake2b both times?
- 0
- 2019-02-15
- Ivan Gromakovskii
¿Hay algunaespecificaciónen algunaparte queexplique cómo calcular una dirección legiblepor humanos de un contrato?
Para originar un contrato,necesitoproporcionar su código,el valor de almacenamientoinicial y algunos otros datos y luego obtendré su dirección.¿Cómo se calcula?