私が @Dusk Dusk の取引ライフサイクルのドキュメントを読んでいたとき、ある誤判をようやく正せました。インターフェースの戻り値が 202 Accepted なのは、ノードがリクエストを受け取っただけを示すにすぎません。Dusk L1 で署名付きトランザクションを提出した後、ノードはまず admission を行い、通過してから real mempool に入り、peers にブロードキャストします。ブロック生成者は gasPrice によって並べ替えて実行します。
私はこれを清算の流れ(パイプライン)として捉えます。202 はフロントの受領、included は待機エリアに入ったこと、executed はさらに err が null かどうかを確認することです。ブロックが accepted になっても、reverted になる可能性があります。finalized が出るまで(blocks/statechange が finalized を報告するまで)台帳は封印されません。Moonlight はアカウントと nonce の衝突で判断し、Phoenix は nullifier を見ます。置換取引は gasPrice を引き上げる必要があります。
このイベントチェーンは Dusk L1 のみに適用され、DuskEVM では別途 sequencer と finality モデルがあります。私はリスナーを書くので、tx hash とブロック座標を保存し、onlyFinalized:true で検証します。included だけを追うと、ノードの置換、期限切れ、容量の淘汰などに遭遇した場合に、ローカル状態を「入金した」と誤って見なしてしまいやすいです。レシートはあくまで受領記録であり、資金の確認は最終状態を待つ必要があります。
#dusk $DUSK
私はこれを清算の流れ(パイプライン)として捉えます。202 はフロントの受領、included は待機エリアに入ったこと、executed はさらに err が null かどうかを確認することです。ブロックが accepted になっても、reverted になる可能性があります。finalized が出るまで(blocks/statechange が finalized を報告するまで)台帳は封印されません。Moonlight はアカウントと nonce の衝突で判断し、Phoenix は nullifier を見ます。置換取引は gasPrice を引き上げる必要があります。
このイベントチェーンは Dusk L1 のみに適用され、DuskEVM では別途 sequencer と finality モデルがあります。私はリスナーを書くので、tx hash とブロック座標を保存し、onlyFinalized:true で検証します。included だけを追うと、ノードの置換、期限切れ、容量の淘汰などに遭遇した場合に、ローカル状態を「入金した」と誤って見なしてしまいやすいです。レシートはあくまで受領記録であり、資金の確認は最終状態を待つ必要があります。
#dusk $DUSK