Suiはコンセンサスの中核を2度置き換えた。ネットワークはハードフォークを一度も必要としなかった。
この記事はSuiに関するシリーズの一部です:
その理由はアーキテクチャ上の選択に起因する。バリデーター間でトランザクションを伝播し、DAGに整理する役割を担うレイヤー「Narwhal」は、3つのプロトコル全体を通じて安定していた。その上位に位置する、トランザクションの順序付けを担うメカニズムは交換可能だった。Tusk、Bullshark、そしてMysticetiはそれぞれ同じ基盤に接続された。他のブロックチェーンならゼロから再構築が必要だったところを、Suiは1つのレイヤーを置き換えるだけで済んだ。
最初に明確にしておく価値のある用語上のポイントがある。Suiは2種類のトランザクションを異なる方法で処理するが、その区別はどのコンセンサスプロトコルが動作しているかとは無関係だ。単一の当事者が所有するオブジェクト(例えば単純な送金)は、より高速なByzantine Consistent Broadcastを通じてコンセンサスを完全にバイパスする。共有オブジェクトのみが順序付けにコンセンサスを必要とする。このメカニズムはSuiのローンチ以来存在し、どのコンセンサスプロトコルがアクティブかに関わらず動作する。これは本記事のテーマであるコンセンサスプロトコル自体の進化と混同すべきではない。
Tuskは、メッセージの配信時間について何も仮定できないネットワーク向けに設計された。タイミングの制約なし、同期の仮定なし。それは最も過酷なシナリオであり、バリデーターごとに条件が大きく異なるグローバルネットワークにとって最も現実的でもある。
その核心的なアイデア:NarwhalのDAGが構築されると、追加の通信なしにコンセンサスが達成される。各バリデーターは同じ決定論的アルゴリズムをDAGのローカルビューに適用し、他のすべてのバリデーターと同じ順序に到達する。投票ラウンドなし、明示的な調整なし。順序はコミットマーカーとして機能するアンカーポイントを特定することで、参照構造自体から読み取られる。
元の論文のベンチマークは20のバリデーターで測定され、スループットは約160,000トランザクション毎秒、遅延は約3秒とされた。当時、それは従来のシステムが達成できるものを上回っていた。
2つの問題が残った。第一に遅延:3秒は多くのユースケースで許容できるが、取引やリアルタイムゲームにとっては致命的だ。第二に公平性。純粋に非同期の環境では、接続性の高いバリデーターのトランザクションが他よりも頻繁に含まれた——最速ノードを優遇する構造的な不均衡だ。
Tuskは主に研究とテストネット上に留まった。2023年にSuiのメインネットがローンチされた時点では、すでにBullsharkが担当していた。
Bullsharkの概念的な飛躍は単一の仮定に基づいている:ほとんどの場合、ネットワークは正常に動作する。常に最悪の事態に備えるのではなく、プロトコルはメッセージが合理的な遅延内に届く期間を活用する。これが部分的同期モデルだ:通常条件下ではタイミングの制約が仮定され、ネットワークが劣化した際には非同期の堅牢性が発動する。
その仮定からBullsharkの真の高速パスが導かれる——上記の所有/共有オブジェクトの区別と混同しないこと。同期期間中、プロトコルは劣化モードほど多くのラウンドを待たずに、より速くコミットできる。これはネットワークの健全性を条件とした遅延のショートカットだ。
Bullsharkはまた、Tuskが未解決のまま残した公平性の問題にもウィークリンクを通じて対処した。これらのリンクにより、一時的に低速なバリデーターも、高速なバリデーターがまだ参照していない場合でも最終的なコンセンサスに含まれることができる。接続が悪いことで誠実なバリデーターが排除されることはない。プロトコルはアンカー選択とメモリのクリーンアップも改善し、長期間にわたる負荷の持続を可能にした。
コスト:複雑性の増大。ウィークリンクとネットワーク適応はエッジケースと計算オーバーヘッドをもたらす。論文では50ノードで2秒の遅延において125,000 TPSが報告されている——紙の上ではTuskより低いが、比較は誤解を招く:Tuskは20のバリデーターで測定されており、ネットワークが成長するにつれてスループットは機械的に低下する。2つの数値は直接比較できない。遅延は一方で1秒の範囲に留まった——最も要求の厳しいアプリケーションにはまだ遅すぎる。
Suiにとって、この移行の主な価値は:ネットワークが混乱なくコンセンサスを変更できることを証明したことだ。その上で構築する開発者にとって意味のある信頼シグナルだ。
MysticetiはBullsharkを拡張するのではなく、基礎となるロジックを変更する。TuskとBullsharkはどちらも証明済みDAGに依存している:各ブロックは利用可能と見なされる前に、バリデーターのクォーラムによって署名される必要がある。その証明はコストがかかる——署名の生成と検証、そしてネットワークのラウンドトリップにおいて。それが両前世代で共有されたボトルネックだった。
Mysticetiはそのステップを完全に取り除く。未証明のDAG上で動作する:バリデーターはブロックに署名してブロードキャストし、それで終わりだ。合意はもはや投票されない;推論される。バリデーターが自身のアウトプットで別のブロックを参照する際、その参照行為が暗黙の承認を構成する。コンセンサスは参照行動から導出され、専用の投票メッセージは一切ない。
結果は2つの次元で現れる。遅延については、Mysticetiは3ラウンドのメッセージでコミットする——理論的な最小値であり、実用的なBFTと同等だ。リソースについては、1ラウンドあたり数千の署名を排除することでCPU負荷が大幅に削減される:本番環境で約40%削減(デプロイされたバリデーター全体で約48%から約29%へ)。プロトコルはまた各ラウンドで複数のリーダーを並行して実行し、中央値とテール遅延を低下させ、リーダーが利用不能な場合でも停止せずに吸収する。
バリアント版のMysticeti-FPCは、資産転送のための高速コミットパスを追加する。その特徴は、それらのトランザクションを別々に処理するのではなくDAGに直接織り込むことで、署名とメッセージを節約する。これが構造に埋め込まれた真の高速コミットパスが存在する場所だ——Bullsharkではなく。
制御された環境で測定された数値:10ノードで300,000 TPS、50ノードで400,000 TPS(遅延が1秒を超える前)。持続的な負荷下では、200,000 TPSで約0.5秒でコミットが完了する。同じテストで、他の主要プロトコルは150,000 TPS未満でピークに達し、遅延は約2秒から始まる。
さらに広く引用される「Bullsharkに対して80%の遅延削減」(約1.9秒から約400msへ)がある。この数値は正確だが、ベストケースの比較だ:劣化条件下のBullsharkと最適条件下のMysticetiを比較している。典型的な共有オブジェクト負荷下では、改善はより控えめだが、正確な数値を示す公開測定はない。覚えておく価値もある:200,000〜400,000 TPSの数値は制御されたベンチマークから来ている。メインネット上の実際の条件下では、観測されるスループットははるかに低い。
3世代を並べると、数値が文脈の中で読まれる限り、進化は明確だ。
スループットは約160,000 TPS(Tusk、20バリデーター)から125,000 TPS(Bullshark、50ノード)、そして構成によって300,000〜400,000 TPS(Mysticeti)へと推移する。ノード数が異なるため、これらの値は一対一で比較できない:厳密なランキングではなく、大まかな規模感を示す。遅延は一方、明確に低下している:3秒からBullsharkの約2秒を経て、約0.5秒へ。通信面では、DAGが構築されれば追加オーバーヘッドゼロ(ただし上流でコストのかかる証明あり)から、ほとんどの投票トラフィックを排除する暗黙の証明へと進化した。
真の変曲点はTuskとBullsharkの間にはない——両者は同じファミリーに属する:証明済みDAG、明示的な証明、漸進的な最適化。断絶はBullsharkとMysticetiの間にあり、証明の放棄によって生じる。TuskとBullsharkはステップを最適化した;Mysticetiはそれを排除した。
強調する価値のあることが1つある:3つのプロトコル全体を通じて、Narwhalはほとんど変わっていない。すべてのイノベーションは順序付けレイヤーに集中し、データ伝播を不安定にすることなく行われた。サービス中断なしにこれらの置き換えを可能にしたのは、その責任の分離だ——すぐには成果が出ないが、最終的にすべてを変えるアーキテクチャ上の選択だ。
Mysticetiはおそらく最終的な答えではない。Suiのアプローチはまさに、より良いコンポーネントが現れた時に残りに触れずに置き換えることだ。第4世代が登場する場合、それは最も可能性が高い同じNarwhalに接続されるだろう。
Suiのコンセンサス進化:TuskからMysticetiへ は、Mediumのコインモンクスで最初に公開されました。そこでは人々がこのストーリーをハイライトし、返答することで会話を続けています。

