今回はカルダノのコンセンサスプロトコルであるOurboros(ウロボロス)について解説します。ウロボロス関し、耳にされている方も多いはずです。
Ouroborosは、ビットコインやイーサリアムなど、初期の暗号通貨が基盤としているプルーフオブワークに代わるプロトコルとして、エネルギー効率とサステナビリティを強化した、査読済み研究を通じて開発された初のブロックチェーンコンセンサスプロトコルです。
6つのウロボロスについて
Ouroborosとその各実装に関する概要は下記のようになっています。
- Ouroboros Classic(クラシック)
- Ouroboros BFT
- Ouroboros Praos(プラオス)
- Ouroboros Genesis(ジェネシス)
- Ouroboros Crypsinous(クリプシナス)
- Ouroboros Chronos(クロノス)
上から順番に、ウロボロスクラシック、ウロボロスBFT、ウロボロスプラオス、ウロボロスジェネシス、ウロボロスクリプシナス、ウロボロスクロノス です。
後ほど、各実装により導入された機能を紹介します。一緒にウロボロスの歴史を紐解いて行きましょう。
コンセンサスプロトコルとは?
この分野になじみのない人が「コンセンサスプロトコル」という言葉に面食らうのは無理もありません。簡単に言えば、コンセンサスプロトコルとは分散型台帳を支配する法とパラメーターのシステムです。すなわち、各ネットワーク参加者が全員で合意に達するために守るルールセット・決まり事のことです。
パブリックブロックチェーンは1つの中央集権的な権威にコントロールされることはありません。そのかわり、コンセンサスプロトコルは、分散型ネットワーク参加者がブロックチェーンに取り込まれ、保存されたネットワークの履歴に合意することを可能にするために使用されます。何が起こったかについて合意に達し、唯一の真実のソースから次へブロックを繋げていくのです。
この唯一の真実のソースが唯一の記録を提供します。これこそ、ブロックチェーンが時に「トラストレス」と呼ばれる理由です。参加者がお互いを信頼することを要求するのではなく、プロトコルに信頼が組み込まれているのです。仲介者に頼ることなく、また個人情報の交換を前提とすることなく、互いに交流し取引することができます。
Ouroborosはプルーフオブステークプロトコルです。これはプルーフオブワークとは一線を画します。新しいブロックを作成する際にコンピューターを駆使して複雑な方程式を解く 「マイナー」に依存することなく、プルーフオブステークではネットワークで管理するステーク量に基づき新ブロックを生成する参加者(Cardanoの場合はステークプール)を選定します。
Ouroborosを使用するネットワークはプルーフオブワークを使用するネットワークに比べてはるかにエネルギー効率が高く、Ouroborosを通じてCardanoは比類のないエネルギー効率を達成することができます。たとえば2022年の時点で、ビットコインは年間204.50TWhの電力を必要とする。これは、タイの電力消費量に匹敵します。一方OuroborosはRaspberry Piという超小型のコンピュータで稼働します。この消費電力はわずか15~18W程度です。この使用電力の違いは、いわば1家庭と1国の違いにもたとえられ、一方は多くの人が対応可能ですが、もう一方は不可能です。
ではここからはOuroborosプロトコルの仕組みと、各実装が追加した機能性について詳細に見ていきましょう。
Ouroboros Classic(ウロボロスクラシック)
まずはOuroboros Classicです。2017年に公開された最初のOuroborosプロトコルとなっています。この最初の実装は、プルーフオブワークのライバルとして、エネルギー効率の良いプロトコルの基礎を築いた上、プルーフオブステークを分析する数学的フレームワークを導入し、さらにプルーフオブステークの設定において参加者に報酬を与える新しいインセンティブメカニズムを導入しています。
しかしながら、これ以上にOuroborosが他のブロックチェーン、とりわけ他のプルーフオブステークプロトコルと異なっている点は、プロトコルがリーダーを選定するアルゴリズムにおける無作為なランダム性であり、それゆえのセキュリティ保証です。ランダム性は、パターンの形成を防ぎ、プロトコルの安全性を維持するために重要な役割を果たします。行動が予測できれば、悪用対象となり得ます。ウロボロスは、透明性を確保しながらも、支配を排除しています。ウロボロスは、このような厳密なセキュリティ分析によって開発された最初のブロックチェーン・プロトコルなのです。
Ouroborosの仕組み
Ouroborosは、Cardano上で時間をエポックに区切り、エポックはさらにスロットに区切られる。スロットは、ブロックが作成できる短い期間であり、ここでブロックが生成されます。スロットをエポックにまとめることは、動的に変化するステーク分布にリーダー選出プロセスの調整する上で、重要な役割を果たします。
ウロボロスの設計の中心となるのは、攻撃を受けても安全性を維持することです。したがって、このプロトコルには、攻撃者がブロックチェーンの別バージョンを伝播することを防ぐためのバッファ(余裕・予備範囲)が組み込まれており、敵対者が任意の参加者に任意のメッセージをいつでも送信できることを想定しています。事実、プロトコルはステークの51%以上がプロトコルに従う誠実な参加者にコントロールされている限り、安全であることが保証されています。
スロットリーダーは各スロットで選定され、チェーンにブロックを追加し、次のスロットリーダーに渡す責任を負います。プロトコルを崩壊させる敵対的行為に対抗するために、各スロットリーダーは受け取ったチェーンの最新の数ブロックを一時的なものと認識するよう要請され、事前に設定されたブロック数を超えたものだけが決済ブロックと認められます。これはまた、決済遅延とも称されます。とりわけこれは、ステークホルダーがオフラインとなっても決済遅延期間を超えない限りブロックチェーンとと同期したままとなることを意味します。
Ouroborosプロトコルでは、各ネットワークノードにはトランザクションメモリープールおよびブロックチェーンのコピーが保存されます。ローカルに保存されたブロックチェーンは、ノードが代わりとなるもっとも長い有効なチェーンを認識すると置き換えられます。
ちなみに、トランザクションメモリープールには既存のトランザクションとの整合性が認められるとトランザクションが追加されます。
Ouroboros Classicの欠点は適応的攻撃者に対する脆弱性でした。しかし、重大な脅威であったこの脆弱性は、Ouroboros Praos解決されました。また、新規参加者がブロックチェーンからブートストラップ(起動)する際の安全性の問題は、Ouroboros Genesisで解消されました。
適応的攻撃についてはかなり難しい内容になるので、気になる方はぜひ各自で調べてみて下さい。
Ouroboros BFT
次に登場したのが、Classicの解析から導き出されたOuroboros BFTです。ウロボロスBFT(Byzantine Fault Tolerance、ビザンチンフォールトトレランス)は、旧カルダノコードベースから新コードベースへの移行であるバイロンのリブート時にカルダノで使用されたシンプルなプロトコルです。ウロボロスBFTは、シェリーのリリースとそれに伴う分散化に向けてCardanoのネットワークを準備するのに役立ちました。
Ouroboros BFTは、ノードが常にオンラインであることを要求するのではなく、ブロックチェーンを構築するために、サーバーのフェデレーションネットワークと、サーバー間の同期通信を想定していました。このフェデレーション設定において、このコンセンサスプロトコルはそのシンプルさと決定論的な性質が魅力的です。BFTは、他のOuroborosバージョンと比較して、より多くの誠実な当事者を必要としました。
難しすぎるので一言で要点をいうと、ウロボロスBFTは、旧カルダノコードベースから新コードベースへの移行であるバイロンのリブート時にカルダノで使用されたシンプルなプロトコルであるということです。
Ouroboros Praos
Ouroboros Classicを基に構築したOuroboros Praosでは、セキュリティとスケーラビリティが大幅に改善されました。
Ouroboros Classicと同様に、Ouroboros Praosもチェーンをスロットに分割してトランザクションブロックを処理し、スロットのまとまりでエポックを構成します。しかしOuroboros Classicと異なるのは、Praosは半同期設定で解析され、適応的攻撃者に耐性を持つところにあります。
ここでは2つの可能性が想定されています。まず、敵対者が誠実な参加者のメッセージを1スロットの持続期間より長く遅延させる可能性、そして敵対者が参加者にいつでも任意のメッセージを送信する可能性である。
リーダーの選出を秘匿し、前方秘匿性のある鍵変化型署名を使用することにより、Praosはエポックのランダム性を向上させました。これは、強力な敵対者でも次のスロットリーダーを予測し、DDos攻撃といった対象を絞った攻撃によりプロトコルを崩壊させることを不可能にしました。
前方秘匿性とは、鍵交換に使った秘密鍵が漏えいしたとしても、過去の暗号文は解読されないという性質のこと。DDos攻撃とは、サーバーに対して過剰なアクセスやデータを送付する攻撃を複数のコンピューターから大量に行うことをいいます。
Ouroboros Genesis
Genesisは、Ouroboros Praosにジェネシスブロックからのブートストラップを可能にするチェーン選定の新ルールを加えて、さらに改良したものである。Genesisはまた、プロトコルのUniversal Composability(ユニバーサルコンポーザビリティ)を証明しています。これは、プロトコルが安全性を失うことなく、他のプロトコルで構成できることを証明するものです。これは、Genesisの安全性と持続可能性、そしてGenesisを利用するネットワークの安全性に大きく貢献しています。
ここで抑えておくべきポイントは、Genesisは、Ouroboros Praosにジェネシスブロックからのブートストラップを可能にするチェーン選定の新ルールを加えて、さらに改良したものであるという点です。
Ouroboros Crypsinous
Ouroboros Crypsinous(クリプシナス)は、Genesisにプライバシー保護性を追加したものです。また、形式的分析を行った初のプライバシー保全型プルーフオブステークブロックチェーンプロトコルで、SNARK(スナ―ク)とプライベートキー前方秘匿性暗号化に依存した新しいコイン進化技術の導入により強力なプライバシー保証を維持しながら、適応的攻撃に対する安全性をも達成しています。Crypsinousは現在のところCardanoに実装される予定はありませんが、プライバシー保護設定を強化するために他のチェーンで使用することは可能です。
Ouroboros Chronos
最後に紹介するのは、「Ouroboros Chronos(ウロボロス クロノス)」です。Chronosは2つの目標を達成しています。1つめは、新しい時刻同期メカニズムによりブロックチェーンプロトコルが時刻を確実に同期できること、そしてこれにより外部の時間サービスから自立できるようになります。2つめは、暗号的に安全なブロックチェーンプロトコルで、さらに他のプロトコルに暗号的に安全な時刻のソースを提供することです。つまり、Chronosは、時間情報を狙った攻撃に対して台帳の耐性を強化します。
アプリケーションの観点からChronosは、単一障害点のない統一されたネットワーククロックにローカル時刻を同期させる必要がある重要な通信、輸送、その他のITインフラの耐障害性を劇的に高めることができます。
最後に
現在、CardanoはOuroboros Praosを基盤として稼働しています。Genesisは2022年に実装予定であり、その後台帳はOuroboros Chronosをサポートするようアップグレードされていく予定です。
参考文献
From Classic to Chronos: the implementations of Ouroboros explained
コメント