#dusk $DUSK @Dusk
今週、ホワイトペーパーの「コンセンサス」セクションを2回連続で読みました。でも、最初の1回では何も新しいことはありませんでした。
2回目で、ずっと誤解していた点がようやく腑に落ちました。
「あるブロックが投票で通った」と「あるブロックは最終確定だ(final)」。これらを、ほぼ同じ出来事だと考えていたんです。でも違います。両者の間にギャップがあり、そこに面白いセキュリティ上の考え方が詰まっています。
検証(validation)と承認(ratification)を通過したブロックが、ATTESTED(承認済み)と呼ばれるのは、そのラウンドにおけるそれ以前のあらゆる試みがすべてきちんと失敗して終わった場合だけです。そうでなければ、そのブロックは「accepted(受理)」にとどまり、より弱い状態です。
受理されたブロックは、理論上は、より前の試みから出てきた競合ブロックに差し替えられる可能性があります。一方、承認済みのブロックはそれができません。
そして最終確定(finality)は段階的に積み上がっていきます。
承認済みのブロックは、その後のブロックがそれに積み重なることで、確定(confirmed)していきます。受理されたブロックが同じ状態に到達するには、背後にある失敗した試みの回数と同程度、だいたいそれの2倍ぶんの追加確認が必要です。
ブロックが確定し、それより前のすべても同様に最終確定しているときに、はじめてそのブロックが本当に最終確定になります。
つまり「final(最終確定)」は、投票が通った瞬間に起きる単一の出来事ではありません。ブロックごとに、閾値を越えていくことで到達するものです。そして、その到達の速さは、ラウンドがどれだけクリーンだったかにも一部左右されます。
ここにステーキング(staking)が再び関わってきます。
誰が投票に選ばれるのか、そして準委員会(committee)でどれだけのクレジットがあり、定足数(quorum)に影響を与えられるのか――それによって、ラウンドがどれだけクリーンに通過するかが変わります。ごちゃごちゃしたラウンドは、単に「なんとなく」遅くするだけではありません。最終確定のタイムラインを、文字どおり数えて分かる形で後ろ倒しにします。
選定(selection)と最終確定(finality)は、ホワイトペーパーの中で並んでいる別個の仕組みではありません。1つが誰が投票するかを決め、もう1つが、その投票が壊れない状態になるタイミングを決めます。
その点が、私が特に面白いと感じたところです。
そして、率直に言って気になっている質問が2つあります。
この段階的な最終確定は、実際には意味のある期間のリスク(ウィンドウ)を生むのか、それとも主に理論上の区別にすぎないのか?
また、規制対象の証券では、「数ブロック以内でfinal(最終確定)」が本当に十分なのか、それとも現実の金融は、最終確定にもっと近い即時性を最終的に要求するのか?