DFINITY Technology Overview Series Consensus System (1)
DFINITY テクノロジーの概要、シリーズ・コンセンサス・システム(Rev.1)
著:Timo Hanke, Mahnush Movahedi and Dominic Williams
概要
Dfinityブロックチェーンコンピュータは、安全かつハイパフォーマンスで、フレキシブルなコンセンサスメカニズムを提供します。Dfinityは、許可制の参加モデルとしてもともとは定義されていますが、このコンセンサス・メカニズム自体は、Sybil耐性(*1)のある任意の方法(proof-of-workやproof-of-stakeなど)と組み合わせて、オープンな参加モデルを作ることができます。Dfinityの最大の強みは、proof-of-stakeの最も困難なケースにおいて発揮されます。Dfinityの核となるのは、分散型のランダム性ビーコンで、これは検証可能なランダム関数(VRF)として機能し、時間の経過とともに出力のストリームを生成します。このビーコンの背後にある新しい技術は、一意に決定され、非対話的で、DKG(*2)に適した閾値署名方式の存在に依存しています。このようなスキームの唯一の既知の例は、ペアリングベースで、BLS(*3)から派生したものです[3, 10]。Dfinityブロックチェーンは、Dfinityビーコンの上に重ねられており、リーダーの選択やリーダーのランキングのためのランダム性の源としてビーコンを使用しています。Dfinityブロックチェーンは、Dfinityビーコンの上位レイヤーに存在しており、リーダーの選択やランク付の目的のため、ビーコンをランダム性の源として利用します。チェーン内のブロックを提案するリーダーのランクに基づいて、チェーンに「Weight」が与えられ、その重みを使って競合するチェーン間での選択を行います。Dfinityのブロックチェーンは、公証プロセスによってさらに強固になっており、確定までにかかる時間が劇的に短縮され、Nothing-at-Stake攻撃やSelfish Mining攻撃を排除することができます。また、Dfinityのコンセンサス・アルゴリズムは、ランダム・ビーコンによる継続的なクォーラムの選択を通じてのスケーリングが可能です。実際に、Dfinityは数秒のブロックタイムと、わずか2回の確認動作による取引の完了を実現しています。このシステムは、ネットワークの分裂など、ネットワークの同期が一時的に失われた場合でもスムーズに対処し、同期が行われる中での安全性も証明されています。
1 プロローグ
DFINITYは、分散型のネットワークデザインであり、そのプロトコルは、信頼性の高い「仮想ブロックチェーンコンピュータ」をピアツーピアネットワーク上に生成し、その上にソフトウェアをインストールし、スマートコントラクトの改ざん防止モードで動作させることができます。目標は、この仮想コンピュータが、(「確認動作」のため、非常に短いブロックタイムと少数のブロックのみを必要とする)迅速に計算を完了し、(確認動作のインターバルをほぼ一定に保つことで)予測可能なパフォーマンスを提供し、(他の論文で説明している新しい検証メカニズムとシャーディングシステムを使用して)サービスに対する需要の増加に応じて、計算能力とストレージ容量を無制限に拡張することです。プロトコルは、ハッカーがそのノードの一定のクリティカルな割合以下しかコントロールできないような場合でも安全でなければならず、(高度な分散型アプリケーションで必要とされる)暗号グラフィックのランダム性を生成しなければならず、数百万のノードに規模が拡大しても分散型の性質を維持しなければなりません。
Dfinityは、コンセンサスバックボーン、スマートコントラクト言語、仮想マシン、コンカレントコントラクト実行モデル、デーモンコントラクト、ピアツーピアネットワークとセキュアブロードキャスト、ガバナンスメカニズム、スケーリングテクニックなど、Dfinity内でそれぞれ独立したイノベーションに焦点を当てた、一連のテクノロジー概要を通じて紹介されます。本文書では、コンセンサス・バックボーンと暗号化されたランダム性に焦点を当てます。Dfinityは、そのプロトコルの中核に、偏りのない検証可能なランダム関数(VRF)を組み込んでいます。VRFは、コンセンサスを推進するだけでなく、シャーディングや検証タワーなどのスケーリング技術の基盤となります。さらに、コンセンサス層で生成されたVRFは、アプリケーションの層、すなわちスマートコントラクトやバーチャルマシンでも利用可能です。このように、コンセンサスのバックボーンは、他の多くのトピックと絡み合っているのです。
(*1)https://academy.binance.com/ja/articles/sybil-attacks-explained
(*2)https://en.wikipedia.org/wiki/Distributed_key_generation
(*3)https://ja.wikipedia.org/wiki/%E3%83%9C%E3%83%8D%E3%83%BB%E3%83%AA%E3%83%B3%E3%83%BB%E3%82%B7%E3%83%A3%E3%83%81%E3%83%A3%E3%83%A0%E7%BD%B2%E5%90%8D