$DUSK #dusk @Dusk

「accepted(受理済み)」「executed(実行済み)」「finalized(最終化済み)」が同じ意味だと思われているように見えて、Duskの取引ドキュメントを掘り下げて調べました。

しかし、それらは同じではありません。

Duskの /on/transactions/propagate エンドポイントでは、202 Accepted の応答は、ノードがルーティングのためにその取引を受け付けたことを意味するだけです。取引がメンプールに入ったこと、ピアへ伝播したこと、正常に実行されたこと、あるいは最終性(finality)に到達したことを証明しているわけではありません。

そして、ここからがもっと面白い。

ライフサイクルはずっと長いです: broadcast → validation → mempool → candidate block → block acceptance/execution → confirmation → finality.

さらに、実行(execution)自体も必ずしも成功を意味しません。Duskは、コントラクトのアクションが失敗したりリバートしたりした場合に、エラー付きの「transaction-executed」イベントを発行し得ます。つまり「executed(実行済み)」と「successful(成功)」も同義ではありません。

この違いは、特に金融アプリケーションでは重要に感じます。早い段階のステータスを成功として扱ってしまうと、実際には最終化していないものに基づいて行動してしまう可能性があるからです。

私が何度も立ち返ってしまうのは、202 Accepted という部分です。

取引がアプリケーションから見ると「受理済み」に見えても、Dusk自身の統合ドキュメントでは、ルーティングと実行、そして最終性が明確に分けられていると明記されています。

それなのに、Duskがルーティング、実行、最終性を明確に分けているにもかかわらず、どれくらいの統合が 202 Accepted を成功として扱っているのでしょうか?

あなたにとって「Accepted(受理済み)」とはどういう意味ですか? 👀
$ALPINE $ACE
🧐 Finality
43%
💫 Execution
29%
👀 Mempool
14%
🧠 All three
14%
7 投票 • 投票は終了しました