プルーフオブステークとカルダノのウロボロスについて

ベルナルド・ デービッド (Bernardo David)は、IOHKの研究員であり、かつ、東京工業大学の特任助教です。 ベルナルドは、最近のロッテルダムでのミートアップにおいて、Cardanoで使われている主な合意プロトコルであるウロボロスと、それがBitcoinや他のブロックチェーンとどう違うのかを紹介しました。

はじめに&背景情報

ベルナルドは、 プルーフ・オブ・ワーク (PoW)システムで観察された現在の問題を整理することから始めました。

  • PoWベースのシステムでは、ブロックを生成する人々とお金を投資した人とは同じである必要はない
  • つまり、コインホルダー(トークンを購入してシステムに投資した人)とプロのマイナー(新しいブロックを作り、マイニングファームを経営して新しいブロックを生成しこれから利益を得る人)は違うということ
  • システムの仕組みを制御する人々がマイナー(採掘者)
  • コントロールしている人はブロックチェーンを破壊したり、ポリシーを変更したり、成長させたり、ハードフォークを起こしたりすることができる
  • マイニングに対する報酬の減少もある
  • Bitcoinでは、ブロックマイニングの報酬は210,000ブロックごとに半分になる
  • これは、マイニングに投資するインセンティブが減少していることを意味し、システムがマイニングに依存して動く場合問題がある
  • 報酬がゼロに等しい場合、これらのシステムに何が起こるか?
  • 第3に、PoWシステムにおけるネットワークの制御は非常に集中的である
  • Bitcoinのネットワーク全体が、少数の中国のマイニングファームによって処理されていることが知られている
  • 中国内で規制の変更があればこれはBitcoinの崩壊となる可能性があり、また、一般的に、少数の大物当事者にコントロールされることはシステムにとって好ましくない
  • さらに、ユーザーの50%以上を掘り起こすためのエネルギーを持っていれば、理論的にはそれを引き継ぐことができる
  • PoWシステムはまた、非常にエネルギー集約的であり、巨大なエネルギーの無駄を生み出す
  • Bitcoinのマイニングプール全体では、1日にオランダ一国よりも多くのエネルギーを費やす
  • 持続可能なシステムを作り出すために、私たちは天然資源を費やすことも、より多くの公害を作りだすこともしたくない

では、これらの問題の解決のために何ができるのか?

  • オプションは、PoWから離れ他のメカニズムに移行すること
  • プルーフオブステーク(Proof-of-stake)やプルーフオブスペース(Proof-of-Space)のこと
  • プルーフオブスペースは、コンピュテーションの代わりに記憶域が使用されることを除けば、プルーフオブワーク(仕事量の証明)と非常に似ている
  • カルダノについていえば、研究者とIOHKは、エネルギーの無駄のないモデルに移行し、選択されたリソースを採用してシステムとコミュニティにとって有用な何かをしたいと考えた
  • プルーフオブステークは、システムへの投資が増えるほどコントロールが向上するという概念に基づいている
  • ユーザーとして、プロジェクトが(あなたの議決権を使用して)進行する方法を進めることができる
  • PoSはエネルギー効率も良い
  • ブロックを生成するために必要なのは、シグニチャとエネルギーやデータを消費しないいくつかの暗号操作のみ
  • リソースの無駄がなく、ユーザーがシステムをコントロールしブロックチェーンの成長を確実にする

基本構造: PoS はどう機能するのか?

ベルナルドは、PoSの仕組みを説明するために、トトロ、ポルコロッソ、千尋(画像の左から右)というジブリのキャラクターの入ったスライドを使用している

  • スライドでわかる通り、トトロは9コイン、ポコロッソは6コイン、千尋は15コイン持っている
  • システム内でもっと多くのコインを持っている(したがって、より多くを投資している)人であれば誰でも、PoSベースのシステムでより多くのブロックを生成できるはず
  • 誰が次のブロックを作ることができるかを知るために、宝くじをする
  • より多くのコインを持っている人が宝くじに勝つ確率が高くなる仕組みなので、この例では、千尋の確率が高いことになる
  • この宝くじは、ブロックチェーンを成長させ、ブロックを生成する必要があるたびに実行されるもので、PoWパズルを解決しなければならないBitcoinネットワークとは対照的
  • PoSの最初の前提と基本的な仕組みでは、投資が高かったために千尋が宝くじに当たる確率が高いということ
  • カルダノでは、ブロックを生成する人は スロットリーダー と呼ばれる
  • ブロックごとに、タイムスロットがある。 その間、誰かがブロックを生成することができる
  • ブロックは20秒で、各20秒ブロックに対応する宝くじがある
  • カルダノで使用されているこの宝くじは、 スロットリーダー選定プロセス と呼ばれる

この分野で研究に貢献したもの

  • IOHK研究によって論文が作成される以前、このシステムが数学的に安全であるという証拠を持っている人は誰もいなかった
  • それは書くのが非常に複雑な証明で、研究者が安全であると主張し、それが数学的に証明され、他の人がその分野で検証できるシステムを思いつくのに3年以上かかった
  • PoSベースのコンセンサスプロトコルのための正式なモデルが最初に登場
  • 次に、恐らく安全な最初のPoSベースのブロックチェーンプロトコルであるウロボロス(Ouroboros)が登場
  • ウロボロス という語は、ギリシャ神話に出て来る自分の尾をかじる蛇のことで、この文脈では、基本的に、ブロックチェーンが必然的にそれ自身の状態からランダムに生み出すこととなることから使用されている。
  • しかし、このプロトコルにはいくつかの注意点があり、これは今年Ouroboros Praosによって解決、以前の提案のセキュリティと効率が改善された
  • 古代ギリシャ語の プラオス という語は、リラックスを意味する
  • 元のプロトコルでは、ユーザーが常にオンラインで常にメッセージを投稿していることを前提とし、さらに迅速に行動する必要があった。Praosの新しい提案では、ユーザーはより現実的な設定で行動でき、オンライン、オフラインを移動でき、したがってもっとリラックスできるようになった
  • Praosは、現実世界のシナリオを達成しつつセキュリティを維持する方法を見つけており、一つの成果といえる

ウロボロス( Ouroboros

  • この最初の提案は、共時性を仮定。誰もが(世界中のどこにいても)互いに同期した時計を持ち、(宝くじの作成やブロックの作成などでメッセージの送信時を知る必要があるため
  • この仮定を前提とすれば、敵対者がシステムの株式の50%以上を支配しない限り、Bitcoinと同様に安全となる
  • 別の仮定は、敵対者が自動的に人を制御することはできないというもの。つまり、敵対者がハックしたり偽装した場合、次の計算に侵入したり破損による遅延をハックするまでにしばらく時間がかかる
  • こうした仮定が生じる確率が高いとは考えていなかったが、最初に単純なシステムを作る必要があることを知っていた
  • ベルナルドは、Praosがこれらの仮定をどのように解決したかに入る前に、宝くじの仕組みとプロトコルの一般的なメカニズムについて説明しました。

宝くじの実施方法は?

  • 「Satoshiプロトコルに従う」を利用する
  • この手順によって、すべてのユーザーから一人のユーザーを、ユーザーが有するコインの数に比例する確率で選択できるようになる

  • 基本的には、ランダムな値をとる暗号ハッシュ関数(H)(または シード と言われる)で始まる
  • すると、数字「i」の出力を獲得
  • この i は、 0とブロックチェーン内のサトシの総数の間の数字
  • サトシは暗号通貨で最小の通貨単位(セントのようなもの)
  • カルダノでは、ハッシュ関数の出力は1とブロックチェーン内のAdaコイン総数の間の数値となる
  • H(シード)がAdaコイン番号 i の出力を提示
  • この「ユーザー」がコイン i を所有することが示され、ブロックチェーンでトランザクションがある
  • 選択された数はランダムであるため、各コインは等しい確率を有する
  • しかし、もしより多くのコインを持っているならば、選ばれる確率は上がる
  • このランダムなシードをどのように生成するか?
  • これを分散的な方法で行うにはどうしたらいいか?

プロトコル: 1 つのエポック

  • 各エポックは多数のスロットを有し、各スロットにおいてブロックが生成される
  • 起源ブロックB0(これは開始時間前にそこにあるブログ)から開始、
  • ここでユーザーの説明と自分が所有しているコイン数 S が見える。また、イメージからランダム性もわかる
  • 最初のスロットでは誰もオンラインになっておらず、したがって、ブロックは何も生成されていないことがわかる
  • 次の2スロットでブロックが生成され、ブロックチェーンが進行する
  • ここでの問題の1つは、私たちは、コインを所有する人のこのリストと固定されたランダム性を使ってブロックを生成する人を選択していること
  • しかし、現実には、人々はコインを取引し、変えるので、リストはしたがって古くなってしまう
  • 例えば、ブロック1の後、ユーザー1はコインを売却したかもしれず、であればステークを所有していない可能性がある
  • しかし、エポックの終わりには、彼はまだこれらのコインを所有しているかのように選択される可能性がある
  • 私たちはこれをセキュリティの達成を目的として行う必要があることに注意すべき
  • 私たちは古くなったリストがプロトコル全体で使われ続けることを望んでいない
  • それがエポックに分かれている理由
  • エポックの終わりまでに、新しいランダム値が生成され、リストが更新される(これは、すべてのトランザクションが各ブロックで追跡されるので簡単)
  • ウロボロスの最初の提案では、すべてのメッセージがスロットの最後までに配信されるという制限があったが、Praosではこれは解決
  • いくつのブロックをカラにできるかに制限はない
  • 主な制限は、正直な人々はオンラインにいるはず(このウロボロスの最初の版において)というもの

プロトコル:複数のエポック

  • 完全なプロトコルには、もちろん複数のエポックが含まれる
  • Guaranteed Output Delivery(GOD)と呼ばれるツールを使用。 コイントスで、ランダムのソースを得る
  • このツールはブラックボックスとして動作し、ブロックチェーンプロトコルと並行して実行され、ランダムであること(ユーザーの50%が正直である限り)が保証された値が与えられる
  • このブロックボックスは、ユーザーがブロックチェーンを介して対話することを要求するインタラクティブプロトコルを使用し、かつ、研究によって完全なランダム性を提供することが証明されている
  • これは各エポックごとに繰り返される
  • ランダム性は新しく作成することが必要。なぜなら、同じランダム性が使用された場合、悪意のユーザーが選択されるコインを予測でき、それらの特定のコインを購入するようになるため

Ouroboros Praos

  • 最初の提案がOuroboros Praosとなったら
  • 同期性の仮定は不要になった
  • また、不利な行動が起こっている間「待つ」ことをしない悪意のプレーヤーなど、完全適応の破損はあるものの、ウロボロスのセキュリティーは改善された
  • これは、リーダーの選択を記憶しない、前方での安全署名、ローカルでのランダム生成を経ることで達成

ウロボロスジェネシス( Ouroboros Genesis

  • このプロトコルは、洗練されたチェーン選択ルールを経てuniversal composabilityを達成するためにPraosで改善されたもの
  • Praosでは、ユーザーは、前にブロックチェーンを実行したことのないシステムに参加し、システムの中間ステート(システムのブロック)を渡して、受け取っているチェーンが正しいことを確認する信頼できる人物が必要になると仮定しなければならなかった
  • これは理想的ではなく、ブロックチェーン全体を起源ブロックからブートストラップできるようにしたい
  • 通常はブロックの最長チェーンを選択する「最長チェーン規則」を使用するが、これは最良の保証を与えるものではない
  • その洗練されたルールでは、信頼できる中間チェックポイントなしで、起源ブロックから直接ブートストラップすることが可能だった
  • Genesisはつまりチェックポイントなしでセキュリティを達成
  • もちろんパフォーマンスにも取り組む
  • 最新のベンチマークは数年前ウロボロスの最適化されていないバージョンで実行されたもので、毎秒100トランザクションを達成した

結論として、ベルナルドは、彼らが作成した研究とウロボロス プロトコルは、Bitcoinと同様のセキュリティを実現可能であり、その上でエネルギー消費を抑え、パフォーマンスを向上させることができると述べています。 これらすべては、数学的に正しいことが証明されている、よく理解されている暗号技術を使用して作成されています。

ウロボロスについてもっと詳しくなるために論文(英語)をお読みになりたい場合は、こちらをご参照ください。
Ouroboros
Ouroboros Praos
Ouroboros Genesis


ベルナルドのプレゼンテーション(英語)をご覧ください: