#dusk $DUSK @Dusk

ブロックチェーンがブロックを受理したら、それで終わり、永久に固定されて動かない——そう思っていました。ところがduskは、受理と確定(finality)をまったく別のものとして扱っていて、ブロックがその間にしばらく“挟まった状態”で停滞し得ます。

最初にこれを見たとき、「受理される=その時点でブロックがロックされる」と考えていました。その2つの言葉のあいだにある“実際のギャップ”のほうが、よほど興味深かったです。

ブロックが即時の確定を得るのは、特定の2つのケースだけです。ひとつは、反復(iteration)0の時点で、すでに確定済みのブロックの真上に着地する場合。もうひとつは、それ以外の後続の反復で着地する場合で、そのブロックの前の各反復がすべてタイムアウトし、何も生成されなかったときです。この2つ以外では、受理されたブロックはまだ確定していません。そこに“置かれているだけ”です。

そこでduskは、条件に当てはまらないもののための第二の経路を作りました。それがローリング確定(rolling finality)です。ネットワークは、最新の受理済みブロックからさかのぼって、実際に最後まで確定していた直前のブロックへ向かって歩みます。その過程で、通ってきた各タイムアウトと、それぞれの途中で勝った証明(winning certificate)に裏付けられるステーク(賭け金)の重みを積み上げていきます。そして、そのステーク重みが総量の2/3を超えたところで、着地したブロックが確定としてマークされます。“後から”です。

私がこの仕組みの理解で難しく感じたのは、ここでの確定は「作られた瞬間に、そのブロックが得る性質」ではないことです。ネットワーク全体の重みがそれに十分に揃った“後になって”、さかのぼって割り当てられます。

同じフォールバック機構が、あるラウンドが停滞したときにduskがリカバリできるようにしている一方で、つい受理されたばかりのブロックを、まだ恒久的なものとして扱うには安全でない“リムボ(宙ぶらりん)”状態に留めるのにも役立っています。

結局のところ、このリムボのウィンドウが実際には通常どれくらい続くのか、またローリング確定が落ち着く前に、ブロックの競合する2つの版が、ネットワークの異なる部分から“正しいように見える”ことがどれくらいの頻度で起きるのか、私はまだ分かりません。

#Dusk/usdt✅ #BullRunAhead $BTC $PROM