トランザクションの作成方法
3 回答
- 投票
-
- 2019-02-07
これに関連する手順を理解するための資料を提供する複数の参考資料がオンラインにあります.
これを確認できます.または それ.一部の要素は、この他の 質問 <でも提供されています./p> 基本的な手順は次のとおりです
- 依存関係を取得する
- ブランチハッシュ:
/chains/main/blocks/head/hash
- カウンター:
/chains/main/blocks/head/context/contracts/<source_pkh>/counter
- プロトコルハッシュ:
/protocols
- ブランチハッシュ:
- 偽造操作(
/chains/main/blocks/head/helpers/forge/operations
)ただし、このロジックをネイティブクライアントの外部に簡単に複製できるかどうかを確認してください - 署名バイト(
tezos-client sign bytes
) - 事前適用操作(
/chains/main/blocks/head/helpers/preapply/operations/)
- 署名を16進形式にデコード
- 注入操作(
/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
は、ガスとストレージの要件を見積もるために、署名せずに操作をシミュレートするのに役立ちます(署名にゼロバイトを使用できます).tezos-client -l
がここでgas_limitとstorage_limitを最大値に設定し、その結果を使用して実際のgas_limitとstorage_limitを設定します(「-」と呼ばれるユーザーの最大許容storage_limitに従います.バーンキャップ」).操作がバイナリでどのようにエンコードされるかについては、
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
.-
私の答えは、事前申請が必要な理由を説明していないことに気づきました.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
最も簡単なのは、例を確認することです.
eztz
は転送を実装します.次に、転送操作がどのように行われるかを
ここで確認してください. 最後に、偽造された操作がどのように注入されるか
ここ. 見た目では、eztzの
forge
は/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
.-
実際にはeztzはローカルで鍛造しますが、当面は、ローカルで鍛造したものが一致することを再確認する方法としてリモート鍛造を使用します.将来的には、リモートフォージチェックを削除します:-)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
トランザクション操作の作成に関連するさまざまな手順を理解しようとしています.
Tezos-client -l
は、RPC呼び出しの数を示しています.その中には次のものがあります.run_operation
とpreapply
は何をするのですか、そしてなぜ両方が必要なのですか?さらに、注入される操作はバイナリエンコードされていますが、どのエンコードが使用されていますか?(
/chains/main/blocks/head/helpers/forge/operations
を使用してエンコードを取得できますが、自分で操作をエンコードしたいと思います)