Dusk のアップデート後、オンチェーン・ブラウザで回数(確認数)を確かめようとして覗いたら、見落とされやすい細かい点を見つけました。Dusk では「ブロック確認済み」は単なるスイッチではなく、段階的に上がっていく“状態の階段”になっているのです。

多くの人がイメージする最終性は二択です。未確認か、確認済みで取り消し不能か。でも Rolling Finality の設計はまったく違います。あるブロックが生成されてから完全に固定されるまで、4つの段階を経ます。まず accepted(受理済み)で、この時点では、前のイテレーションで出てきた候補ブロックに置き換わる可能性があります。次に attested(認証済み)。ここでは、前のイテレーションがすべて失敗した場合に限り到達でき、以後は置き換えられません。そして confirmed(確認済み)。ここは後続ブロックの数が必要になります。最後に final(最終)。これは、その親ブロックがすでに final であることが前提で、自身も final になります。

この仕組みの中で一番直感に反するのは、「同じブロックをアップグレードするのに必要な後続ブロック数」が固定ではないことです。ルールには変数 n があり、このブロックの前に「成功しなかった」イテレーション回数を表します。n が大きいほど必要な後続の確認ブロック数も増え、しかも 2n で計算されます。つまり、ブロックが生まれるまでの紆余曲折が多いほど、後で本当に固定されるまでにより長い時間がかかるのです。そのため、財布(ウォレット)の表示が「確認済み」となっていても、実際に固定されている度合いにはかなり差が出うるのです。

この設計の良い点は、ノードが「そのブロックを信頼してよいか」をより細かく判断できること。白か黒かではないのです。でも代償もはっきりしています。一般ユーザーは、自分の取引が今どの段階にあるかをまったく分からない。ウォレットは「確認」の一言しか提示せず、こうした分層は完全に隠されてしまいます。極端なフォークに遭遇したとき、この情報格差が悪用される可能性があるかどうかは、正直なところ不透明です。

みなさんは普段、取引が最終的にどの確認レベルまで進んだかを自分で調べていますか?それとも、ウォレットが確認と言ったらそのまま信じますか?コメント欄で教えてください。#dusk $DUSK @Dusk