Specifica del formato dell'indirizzo del contratto
1 risposta
- voti
-
- 2019-02-11
Quando si crea un contratto,siinvia una "operazione" alla rete.Questa operazione viene quindi serializzatain formatobytee viene derivato un hash: questo è l'hash dell'operazioneper l'operazione specificata.
Se un'operazionegenera unnuovo contratto,puoi calcolaremanualmenteilnuovoindirizzo KT1eseguendo l'hashing dell'operazione + unbyte diindice (apartire da 0).Usiamo unindicepoiché alcune operazioni originanopiùnuoviindirizzi KT1.Ecco come lofaeztz: https://github.com/TezTech/eztz/blob/master/src/main.js#L751
Tuttavia,non sono sicuro delmotivoper cuine haibisogno:non ènecessario conoscereilnuovoindirizzoprima diiniziare?
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?
-
Grazie.Quindi èpossibile calcolare solo l'indirizzo del contratto originato,giusto?Lo chiedoperché sto scrivendo uninterprete di Michelsone ci sonoistruzioni "ADDRESS".Restituisce sempre l'indirizzo di un contratto (nonil valore di "opzione").Significa che èimpossibilemettere un contrattoin pila se questo contrattonon è stato originato? Hofatto unesperimento usando `./alphanet.sh client run script`.Ho calcolato l'indirizzo di "SELF"e "PACK".Quindi hapassato queibyte a un altro scripte li ha "UNPACK" con successo.Ma questo contrattonon è originato.Comefunziona?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
-
Inoltre quali operazionipossono originarepiùindirizzi KT1?Hotrovato le seguenti operazioninelle specifiche: `CREATE_CONTRACT`,` CREATE_ACCOUNT`,`TRANSFER_TOKENS`e` SET_DELEGATE`.Per quanto ho capito,ilprimo origina 1indirizzo KT1e altre operazioninongenerano affattoindirizzi 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
-
Inoltre quale algoritmo di hashing viene utilizzato?Èblake2bentrambe le volte?Also which hashing algorithm is used? Is it blake2b both times?
- 0
- 2019-02-15
- Ivan Gromakovskii
Esiste una specifica da qualcheparte che spiega come calcolare unindirizzo leggibile dall'uomo di un contratto?
Per creare un contratto,devofornireil suo codice,il valore di archiviazioneinizialee alcuni altri dati,quindi ottengoil suoindirizzo.Come viene calcolato?