Proof of Work(PoW)とは、コンピューターに大量の計算をおこなわせ、その計算作業を実行したことを証明する仕組みです。日本語では「プルーフ・オブ・ワーク」と呼ばれます。
暗号資産の分野では、特にBitcoinのネットワークを支える重要な仕組みとして知られています。Bitcoinでは、マイナーが膨大な回数のハッシュ計算を繰り返し、一定の条件を満たすハッシュ値を見つけることで、新しいブロックをブロックチェーンへ追加する権利を競います。
Proof of Workの重要な特徴は、「計算するのは非常に大変だが、計算結果が正しいかどうかの確認は比較的簡単」という点にあります。この性質によって、中央管理者が存在しないネットワークでも、誰が次のブロックを追加するかを決めるためのルールを構築できます。
Proof of Workは単に「難しい計算をする仕組み」ではありません。計算に必要なコストをネットワーク上の合意形成に利用し、ブロックの改ざんや二重支払いを困難にすることが本質です。
Proof of Workの基本的な意味
Proof of Workを直訳すると「仕事の証明」や「作業の証明」という意味になります。ここでいう「Work」は、人間が何かの作業をしたという意味ではなく、一定量の計算資源を使って計算作業をおこなったことを指します。
コンピューターが特定の条件を満たす値を探すために大量の計算を繰り返すと、その作業には電力やコンピューティング能力が必要になります。一方、その結果として得られた値が条件を満たしているかどうかは、第三者が少ない計算で確認できます。
この「作るにはコストがかかるが、検証は容易」という非対称性が、Proof of Workの中心的な考え方です。
| 項目 | 内容 |
|---|---|
| 名称 | Proof of Work |
| 略称 | PoW |
| 日本語 | プルーフ・オブ・ワーク |
| 主な用途 | 分散型ネットワークにおける合意形成、ブロック生成、二重支払い対策など |
| 代表的な採用例 | Bitcoin |
| 基本的な特徴 | 計算には大きなコストが必要だが、結果の検証は容易 |
BitcoinにおけるProof of Work
Bitcoinでは、中央銀行や銀行のような単一の管理者が取引を承認しているわけではありません。世界中の参加者がネットワークを構成し、取引情報を共有しながら一つのブロックチェーンを維持しています。
ここで問題になるのが、次にどのブロックを追加するのか、そして複数の参加者が異なるブロックを提示した場合にどのチェーンを正しいものとして扱うのかという点です。
Proof of Workは、この問題を解決するための重要な仕組みとしてBitcoinに組み込まれています。Bitcoinのホワイトペーパーでは、分散型のタイムスタンプサーバーを実現するために、Hashcashに類似したProof of Workを利用する方式が説明されています。
Bitcoinでは、マイナーがブロックヘッダーの内容を何度も変更しながらハッシュ計算をおこない、ネットワークが定めた条件を満たすハッシュ値を探します。条件を満たしたブロックがネットワークへ送信され、他のノードによって検証されます。
なぜ計算をする必要があるのか
中央管理者が存在するシステムでは、銀行や決済会社などが取引の順序を管理できます。しかし、Bitcoinのような分散型ネットワークでは、その役割を特定の管理者に集中させないことが重要です。
そこでBitcoinでは、ブロックを作成するために計算上の競争をおこないます。マイナーは計算能力を投入し、条件を満たすハッシュを誰よりも先に発見することを目指します。
つまり、単純に「自分が次のブロックを作りたい」と宣言するだけでは不十分です。ネットワークが要求する計算作業を実際におこなったことが必要になります。
Proof of Workの仕組み
BitcoinのProof of Workでは、ブロックヘッダーをハッシュ関数によって繰り返し計算します。ハッシュ関数とは、入力データから一定の長さの値を生成する関数で、同じ入力からは同じ結果が得られる一方、入力を少し変更すると結果が大きく変化する性質を持っています。
BitcoinではSHA-256を利用したハッシュ計算がおこなわれます。マイナーはブロックヘッダーに含まれる値などを変更しながら計算を繰り返し、指定されたターゲット値以下のハッシュ値を探します。
Nonceとは
計算結果を変えるために利用される代表的な値がNonce(ナンス)です。Nonceはブロックヘッダーに含まれる数値で、マイナーはこの値を変更しながらハッシュを計算します。
たとえば、あるNonceでは条件を満たさなかったとしても、別のNonceを入力してハッシュ計算をすると全く異なる結果が得られます。これを大量に繰り返し、条件を満たす値を探索します。
なぜ総当たりに近い方法になるのか
暗号学的ハッシュ関数では、入力をわずかに変えただけでも出力が予測困難な形で変化します。そのため、特定の条件を満たすハッシュをあらかじめ計算式から導き出すことは困難です。
マイナーは「このNonceなら成功する」と簡単に予測できるわけではなく、多数の候補を試していく必要があります。これが大量の計算能力を必要とする理由です。
ターゲットと難易度
Bitcoinでは、ブロックヘッダーのハッシュ値が一定のターゲット(Target)以下になることがProof of Workの条件です。
ターゲットは、ハッシュ値が取り得る範囲の中から「ここより小さい値なら有効」とする境界値です。ターゲットが小さくなるほど条件を満たすハッシュは見つかりにくくなるため、必要な計算量は増加します。
一般にBitcoinの「難易度(Difficulty)」が高いということは、ブロック生成に必要な平均的な計算量が大きいことを意味します。
| 概念 | 意味 |
|---|---|
| ハッシュ | 入力データから生成される固定長の値 |
| Nonce | ハッシュ結果を変えるために試行される値の一つ |
| Target | ブロックハッシュが満たす必要がある境界値 |
| Difficulty | ブロック生成の難しさを表す指標 |
| ハッシュレート | 一定時間あたりに実行できるハッシュ計算量 |
マイニングとProof of Workの関係
Bitcoinにおけるマイニングは、取引を含む新しいブロックを作成し、そのブロックをネットワークへ追加するための活動です。その中核にある計算作業がProof of Workです。
マイナーは、ブロックに含める取引を選択してブロックを構成し、ブロックヘッダーを作成します。その後、Nonceなどの値を変更しながらハッシュ計算を繰り返し、ネットワークが設定した条件を満たすハッシュを探します。
マイニングの大まかな流れ
- ネットワーク上で承認待ちの取引が集められる。
- マイナーがブロックに含める取引を選択する。
- 前のブロックのハッシュなどを含むブロックヘッダーを構成する。
- Nonceなどを変更しながらハッシュ計算を繰り返す。
- ターゲット条件を満たすハッシュが見つかる。
- 作成したブロックをネットワークへ送信する。
- 他のノードがブロックとProof of Workを検証する。
- 有効なブロックとしてチェーンに追加される。
マイナーは「正解を計算で導き出す」というより、条件を満たすハッシュが偶然見つかるまで大量の候補を試しています。そのため、ハッシュレートが高いほど、一定時間内に解を発見できる確率が高くなります。
Proof of Workとブロックチェーン
Bitcoinの各ブロックには、直前のブロックを示すハッシュ値が含まれています。そのため、ある過去のブロックの内容を変更すると、そのブロックのハッシュが変化し、後続ブロックとのつながりにも影響します。
さらに、変更したブロック以降のProof of Workも再び計算し直さなければなりません。後続ブロックが増えるほど、過去のブロックを改ざんするために必要な計算量は大きくなります。
改ざんが難しくなる理由
たとえば、あるブロックの取引内容を攻撃者が変更したとします。取引内容が変わればブロックのハッシュも変化します。そのままでは後続ブロックに記録された前ブロックのハッシュと一致しなくなるため、変更したブロックだけでなく、それ以降のブロックについても再計算が必要になります。
しかも、その間にも正規のネットワークでは新しいブロックが追加されていきます。したがって、攻撃者は追いつくために非常に大きな計算能力を必要とします。
ブロックが積み重なるほど、過去の記録を書き換えるために必要な計算作業が増えることが、BitcoinにおけるProof of Workの重要な役割の一つです。
Proof of Workと二重支払い問題
Bitcoinが解決しようとした重要な問題の一つが二重支払い(Double Spending)です。二重支払いとは、同じBitcoinを異なる相手に重複して使用しようとする問題を指します。
中央管理者がいる電子決済システムであれば、管理者が取引履歴を確認して「どちらの取引を有効とするか」を決めることができます。しかし、Bitcoinでは特定の管理者にその判断を任せません。
そこで、ブロックを時系列につなぎ、そこにProof of Workによる計算コストを組み込むことで、どの取引履歴を正当なものとして扱うかをネットワーク上で決定します。
Proof of Workとコンセンサス
暗号資産の文脈でいうコンセンサスとは、ネットワーク参加者がどの状態を正しいものとして扱うかについて合意する仕組みを指します。
Proof of Workでは、単純に参加者の人数を数えるのではなく、ネットワーク上で投入された計算作業を利用してチェーンの優位性を判断します。
Bitcoinの実装では、単純な「最も長いチェーン」という説明だけでは十分ではなく、実際には最も多くのProof of Workが投入されたチェーンが重要になります。各ブロックのProof of Workの量は必ずしも同一ではないためです。
Proof of Workを「1人1票」のような一般的な多数決と考えると、仕組みを誤解しやすくなります。Bitcoinでは、ネットワークのルールそのものを計算能力だけで自由に変更できるわけではありません。あくまで有効なブロックをどのチェーンとして扱うかという、分散型ネットワークにおける合意形成に計算作業が利用されています。
Proof of Workの難易度調整
Bitcoinでは、マイニングに参加する計算能力が増減しても、ブロックが極端に速く、または遅く生成され続けないように難易度が調整されます。
Bitcoinでは原則として2,016ブロックごとに難易度が調整されます。目標となる生成間隔から実際のブロック生成速度を比較し、次の期間の難易度を調整します。
2,016ブロックは、目標とされる平均約10分のブロック間隔で計算すると、およそ2週間に相当します。
| ネットワークの状態 | 難易度への影響 |
|---|---|
| ブロックが目標より速く生成される | 難易度が上がる方向に調整 |
| ブロックが目標より遅く生成される | 難易度が下がる方向に調整 |
| 計算能力が増加する | 難易度上昇によって生成速度を調整 |
| 計算能力が減少する | 難易度低下によって生成速度を調整 |
ハッシュレートとの関係
ハッシュレートとは、マイニングに利用される計算能力を表す指標です。単位時間あたりにどれだけ多くのハッシュ計算を実行できるかを示します。
ネットワーク全体のハッシュレートが上昇すると、同じ難易度のままではブロックがより速く見つかる可能性があります。そのためBitcoinでは、一定のブロック数ごとに難易度を調整することで、長期的なブロック生成間隔を安定させています。
Proof of Workと51%攻撃
51%攻撃とは、一般的にはネットワークの大部分を占める計算能力を攻撃者が支配し、ブロックチェーンの一部の取引履歴を書き換えたり、二重支払いを試みたりする攻撃を指します。
Bitcoinでは、攻撃者が過去のブロックを変更した場合、そのブロック以降のProof of Workを再計算する必要があります。さらに、正規のチェーンが伸び続けるため、攻撃者は正規チェーンに追いつき、その後も上回るだけの計算能力を必要とします。
そのため、Proof of Workは攻撃を理論上不可能にする仕組みではなく、攻撃に必要な計算コストを非常に大きくすることで攻撃を困難にする仕組みと理解することが重要です。
51%攻撃で可能になることと、ならないこと
計算能力の大部分を支配したとしても、攻撃者がBitcoinのルールを自由に変更できるわけではありません。ネットワークのノードは、無効な取引やルールに反するブロックを受け入れるわけではありません。
一方で、攻撃者が自分の過去の取引を取り消すためのチェーンを作るなど、取引履歴の順序に関する攻撃を試みる可能性があります。この点から、Proof of WorkはBitcoinの取引履歴を保護する重要な防御層の一つといえます。
Proof of Workのメリット
メリット
- 中央管理者に依存せず、計算作業を利用して合意形成をおこなえる
- 過去のブロックを改ざんするコストを大きくできる
- ブロック生成に必要な計算作業を誰でも検証できる
- ネットワークに大量の計算能力を投入することで攻撃コストを高められる
- 計算能力の増減に応じて難易度を調整できる
デメリット
- 大量の計算をおこなうため、多くの電力を消費する
- 高性能な専用マイニング機器が必要になりやすい
- マイニング設備への投資負担が大きくなる
- 計算能力の集中がネットワーク上の論点になることがある
- 電力価格や設備効率などの経済条件に大きく左右される
Proof of Workのデメリットと電力消費
Proof of Workについて議論されることが多いのが、マイニングに伴う電力消費です。
条件を満たすハッシュを見つけるためには、多数のハッシュ計算を繰り返す必要があります。計算能力を高めればブロックを発見できる確率を高められるため、マイナーは高性能な専用機器を大量に稼働させるインセンティブを持ちます。
これはProof of Workの弱点であると同時に、仕組みそのものの重要な特徴でもあります。計算作業に電力や設備コストが必要だからこそ、攻撃者が大量の計算能力を用意する際にも経済的な負担が生じるためです。
Proof of WorkとProof of Stakeの違い
暗号資産のコンセンサスアルゴリズムとして、Proof of Workと比較されることが多いのがProof of Stake(PoS)です。
Proof of Workでは主に計算能力を利用してブロック生成の競争をおこなうのに対し、Proof of Stakeでは暗号資産をネットワーク上に預け入れる「ステーク」を利用して、ブロック生成や検証に参加する仕組みを構築します。
| 比較項目 | Proof of Work | Proof of Stake |
|---|---|---|
| 略称 | PoW | PoS |
| 主な資源 | 計算能力 | ステークとして預け入れた暗号資産 |
| 代表的な参加方法 | マイニング | ステーキング、バリデーションなど |
| 主なコスト | 計算機器、電力など | 資産をステークすることによる機会費用など |
| 代表例 | Bitcoin | Ethereumなど |
両者は、分散型ネットワークで中央管理者なしに合意形成をおこなうという目的は共通していますが、信頼を形成するために利用する資源が異なります。
Proof of Workで知っておきたい関連用語
ハッシュレート
ハッシュレートは、マイニングに利用される計算能力を表す指標です。一般的には毎秒あたりのハッシュ計算回数で表されます。ネットワーク全体のハッシュレートが高いほど、同じ時間内に多くの計算を試行できます。
マイニング
マイニングは、BitcoinなどのProof of Workを採用するネットワークで、計算作業をおこないながら新しいブロックの生成を競う活動です。マイナーは有効なブロックを生成することで、ブロック報酬や取引手数料を得る機会があります。
ブロックヘッダー
ブロックヘッダーは、ブロックに含まれるメタデータをまとめた部分です。Bitcoinでは、バージョン、前のブロックのハッシュ、Merkle root、タイムスタンプ、難易度を示す情報、Nonceなどが含まれます。
ハッシュ関数
ハッシュ関数は、入力データから一定の長さの出力を生成する関数です。BitcoinのProof of WorkではSHA-256を利用したハッシュ計算が中心的な役割を果たします。
コンセンサスアルゴリズム
コンセンサスアルゴリズムとは、分散型ネットワークに参加する複数のノードが、どの取引やブロックを正しいものとして扱うかを決めるための仕組みです。Proof of Workは、その代表的な方式の一つです。
Proof of Workを理解するときの注意点
Proof of Workを理解する際には、「計算量が多ければ多いほど正しい」という意味ではない点に注意が必要です。
まず、ブロックそのものがBitcoinのルールに従っている必要があります。取引が無効であったり、コンセンサスルールに違反していたりするブロックは、どれだけ計算作業をおこなっていても正当なブロックにはなりません。
また、Proof of Workは「改ざんを数学的に不可能にする技術」でもありません。より正確には、改ざんに必要な計算量と経済的コストを非常に大きくし、攻撃を現実的に困難にする仕組みです。
Proof of Workの「Proof」は、ブロックの内容がすべて正しいことを数学的に証明するという意味ではありません。主に、必要な計算作業をおこなって条件を満たすハッシュを見つけたことを検証可能にする仕組みを指します。
Proof of Workの本質
BitcoinにおけるProof of Workの本質は、デジタルな合意形成に現実世界のコストを結び付けることにあります。
デジタルデータは容易にコピーできます。しかし、計算作業には電力、設備、時間などのコストが発生します。Bitcoinはこの性質を利用し、ブロックを生成するための計算競争をネットワークのルールに組み込んでいます。
その結果、過去のブロックを書き換えようとする攻撃者は、単にデータを書き換えるだけでは済まず、変更したブロック以降の計算作業をやり直し、さらに正規のチェーンに追いつくための計算能力を用意する必要があります。
つまりProof of Workは、計算コストを利用してブロックチェーンの履歴に経済的な「重み」を持たせる仕組みと捉えることができます。
まとめ
Proof of Work(PoW)は、コンピューターに大量の計算作業をおこなわせ、その作業の結果をネットワーク上で検証可能にする仕組みです。
- Bitcoinではブロック生成にProof of Workが利用されている
- マイナーはNonceなどを変更しながらハッシュ計算を繰り返す
- ハッシュ値がネットワークのTarget条件を満たすことで有効なProof of Workになる
- 計算作業には電力や設備などのコストが必要になる
- ブロックが後続のブロックにつながることで、過去の履歴を変更するコストが増加する
- ネットワーク全体の計算能力に応じてマイニング難易度が調整される
- 二重支払いやチェーンの改ざんを困難にする役割を持つ
- 51%攻撃に対する安全性にも深く関係している
Proof of Workは、単なるマイニングの計算方法ではなく、計算能力・電力・経済的コストを利用して、中央管理者のいないネットワークの合意形成とブロックチェーンの安全性を支える仕組みです。
