
Proof of History、Proof of Stake、Proof of Workを解説
この記事で解説すること
ブロックチェーンは、コンピューターネットワーク全体にわたってトランザクションを記録する分散型台帳です。コンセンサスアルゴリズムは、台帳の状態について合意するために使われる、ブロックチェーンに不可欠な要素です。相互に信頼していない参加者同士の連携を可能にし、データをブロックチェーンへ追加する前に検証する中央集権的な主体を不要にします。コンセンサスアルゴリズムがなければ、すべてのノードがブロックチェーンの状態に合意していることを保証できません。その結果、数多くの攻撃ベクトルにさらされ、二重支払いの問題が発生し、不変性が損なわれ、意見の相違やフォークを適切に解決できなくなります。
この記事では、コンセンサスアルゴリズムの重要性と、主要なブロックチェーンで使われているさまざまな種類について詳しく見ていきます。コンセンサスアルゴリズムとは何か、その仕組みを理解することがなぜ重要なのか、そして代表的なコンセンサスアルゴリズムがどのように機能するのかを包括的に理解することが目標です。
コンセンサスアルゴリズムを学ぶべき理由
選択したブロックチェーン上で効果的に開発するには、次の理由からコンセンサスアルゴリズムを理解することが重要です。
- ブロックチェーンがコンセンサスに達する仕組みを知ることは、分散型アプリケーション(dApp)を開発する際のアーキテクチャ上の選択に影響します。デプロイにはどの程度のコストがかかるのか、このdAppを効果的に利用するためにユーザーは何件のトランザクションを送信すべきか、トランザクションの送信にはいくらかかるのか、といった点を検討することになります。中でも最も重要なのは、ファイナリティまでどのくらいかかるか、つまりトランザクションが承認されてブロックチェーンに追加されるまでにどの程度の時間が必要かという点です。
- コンセンサスアルゴリズムのスループットとレイテンシの特性を把握すれば、dAppのデプロイに適したブロックチェーンを選択できます。dAppのアーキテクチャについて検討することで、パフォーマンスを最適化できる箇所を把握できます。
- 各アルゴリズムのセキュリティ上の懸念を知ることで、より安全なアプリケーションを設計できます。ブロックチェーンにはどのような攻撃ベクトルがあるのか、スマートコントラクト開発の設計にどのような影響があるのかを検討できます。
- ブロックチェーンのコンセンサスアルゴリズムの内部動作を理解すれば、その投票メカニズムの細部を把握し、ガバナンスへ積極的に参加できます。
- 各コンセンサスアルゴリズム固有の経済的インセンティブを理解することは、ネットワーク参加の促進に役立ちます。ネットワークに参加して報酬を得るにはどうすればよいか、ペナルティを受けないためにどのような行動を避けるべきかを判断できます。
- コンセンサスアルゴリズムの基礎を知ることで、新しいアルゴリズムや更新されたアルゴリズムをより深く理解できます。Proof of Stakeを理解していなければ、Delegated Proof of StakeやLeased Proof of Stakeを理解することは困難です。
コンセンサスアルゴリズムとは
分散コンピューティングにおける重要な課題の一つは、一部のコンポーネントに障害が発生しても、システムの信頼できるパフォーマンスを実現することです。この問題はビザンチン将軍問題で説明されています。この問題は、障害を避けるために、システムのすべての参加者が一つの戦略に合意しなければならないという思考実験です。一部の参加者が予測不能または悪意のある行動を取る可能性があるネットワークで、合意に達することの難しさを示しています。この問題を軽減するには、信頼できる唯一の情報源を確立する、障害耐性のある連携プロセスが必要です。これにより、すべての参加者がネットワーク全体で確実に行動できます。システムが一つの信頼できる情報源について合意するためのプロセスを、コンセンサスアルゴリズムと呼びます。
信号機のない、交通量の多い都市の交差点を想像してください。車、トラック、自転車、歩行者がそれぞれ自分の進みたい方向へ進み、先に渡ろうと競い合えば、完全な混乱に陥ります。事故や誤解が起き、参加者同士の不信も生まれます。幸い、現実には信号機があります。信号機は、進むべき人と止まるべき人を示し、リアルタイムの状況に適応して秩序をもたらします。最も重要なのは、全員が信号機に従うことに合意している点です。私たちは皆、ルールと、そのルールが一律に適用されることに同意しています。
コンセンサスアルゴリズムは、ブロックチェーンにおける信号機です。トランザクションをブロックチェーンへ追加する方法のルールを定めます。有効または無効なトランザクションやブロックに「青信号」や「赤信号」を出すことで、ネットワーク全体に安全で効率的なデータの流れを生み出します。これらのルールは、安全かつ透明性のある方法で一律に適用されます。コンセンサスアルゴリズムは、ルールの範囲内で動作しながら、最適なパフォーマンスを維持するためにネットワーク状況の変化へ適応します。
コンセンサスアルゴリズムはブロックチェーンに不可欠です。これがなければ、敵対的な環境でデータを一律に検証する方法がなくなり、大混乱に陥ります。Sybil攻撃や二重支払いへの対処に疲弊し、最終的には検証を中央機関に再び頼る可能性が高いでしょう。ブロックチェーンの安全性、不変性、分散性を維持するには、コンセンサスアルゴリズムが必要です。
Proof of Workとは
Proof of Work(PoW)は暗号学的証明の一種で、一方の当事者(証明者)が特定量の計算能力を費やしたことを、もう一方の当事者(検証者)に証明します。検証者は、その消費量を容易に検証できます。ネットワーク上のDoS攻撃やスパムを抑止するため、1993年にMoni NaorとCynthia Dworkによって考案され、その後Markus JakobssonとAri Juelsによる1999年の論文で正式に体系化されました。
Proof of Workは、パーミッションレスな分散型ネットワークでコンセンサスを実現する基盤として、Bitcoinによって広く普及しました。Satoshi NakamotoはBitcoinホワイトペーパーで、仲介者を必要としない純粋なピアツーピア型電子現金をProof of Workによって実現する方法を説明しています。PoWベースのコンセンサスアルゴリズムを採用するほかの主要なブロックチェーンには、Litecoin、Kadena、Monero、Ethereum Classicがあります。では、どのように機能するのでしょうか。
仕組み
Proof of Workブロックチェーンでは、ネットワーク参加者が大量の計算能力を使って複雑な数学問題を解く必要があります。目的は、ハッシュと呼ばれる64桁の16進数を推測することです。このハッシュを見つけるのは簡単そうに聞こえますが、実際はそうではありません。ハッシュは、ブロックに含まれるすべてのトランザクション情報とランダムなnonce(「一度だけ使われる数」)を、SHA256アルゴリズムでハッシュ化した結果だからです。最初に問題を解いた参加者は、次のトランザクションブロックをブロックチェーンへ追加でき、あらかじめ定められた量の暗号資産を報酬として受け取ります。トランザクションを検証してブロックチェーンへ追加するこのプロセスはマイニングと呼ばれ、ネットワーク参加者はマイナーと呼ばれます。
メリットとデメリット
Proof of Workブロックチェーンの利点は、誰でもマイニングに参加でき、分散型ネットワークが促進されることです。PoWネットワークを攻撃するには、膨大な計算能力が必要です。そのため、単一の主体が51%攻撃を実行することは理論上可能であるものの、現実には極めて困難です。51%攻撃とは、悪意のある主体がネットワークのハッシュ能力の過半数を支配し、トランザクション履歴を操作することです。Proof of Workは比較的理解しやすいコンセンサスアルゴリズムであり、Bitcoinを通じて大規模に実装、検証されています。
一見すると有利ですが、Proof of Workには複数のデメリットがあります。マイニング用ハードウェアと電力にかかる高額なコストは、エネルギーコストが低い地域へのマイニングの集中を引き起こす可能性があり、実際にそうなっています。収益性の高いマイニングへの参入障壁が高いため、報酬が不均等に分配され、高性能なマイニング設備を購入できる参加者が有利になります。その結果、巨大なBitcoinマイニングファームが生まれました。また、エネルギー消費量が非常に多いため、さまざまな環境上の懸念も指摘されています。これは、EthereumがThe MergeというアップデートでProof of Stakeへ移行した主な理由の一つです。では、Proof of Stakeとは何でしょうか。
Proof of Stakeとは
Proof of Stake(PoS)は、Proof of Workに伴う計算量とエネルギー消費の問題を解決することを目的としています。ネットワークの安全性を計算能力に頼る代わりに、Proof of Stakeはネットワークへステークしているトークン数に基づいてバリデーターを選びます。Peercoinは、Proof of Workシステムと併用していたものの、2012年にProof of Stakeを採用した最初の暗号資産です。
仕組み
Proof of Stakeでは、マイナーの代わりに、ブロックを提案して投票するバリデーターが参加します。バリデーターは、ネットワークへのステークとして一定量のトークンをロックする必要があります。ネットワークは、ステークの規模やステークの保有期間など、複数の要因に基づいて次のトランザクションブロックを検証するバリデーターを選びます。提案されたブロックは、ほかのバリデーターによって検証され、証明されます。ブロックが有効と証明されると、ブロックチェーンへ追加されます。バリデーターは検証作業の対価として、トランザクション手数料を受け取り、場合によっては新たに発行されたトークンも獲得します。ブロックが無効と証明された場合はブロックチェーンへ追加されず、バリデーターにはペナルティが科されます。このバリデーターは「スラッシング」され、ステークの一部を失います。こうしたスラッシングペナルティは、悪意のある参加者が不正なブロックを提案したり、台帳に不整合を生じさせたりする行為を抑止するために設けられています。
メリットとデメリット
Proof of Stakeは、エネルギー消費量が多いという問題に直接対処します。EthereumがProof of WorkからProof of Stakeへ切り替えたことで、ネットワークのエネルギー消費量は99.84%削減されました。 Proof of Stakeアルゴリズムは、高いスループットを想定して設計されているため、より高速でスケーラビリティにも適しています。ファイナリティをより早く得られるよう設計されており、トランザクションは短時間で承認され、ブロックチェーンへ追加されます。バリデーターには、検証用の優れたインフラを維持する金銭的な動機もあるため、検証時間の短縮につながります。Proof of Stakeアルゴリズムは、トランザクションの並列処理やシャーディングにも適しています。シャーディングとは、ネットワークを「シャード」と呼ばれる小さな単位に分割し、それぞれが独立かつ並列にトランザクションを処理する仕組みです。
ただし、Proof of Stakeにも固有のデメリットがあります。エネルギー効率は高いものの、バリデーターの報酬はProof of Workにおける報酬より低くなる可能性があります。これにより参加者が減り、ネットワークのセキュリティが低下するおそれがあります。トークンの初期配布が適切に管理されなければ、ネットワークの公平性と分散性にも影響します。この場合、より多くのステークを持つ参加者が、ネットワークに対して不釣り合いに大きな影響力を持ちます。また、Proof of Workでは複数のフォークへ投票するには計算能力を分割する必要がありますが、Proof of Stakeのバリデーターは、複数のブロックチェーンフォークへ投票しても失うものがない可能性があります。このような行動を防ぐには、適切なスラッシング条件を設ける必要があります。
Proof of Stakeの派生方式
Proof of Stakeを採用する主要なブロックチェーンには、次のものがあります。
Ethereum
Ethereumは、Casper-FFGを組み合わせたLMD-GHOSTアルゴリズムを採用しており、Gasperと呼ばれています。LMD-GHOSTは投票を集約し、フォークが発生したときにノードが正しいフォークを容易に選択できるようにします。Casper-FFG(Casper the Friendly Finality Gadget)は、特定のブロックを「確定済み」に昇格させ、ネットワークへの新規参加者が常に正規チェーンと同期できるようにします。
Cardano
CardanoはOurobrosと呼ばれるProof of Stakeの派生方式を採用しています。これは、安全性を証明できる最初のProof of Stakeプロトコルです。査読済みの研究に基づき、スケーラビリティとセキュリティを念頭に設計されています。詳細はこちらをご覧ください。
Near
NearはThresholded Proof of Stakeを採用しています。これは、多数の参加者が特定の時間間隔で意思決定を行い、ネットワークを維持する決定論的な方式です。詳細はこちらをご覧ください。
Algorand
Algorandは、ビザンチンコンセンサスに基づく、Proof of Stakeへのより平等主義的なアプローチであるPure Proof of Stakeを採用しています。詳細はこちらをご覧ください。
このように、Proof of Stakeには多くの派生方式があります。ほとんどのProof of Stakeブロックチェーンは元の設計の派生方式を採用しつつ、独自のニーズに合わせ、特定のユースケースを最適化するために変更を加えています。最もよく知られ、広く使われている派生方式の一つがDelegated Proof of Stakeです。
Delegated Proof of Stakeとは
Delegated Proof of StakeはProof of Stakeを発展させたもので、ブロックチェーンの検証プロセスの効率性と民主性を高めるために設計されています。2014年にDaniel Larimerによって開発され、その後、BitShares、EOS、TRON、SUIなど、複数の主要なブロックチェーンに実装されています。
仕組み
Delegated Proof of Stakeでは、トークン保有者が自分たちに代わって新しいブロックを検証、作成するデリゲートのグループに投票します。デリゲートはトークン保有者によって選出され、投票力は保有するトークン量に応じて決まります。ユーザーはトークンをステーキングプールへ集約し、特定のデリゲートへ紐付けることで投票します。デリゲートは、悪意のある行為や十分な稼働時間を維持できなかった場合に投票で解任されるため、誠実に行動するインセンティブがあります。デリゲートがブロックを検証すると、対応するトランザクション手数料を報酬として受け取ります。その後、各ユーザーのステークに基づいて、支援者へ報酬を分配します。重要なのは、デリゲートが公開スケジュールに従い、決定論的にブロックを検証する点です。各ブロックのデリゲート数には上限があるため、デリゲートは定期的に入れ替えられます。
メリットとデメリット
Delegated Proof of Stakeには、Proof of Stakeの多くの利点があります。誰でもデリゲートになれること、参入障壁が低いためアクセスしやすく分散性が高いこと、必要なデリゲート数が限られているためパフォーマンスが向上すること、ネットワークの運用に多くの電力を必要としないことです。
ただし、Delegated Proof of Stakeも完璧ではありません。新しい各ブロックに必要なデリゲート数が限られているため、少数のグループがトランザクション検証やガバナンス上の意思決定に不釣り合いな影響力を持つという懸念があります。この上限により、デリゲート同士が共謀して悪意のある行動を取る可能性が生まれ、51%攻撃に必要なハードルが大幅に下がります。トークン保有者がデリゲートへ賄賂を渡し、代わりに悪意のある行動を取らせる可能性もあります。さらに重要なのは、ユーザーにデリゲート選挙への参加義務がないことです。有権者の無関心によって、前述した中央集権化のリスクが悪化するおそれがあります。
Proof of Historyとは
Proof of Historyはコンセンサスアルゴリズムではありません。
より正確には、コンセンサスの実現を支援するコンポーネントです。混同されやすいのは、おそらくその名称が原因です。Proof of WorkやProof of Stakeを知っている人にとって、「Proof of X」という用語はコンセンサスアルゴリズムを連想させます。Proof of HistoryはSolanaのアーキテクチャの基盤であり、トランザクションの順序付けとプログラム実行に深く組み込まれています。ネットワーク内で目立つ存在であるため、Solanaのコンセンサスアルゴリズムだと誤解しやすいのです。
では、コンセンサスアルゴリズムではないのに、なぜ取り上げるのでしょうか。Proof of Historyは、分散システムの根本的な問題である、時間についての合意、つまりイベントの順序付けに対処します。SolanaはProof of Historyを一種の「プレコンセンサス」アルゴリズムとして使用し、コンセンサスを効率化してトランザクションを効率的に処理します。これにより、バリデーターはトランザクションを並列処理でき、スループットが向上し、レイテンシが低下します。したがって、Proof of Historyはコンセンサスの実現を支援するコンポーネントです。Proof of Historyは、ネットワークの分散型時計と考えると理解しやすいでしょう。第三者に頼ることなく、時間とイベントが発生した順序を証明する方法を提供します。
従来のアプローチの欠点
従来、ブロックチェーンは、多数のトランザクションをまとめた大きな単位であるブロックを基準に同期します。つまり、特定の時間が経過するまでトランザクションを処理できません。これはブロックタイムと呼ばれます。Proof of Workでは、複数のバリデーターが同時に新しいブロックを生成する可能性を下げるため、ブロックタイムを長くする必要があります(Bitcoinでは約10分ごとにブロックが生成されます)。Proof of Stakeにはこの制約はありませんが、バリデーターが受信ブロックの順序を判断するにはタイムスタンプが必要です。一般的な回避策は、各ブロックに実時間のタイムスタンプを付けることです。ただし、このタイムスタンプが有効なのは、直前の11ブロックのタイムスタンプの中央値より後で、かつ「ネットワーク調整時刻」に2時間を加えた時刻より前である場合に限られます。ネットワーク調整時刻とは、接続しているすべてのノードから返されたタイムスタンプの中央値です。時計のずれやネットワークレイテンシがあるため、最適な解決策とはいえません。では、どうすればよいのでしょうか。
Proof of History
Solanaは、この問題に対してProof of Historyと呼ばれる革新的なアプローチを取ります。簡単に言えば、Proof of Historyは敵対的なネットワークで時間を証明する方法です。Proof of Historyは暗号学的なタイムスタンプ関数として機能し、ノード同士が通信しなくてもイベントの順序に合意できるようにします。これは、逐次的な原像計算困難性を持つハッシュ関数(逆算が困難な関数)を使用し、それぞれのハッシュが直前のハッシュに依存するハッシュチェーンを作成することで実現します。リーダーノードは、これらの暗号学的証明を使ってブロックにタイムスタンプを付け、直前の証明から一定時間が経過したことを証明します。すべてのハッシュが連結されているため、特定の時点にデータが存在していたことを証明する履歴記録が作成されます。
この独自のアプローチは、計算に非常に長い時間がかかる一方、出力はすばやく検証できる関数であるVerifiable Delay Functions(VDF)に依存しています。Verifiable Delay Functionsは、直前のハッシュだけでなく、経過時間にも依存するハッシュの作成に使われます。これにより、検証可能なイベントのタイムラインを作成できます。一つのハッシュを改ざんすると、それ以前のすべてのハッシュを再計算しなければならないため、Verifiable Delay Functionsによってこの仕組みが保証されます。検証可能なイベントのタイムラインが一つしかないため、Solanaにさらなるセキュリティと整合性をもたらします。
簡単なたとえ
取引や告知、議論、争いでにぎわう中世の町を想像してください。この町では、重要な知らせを大声で伝え、全員が同じ情報を共有できるようにする触れ役が、中心的な情報源となっています。ある日、触れ役が病気になり、役目を果たせなくなりました。町は混乱に包まれます。いつ何が起きたのか、誰が何を言ったのか、すべての出来事がどのような順序で起きたのかについて、誰も合意できません。
そこへ、非常に几帳面な書記が現れます。書記は町の広場の中央に座り、特別なインクと羽根ペンを使って、すべての出来事を日誌に記録します。このインクは特殊で、日誌の直前の記録に応じて色が変わります。誰もが書記の日誌を参照するだけで、一人ひとりに尋ねて回ることなく、出来事の順序と時刻の両方を確認できます。この日誌は町にとって議論の余地のない信頼できる情報源となり、人々は触れ役なしでも重要な告知ができるため、触れ役は不要になります。色が変わるインクによって、過去のすべての記録を検証できる、永続的で不変の信頼できる情報源が確保されます。町をネットワークに、日誌を台帳に、色が変わるインクを暗号学的ハッシュ関数に置き換えれば、最も信頼性の高い同期方法の一つになります。これがProof of Historyの力です。
メリットとデメリット
Proof of Historyにより、ブロックタイムを短縮し、1秒あたり多数のトランザクションを処理し、コンセンサスの前に検証可能な単一の時間基準を確立できます。リソースの最適化も可能です。ノードはコンセンサスを待たずにトランザクションを処理できるため、並列性が高まり、計算能力を効率的に利用できます。Verifiable Delay Functionsを使うことで、トランザクションを変更するには逐次ハッシュの再計算が必要となり、セキュリティ層がさらに追加されます。この作業には多大なコストがかかり、容易に検出できます。さらに、暗号学的タイムスタンプにより、誰でもトランザクションの順序と時刻を検証できます。実時間のタイムスタンプが有効かどうかを心配することなく、トランザクションがいつ発生したかを確実に把握できます。これは、暗号資産の理念の中核をなす透明性と説明責任を促進します。
とはいえ、Proof of Historyも完璧ではありません。このモデルはSolanaのネットワークアーキテクチャを大幅に複雑化させるため、理解しにくくなり、バグや脆弱性のリスクを高める可能性があります。Verifiable Delay Functionsに必要な計算はリソースを大量に消費するため、Solanaノードにはより高性能なハードウェアが必要です。短期的には、ネットワークへ参加するコストが増加します。ムーアの法則により、かつては高価だった高性能ハードウェアが入手しやすく手頃になるため、このハードウェア障壁は時間とともに低下するはずです。ムーアの法則とは、マイクロチップ上のトランジスタ数がおよそ2年ごとに倍増し、それに伴って計算能力も向上するという観察則です。
まとめ
お疲れさまでした。このチュートリアルでは、コンセンサスアルゴリズムの詳細、その定義、学ぶべき理由、主要な実装について掘り下げました。これで、コンセンサスアルゴリズムを幅広く理解できたはずです。これらのアルゴリズムを理解することは、単なる学術的な取り組みではなく、実務上の必要事項です。開発対象となるネットワークの基礎を理解できるため、堅牢で効率的なアプリケーションを構築する能力に直接影響します。また、自分が参加するブロックチェーンコミュニティに有意義な形で貢献できるようになります。急速に進化するブロックチェーン技術の世界では、この知識が不可欠です。
今後は、さらに革新的なコンセンサスアルゴリズムが登場すると予想されます。現在のモデルも、スケーラビリティ、セキュリティ、効率性に関する最新の課題へ対応するために、更新や調整が加えられるでしょう。投資家、開発者、ブロックチェーン愛好家のいずれにとっても、このような独自技術に関わるには刺激的な時代です。コンセンサスアルゴリズムへの理解があれば、イノベーションの最前線に立ち、成長を続けるこの分野を進んでいけます。
ここまで読んでくださった皆さん、ありがとうございます!
その他のリソースと参考資料
関連記事
Heliusを購読
Solana開発の最新情報や新しい記事の公開通知を受け取れます


