Spécification du format d'adresse du contrat
1 réponses
- votes
-
- 2019-02-11
Lorsque vous êtes originaire d'un contrat,vousenvoyez une "opération" au réseau.Cette opérationestensuite sérialiséeen format octetet un hachageest dérivé -il s'agit du hachage d'opérationpour l'opération donnée.
Si une opérationgénère unnouveau contrat,vouspouvez calculermanuellement lanouvelle adresse KT1en hachage de l'opération HASH + un octet d'index (àpartir de 0).Nous utilisons unindex car certaines opérationsproviennent denombreusesnouvelles adresses KT1.Voici comment Eztzfait-il: https://github.com/Teztech/eztz/blob/master/src/main.js#L751
Jene suispas sûrpourquoi vous avezbesoin de cela - vousn'avezpasbesoin de connaître lanouvelle adresse avant d'origine?
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?
-
Merci.Ilest doncpossible de calculer l'adresse du contrat àpartir duquel?Je demandeparce quej'écris uninterprète de Michelsonet il y a `adresse`instruction.Il renvoietoujours l'adresse d'un contrat (non `option` valeur).Celaimplique-t-il qu'ilestimpossible demettre un contrat sur lapile si ce contratn'apas été créé? J'aifait uneexpérienceen utilisant `./alphanet.sh Client Exécuter le script`.J'ai calculé l'adresse de «SOFT»et «Pack».Ensuite,passa ces octets à un autre scriptet `décompressez-les.Mais ce contratn'estpas originaire.Comment çamarche?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
-
Aussi quelles opérationspeuventprovenir demultiples adresses KT1?J'aitrouvé les opérations suivantes dans la spécification: `create_contract`,` create_account`,`transfert_tokens`et` set_delegate`.Pour autant queje sache,lepremier à l'origine d'une adresse KT1et d'autres opérationsne génèrepas dutout des adresses KT1.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
-
Aussi quel algorithme hachageest utilisé?Est-ce que c'est Blake2Bfois?Also which hashing algorithm is used? Is it blake2b both times?
- 0
- 2019-02-15
- Ivan Gromakovskii
existe une spécification quelquepart quiexplique comment calculer une adresse lisiblepar l'homme d'un contrat?
Afin de créer un contrat,je doisfournir son code,sa valeur de stockageinitialeet d'autres données,puisje vais obtenir son adresse.Commentest-il calculé?