契約のアドレス形式の仕様
1 回答
- 投票
-
- 2019-02-11
契約を結ぶときは、ネットワークに「操作」を送信します.次に、この操作はバイト形式にシリアル化され、ハッシュが導出されます.これは、指定された操作の操作ハッシュです.
操作によって新しいコントラクトが生成される場合、操作ハッシュ+インデックスバイト(0から開始)をハッシュすることにより、新しいKT1アドレスを手動で計算できます.一部の操作は複数の新しいKT1アドレスを生成するため、インデックスを使用します.これがeztzのやり方です: https://github.com/TezTech/eztz/blob/master/src/main.js#L751
なぜこれが必要なのかわかりません.発信する前に新しいアドレスを知る必要はありませんか?
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?
-
ありがとう.それで、発生した契約のアドレスを計算することだけが可能ですよね?私はマイケルソンの通訳を書いていて、 `ADDRESS`命令があるので、私は尋ねています.常にコントラクトのアドレスを返します( `option`値ではありません).この契約が開始されていない場合、契約をスタックに置くことが不可能であることを意味しますか? `./alphanet.shクライアント実行スクリプト`を使用して実験を行いました.`SELF`と` PACK`edのアドレスを計算しました.次に、それらのバイトを別のスクリプトに渡し、正常に「アンパック」しました.しかし、この契約は開始されていません.それはどのように機能しますか?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
-
また、どの操作が複数のKT1アドレスを発信できますか?仕様に次の操作が見つかりました: `CREATE_CONTRACT`、` CREATE_ACCOUNT`、 `TRANSFER_TOKENS`、および` SET_DELEGATE`.私の知る限り、最初のアドレスは1つのKT1アドレスを発信し、他の操作は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
-
また、どのハッシュアルゴリズムが使用されていますか?両方ともblake2bですか?Also which hashing algorithm is used? Is it blake2b both times?
- 0
- 2019-02-15
- Ivan Gromakovskii
人間が読める形式の契約の住所を計算する方法を説明する仕様はどこかにありますか?
契約を結ぶには、コード、初期ストレージ値、その他のデータを提供する必要があります.その後、アドレスを取得します.どのように計算されますか?