Blog

「東大ブロックチェーン公開講座2025」第4回レポート:非中央集権システムはいかに合意するのか― Bitcoin / Ethereum のコンセンサスアルゴリズムを掘り下げる ―

0. はじめに

こんにちは。
24年卒SD部のM.Mです。
本記事は「東大ブロックチェーン公開講座2025」第4回レポート として、第15〜19講義の内容を中心にまとめております。

このブログシリーズは、23〜25 年卒の若手エンジニア 4 名がリレー形式で担当しており、今回が最終回となります。

第1回レポート「BitcoinとEthereumの仕組みを徹底解説!」では、BitcoinとEthereumの仕組みの概要が解説されていたと思います。
本記事では、BitcoinとEthereumの仕組みを技術的にさらに掘り下げ、特に両者の非中央集権システムを支える「合意形成」を実現するコンセンサスアルゴリズム※に焦点を当てます。

※コンセンサスアルゴリズムとは:非中央集権システムにおいて合意形成を可能にする仕組み。「みんなの合意を得るための投票」というより、「分散した参加者が同じ正統なチェーンに自然に収束する」ためのアルゴリズムです。


目次

0. はじめに:本記事の位置づけと概要

1.Proof of Work(PoW):Bitcoinのコンセンサス
 1-1. Proof of Work(PoW)とは
 1-2. 計算競争の仕組み
 1-3. difficulty targetの詳細

2.Proof of Stake(PoS):Ethereumのコンセンサス
 2-1. Proof of Stake(PoS)とは
 2-2. PoSの流れ
 2-3. PoSにおける投票(アテステーション)とは?

3.PoWとPoSの比較:PoWからPoSへの移行がもたらしたもの

4.まとめ:非中央集権システムのコンセンサス

1.Proof of Work(PoW):Bitcoinのコンセンサス

1-1. Proof of Work(PoW)とは

非中央集権システムであるBitcoinにおいて、合意形成はどのように行われているのでしょうか?
それを可能にしている技術がProof of Work(PoW)になります。

Proof of Work(PoW)とは、「誰が新しいブロックを作成するのか」を計算競争によって決める仕組みです。

この仕組みの狙いは「ブロックを新たに作成すること」にコスト(計算資源)を設けることにあります。
コストを設けることには以下の目的があります。

  ・スパム攻撃対策(コストがないと、マイナー※が無効なブロックを大量に流せてしまうため)
  ・報酬として新規発行されるbitcoinに価格をつけるため
   (新規発行されるbitcoinに希少性が生まれることで経済的価値につながる)

※マイナー:新しいブロックを生成してチェーンに追加する「マイニング(採掘)」という作業を行う個人や組織

1-2. 計算競争の仕組み

計算競争によって新しいブロックを作る(マイニング)する人を決めるということですが、それではどのように計算競争を行うのでしょうか?
続いてはその仕組みを詳しく見ていきます。

計算競争の仕組みは、計算問題を解くというより、以下のようなルールのくじ引きに近いものです。

  ・あたりが出るまで何度もくじを引き続ける
  ・計算資源を多く投入するほど、1秒あたりに多くのくじを引くことができる
  ・最も早くあたりを引いた人が、その証拠をブロックに追加することでブロックを完成させることができる

このくじ引きは、技術的には以下のような仕組みになっています。

このくじ引きには、マイナーが作成するブロックと、「difficulty target」という特殊な値を用います。
ブロックのヘッダーの構造は以下のようになっており、その中にnonceという値が存在します。

マイナーは、以下の工程を繰り返すことによってブロックのハッシュ値が「difficulty target」未満になるnonceを探します。

  1. ブロックヘッダーの中のnonceを変える
  2. ブロックヘッダー全体のハッシュ値を算出する
  3. ブロックヘッダーハッシュ<difficulty target になるかを確認する

ハッシュ関数の「入力値から出力値を予測できない」という性質上、nonceは1つ1つ探っていくしかありません。そのため、1回1回が独立したくじ引きとして機能します。


1-3. difficulty targetの詳細

difficulty target は4 bytesの値で、初めの1byteが指数 (exponent)、残りの3bytesが係数 (coefficient)になっています。
これを以下の公式に当てはめて計算すると大変小さな値(target)になり、この計算値が小さければ小さいほど、あたりを引く難易度は上がります。

target = coefficient*2(8*(exponent-3))


例)0x1903a30c
  この例の場合、

    指数→19
    係数→03a30c


  になります。

これを公式に従って計算すると…

target = 0x03a30c 20x08(0x19-0x03)

target = 0x03a30c 2(0x080x16)

target = 238,348 2822

target = 238,348 * 2176

target =

22,829,202,948,393,929,850,749,706,076,
701,368,331,072,452,018,388,575,715,328

target =

0x0000000000000003A30C000000000000

00000000000000000000000000000000

実際に計算すると、上記のように、計算値が大変小さな値になることが分かります。
このようにdifficulty targetの計算値によって難易度(=計算を解く速度=ブロック生成間隔)を調整しています。



2.Proof of Stake(PoS):Ethereumのコンセンサス


2-1. Proof of Stake(PoS)とは

Bitcoinでは、合意形成を可能にする技術としてProof of Work(PoW)が使われていることを見てきました。
一方、EthereumではBitcoinとは異なるコンセンサスアルゴリズムが使われています。
それがProof of Stake(PoS)です。

Proof of Stake(PoS)では、ブロック作成時に計算資源を投入する代わりにETH※を預けます(これを「ステークする」と言います)。
※Ethereum内で使用される基幹暗号資産(仮想通貨)


2-2. PoSの流れ

ETHを預けた参加者は「バリデータ」となります。
バリデータの中から、

 ブロックの提案者
 ブロックやチェーンの正しさの検証者・投票者

が選ばれます。


バリデータには以下の2つの役割があり、その2つの役割が確率的に割り当てられます。
その役割に対して正しく処理をしていれば報酬を受けることができますが、不正をすると罰則があります。


①ブロック提案

新しいブロックを生成する。報酬は多めである。

②投票(アテステーション)

チェーンの正しさを検証し、投票する。

その後、選ばれた提案者がブロックを作成します。
そして、他のバリデータ(投票者)がブロックを確認して投票します。
正しいと承認されればチェーンに追加され、ここでブロックが正式に確定します。


2-3. PoSにおける投票(アテステーション)とは?

PoSでは、正しいチェーンを決めるために投票という制度を用います。
(PoWの計算競争に代わる仕組み)
より多数のバリデータが投票したチェーンが正統なチェーンとして認められますが、投票と言っても「人気投票」ではありません。

投票対象は以下の2種類あります。

①どのブロックが先端か?
②どのエポックが先端か?


PoSでは、スロット(slot)とエポック(epoch)という時間単位が存在します。
スロット(slot)とは、12秒ごとに時間が区切られた時間で、1スロット=12秒です。

エポック(epoch)とは、ある一定量のスロットをまとめた大きな時間単位で、32スロット=1エポックとなっています。



各スロットでは、1人のバリデータが提案者として選出され、その提案者がそのスロットにおいてブロックを作成することができます。
各スロットに割り当てられた提案者以外の参加者は、投票者としてその作成されたブロックの正統性を認めるアテステーション(認証・証明)を生成します。
これにより、ブロックの分岐(フォーク)を解決することができます。

例)投票によってブロックの分岐を解決する場合


Slot 6:提案者がB6を作る

しかし…
各ノードの受信状況が異なる場合

ノードA:B6を受信した 
ノードB:B6がまだ届いてない 

という状況が発生しうる


Slot 7:Slot6とは別の提案者がB6を作る
Slot7 の提案者がノードB側(B6未受信)にいた場合


B6がまだ届いていないので、自分のチェーンの先端はB5
→自分の取得できている範囲の先端にB7をつけるしかない

Slot7 提案者はB5の先端(古い先端)にブロックをつけてしまう
すると、

  • B5の次にB6がついているノード
  • B5の次にB7がついているノード

の両方が存在する

=チェーンが分岐している状態になってしまう

このような場合に投票結果が以下のようになると、

B6:80%の投票
B7:20%の投票

→正統チェーンは B6 に決まる
→チェーンはただ1つに絞られる


また、各エポックの最初のスロットで提案されたブロックを「checkpoint」と呼びます。
この「checkpoint」に対して、各バリデータが投票するのが

②どのエポックが先端か?

になります。
2/3以上の投票が集まった「checkpoint」が正統と判断され(justified)、その「checkpoint」以前のチェーンが正統チェーンとして確定されます(finalized)。
こうして、ネットワーク上でチェーンの唯一性が担保されます。


3.PoWとPoSの比較:PoWからPoSへの移行がもたらしたもの


PoWとPoSの違いは、以下のようにまとめることができます。

項目

PoW (Bitcoin)

PoS (Ethereum)

合意形成方法

計算競争

資産(ETH)を預けた参加者(バリデータ)による投票

参加に必要となる資源

(=セキュリティの源泉)

計算資源(ハッシュパワー)

資産(ETH)

スケーラビリティ

ブロック間隔を短くするとフォークが起こりやすくなる

投票と署名の検証がメインの計算処理のため、ブロック間隔を短くしやすい

外部経済性

報酬=BTCという内部トークン

コスト=電力という外部資源

報酬・罰則ともにETHという内部トークン

環境負荷

計算のために利用する大量の電力消費

電力消費はPoWほど多くは必要ない

イーサリアムは2022年の「The Merge」という大型アップグレードによりPoWからPoSに移行しました。

これにより、電力消費量とスケーラビリティが改善したと言われています。

PoWでは計算競争によってマイナーを決めますが、その際、計算処理に大量の電力消費を必要とします。

しかしPoSは、計算ではなくETHのステークによってマイナーを決定するため、PoWほど大量の電力消費を必要としません。

そのため、PoWからPoSへの移行により、電力消費量とそれによる環境負荷が大きく改善されました。

また、PoWとPoSのブロック生成時の処理の重さの違いにより、スケーラビリティの向上可能性が変わってきます。

PoWでは、世界中のマイナーが同時に計算競争を行っています。

そのため、より短時間で解けてしまう計算問題を設定してブロック生成間隔を短くし過ぎると(現行は10分)、

新たなブロックが生成された情報が全体に伝わる前に別のブロックが新たに生成されてしまい、フォーク(分岐)が発生しやすくなります。

そのため安全性のためにブロック間隔を長く設定する必要があり、スケーラビリティに限界があると言えます。

例)PoWにおいて、ブロック生成間隔の短さによりフォークが発生してしまう場合

  Aがブロックを生成
  しかし、Bの元にはAがブロックを生成した情報が届いていない

  →その状態のまま、Bもブロックを生成してしまう

  →Aが作ったブロックが先端にあるチェーンと、

   Bが作ったブロックが先端にあるチェーンの2通りに分岐してしまう

一方PoSでは、事前にブロック生成者が割り当てられ(ブロック生成担当のバリデータ)、それに対する投票と署名がブロック生成処理の中心になります。

そのため、PoWに比較して処理が軽く(署名と検証がメインのため)、割り当てられたブロック生成担当者がブロックを生成しさえすれば、ブロックの生成間隔を短くしてもフォークが発生しにくいと言えます。

そのため、スケーラビリティを改善しやすい仕組みとなっています。


4.まとめ:非中央集権システムのコンセンサス

BitcoinとEthereum のコンセンサスアルゴリズムについて、いかがだったでしょうか。

今回は2つの非中央集権システムの合意を可能にしている技術について掘り下げてみました。

PoWとPoSのいずれも、「人間の意図的な関与なく自動的に合意形成する」=「ネットワークの参加者すべてのチェーンを1つの同じチェーンに収束させる」ことを可能にする点で共通しているといえます。

ここまで全4回にわたり、「東大ブロックチェーン公開講座2025」の内容をご紹介してきました。

このブログを通して、ブロックチェーン技術への理解を少しでも深めていただけましたら幸いです。

最後までご覧いただきありがとうございました。