コンセンサスアルゴリズム

 コンセンサスアルゴリズムとは、ブロックチェーンのノード間で合意形成を行うメカニズムです。本記事では、ブロックチェーンの合意形成で課題となる「ビザンチン将軍問題」と、代表的なコンセンサスアルゴリズムである「PoW」「PoS」について解説します。

コンセンサスアルゴリズムとは

 コンセンサスアルゴリズムとは、ブロックチェーンのノード間で合意形成を行うメカニズムのことです。
 パブリックブロックチェーンにはトランザクションの管理を行う特定の管理者は存在しません。そのため、各ノード同士でトランザクションの正当性を検証し、合意する必要があります。

ブロックチェーンとビザンチン将軍問題

 ブロックチェーンをはじめとした分散型ネットワークにおける合意形成では、ビザンチン将軍問題と呼ばれる問題を解決する必要があります。
 これは、1980年代にコンピュータ科学者であるレスリー・ランポート氏らによって考案された問題です。特定の管理システムが存在しない分散型ネットワークの中で、参加者の中に故障したコンピュータや不正を働くコンピュータが紛れ込んでいる場合でも、ネットワーク全体で正しい合意を形成できるのかという問題です(図1)。


図1. ビザンチン将軍問題を解決できない場合

 ランポート氏らの研究により、不正なコンピュータの数がF台のとき、正常なコンピュータが2F+1台以上であれば、正しく合意形成できることがわかっています(図2)。

図2. ビザンチン将軍問題を解決できる場合

限定的なビザンチン将軍問題の解決

 ブロックチェーンで初めてビザンチン将軍問題を解決したとされるのがビットコインです。パブリックブロックチェーンのようなオープンなネットワークでは、ノードの数やその状態(稼働状態やデータ改ざんなどの悪意の有無)は常に変化します。そこで、ビットコインでは次節で解説するPoW(Proof of Work)とナカモト・コンセンサスと呼ばれるコンセンサスアルゴリズムにより、「時間の経過とともにその時点の合意が覆る確率が0へ収束する」という限定的なビザンチン将軍問題の解決が図られています。このことから、この合意を確率的ビザンチン合意と呼ぶ場合があります。

PoWとは

PoWによるブロックの形成

 PoWはProof of Workの略で、ビットコインで採用されていることで有名なコンセンサスアルゴリズムの技術要素の1つです。2022年9月15日以前のイーサリアムでも採用されていました。PoWでは、ノードはブロック作成権の獲得を目指し、マイニングと呼ばれる作業を行います。
 マイニングでは一定の難易度の計算を行い、ナンスと呼ばれる値を求めます(図3)。このマイニングを行うノードのことをマイナー(Miner)と呼びます。ナンスをいち早く計算したマイナーはナンスを含んだブロックを他のノードに示し、正しいと判断されるとそのブロックは新たなブロックとしてチェーンに追加されます。その際、ブロックを作成したマイナーは報酬として暗号資産(ビットコインやイーサ)を入手できます。


図3. マイニングによるナンスの導出

PoWの特徴

 PoWの特徴は、ブロックの改ざんが極めて難しい点です。仮に過去のブロックの内容を改ざんしようとした場合、それ以降の全ブロックに対してナンスの再計算が必要になりますが、マイニングで行う計算は計算量が膨大であるため改ざんは極めて困難です。また、マイナーにとってもコストをかけてブロックの改ざんを行うよりも、マイニングを正しく早く行い、報酬をもらう方が経済的な面で合理的なしくみとなっています。

作成したブロックのチェーンへの追加

 PoWはブロックを作成するためのしくみです。仮に複数のマイナーが同時にブロックを作った場合は、フォークと呼ばれるチェーンの分岐が生じます。分岐を解消するためのしくみとして、ビットコインではナカモト・コンセンサスが採用されています(イーサリアムではGHOSTプロトコルが採用されていました)。これらは、分岐発生時にどのチェーンを正しいチェーンとみなすかについての取り決めです。この取り決めに従ってマイナーがブロックの追加を行うことで、時間の経過とともにチェーンが1本に収束していきます(図4)。


図4. チェーン分岐時のチェーンの選択方法

PoSとは

PoWの問題点とPoSの登場

 PoWはブロック作成のための計算量が多く、トランザクションの処理速度が遅いという問題があります。また、計算に大量の電力を使用することから、環境への負荷も問題視されています。これらの問題を解決するPoSと呼ばれるコンセンサスアルゴリズムが登場しました。
 PoSはProof of Stakeの略です。PoWではノードが保有する計算パワーが大きいほどブロックを作成する権利を得る確率が高かったのに対し、PoSでは保有している暗号資産の量や保有期間の長さに応じてその確率が高くなるようなしくみとなっています。PoWと比べてブロック作成に大きな計算量は必要なく、環境への負荷も少なくなっています。
 PoSではあらかじめ決められた量の通貨を預け入れることによって、ブロック作成の権利保有候補者であるバリデータの一員となれます(図5)。この「通貨を預け入れること」をステーキングと呼びます。ブロックを作成したバリデータは、ステーキング報酬と呼ばれる報酬(イーサリアムの場合はイーサ)を得ることができます。


図5. PoWとPoSの比較

引用:大和総研フロンティア研究開発センター 『図解まるわかりNFTのしくみ』 翔泳社 2022年11月24日 p64-p69
 ※コンセンサスアルゴリズムの定義、および見出し名の一部を本サイトで追記