Monadのトランザクションのライフサイクル

トランザクションの送信

トランザクションのライフサイクルは、ユーザーが署名済みトランザクションを準備し、それをRPCノードに送信することから始まります。

トランザクションは通常、アプリケーションのフロントエンドによって準備され、署名のためにユーザーのウォレットに提示されます。ほとんどのウォレットはeth_estimateGasRPC呼び出しを行ってこのトランザクションのガス制限を設定しますが、ユーザーはウォレットでこれをオーバーライドすることもできます。ユーザーは通常、トランザクションのガス価格(ガス単位あたりのNativeTokenの数)を選択するように求められます。

ユーザーがウォレットでの署名を承認した後、署名されたトランザクションはeth_sendTransactionまたはeth_sendRawTransactionAPI呼び出しを使用してRPCノードに送信されます。

Monadでは、ガス制限はキャリッジガスと実行ガスの合計であることに注意してください。キャリッジガスは一定です。

Mempoolの伝播

RPCノードは保留中のトランザクションをコンセンサスに参加している他のMonadノードに転送します。保留中のトランザクションのセットは口語的に「mempool」と呼ばれます。mempoolの動作の詳細については、Mempoolを参照してください。スパム防止の理由から、ノードはリザーブ残高に十分なガスがある場合にのみトランザクションをmempoolに追加します。

ブロックの包含

MonadBFTは、回転リーダーメカニズムを使用してブロックを生成します。各ラウンドで、リーダーは保留中のトランザクションのリストからブロックを組み立てます。ブロックに含めるトランザクションを選択した後、リーダーは輸送費を使用して準備金残高を減算します。

MonadBFTで説明したように、ブロックはネットワークを通じて伝播されます。このブロックのクォーラム証明書(QC)は、その後のコンセンサスラウンドで伝播されます(つまり、次のリーダーによって送信されます)。QCを確認した後、投票ノードは相互に投票を送信します。ノードがステークウェイトの2/3の賛成票を確認すると、そのブロックが確定します。

ブロックが完了すると、トランザクションはブロックチェーンの歴史の中で正式に「発生」したことになります。順序が決まっているので、その真理値(成功か失敗か、実行直後の結果はどうなるか)が決まります。

ローカル実行

ノードはブロックを終了するとすぐに、そのブロックからトランザクションの実行を開始します。効率上の理由から、トランザクションは楽観的に並列実行されますが、結果は常に元の順序でコミットされるため、トランザクションが直列に実行されたかのようになります。

結果のクエリ

ユーザーは、任意の RPC ノードで eth_getTransactionByHash または eth_getTransactionReceipt を呼び出すことで、トランザクションの結果をクエリできます。 RPC ノードは、ノード上でローカルに実行が完了するとすぐに戻ります。

ユーザーは、任意のRPCノードでeth_getTransactionByHashまたはeth_getTransactionReceiptを呼び出すことで、トランザクションの結果をクエリできます。

RPCノードは、ノード上でローカルに実行が完了するとすぐに戻ります。

Last updated