プルーフ・オブ・ワーク(PoW)とは:マイナーがブロックチェーンを守る仕組み

プルーフ・オブ・ワーク(PoW)とは:マイナーがブロックチェーンを守る仕組み

プルーフ・オブ・ワーク(PoW)とは、中央管理者を介さずに多数のコンピューターが1つの共有記録に合意するためのルール、つまりコンセンサスメカニズムの一種です。この仕組みでは、参加者が誰でもすぐに検証できる「コストのかかる計算作業」を示す必要があります。Bitcoinの場合、その作業とは、設定されたターゲット値以下となるブロックのハッシュ値を見つけることです。

プルーフ・オブ・ワークは迷惑メール対策として生まれた

プルーフ・オブ・ワークという発想は、Bitcoinが生まれるずっと前、迷惑メール対策として提案されたものです。1992年に発表され1993年に出版された論文「Pricing via Processing or Combatting Junk Mail」の中で、Cynthia DworkとMoni Naorは、共有資源へのアクセスを得るにはユーザーがそれなりに難しい計算を行う必要があるべきだと提案しました。このコストは、無駄な利用、とりわけ迷惑メールを抑止することを目的としていました。

一般に、プルーフ・オブ・ワークとは、生成するにはコストと時間がかかるものの、他者が検証するのは容易なデータを指します。Adam Backが考案したシステムHashcashは、各メールにこの種のハッシュベースの証明を付与することで、スパムやサービス妨害(DoS)攻撃を抑止しました。サービス妨害とは、大量のリクエストでサービスを圧倒し、他の利用者が使えなくすることを意味します。

2008年10月31日付で、Satoshi Nakamotoという名義で発表されたBitcoinホワイトペーパーには、Hashcashに似たプルーフ・オブ・ワークの設計が記されています。Bitcoinはこの仕組みを使うことで、中央管理者なしにコンピューターのネットワークが1本のブロックチェーンに合意できるようにしています。

Bitcoinにおけるプルーフ・オブ・ワークの仕組み

Bitcoinマイニングとは、有効なブロックを生成するプロセスであり、有効なブロックを作るにはプルーフ・オブ・ワークを提示する必要があります。マイナーとは、有効なブロックを見つけようとする参加者のことです。マイナーはまず、未処理のトランザクションを候補ブロック(チェーンに追加するために提案される一連のトランザクション)にまとめます。次に、そのブロックのヘッダー、つまり80バイトのブロック概要情報を埋めていきます。

Bitcoinはこのヘッダーに対してSHA-256によるハッシュ計算を2回行います。これはダブルSHA-256と呼ばれる手法です。SHA-256は暗号学的ハッシュ関数の一種です。ハッシュ関数とは、任意のサイズのデータを「ハッシュ」と呼ばれる固定長の指紋のようなデータに変換するものです。プルーフ・オブ・ワークが課す条件は1つだけです。数値として読んだとき、ヘッダーのハッシュ値はターゲット値以下でなければなりません。

ターゲットとは、有効なブロックのハッシュ値が超えてはならない閾値のことです。ネットワーク難易度は、現在のターゲットがルール上最も緩いターゲットに比べてどれだけ達成しにくいかを示す指標です。ターゲットが下がるとネットワーク難易度は上がり、ターゲットが低いほど条件を満たすハッシュの数は少なくなるため、探索に時間がかかります。

異なるハッシュ値を得るために、マイナーはヘッダーに格納された32ビットの数値「ノンス」を変更します。そのうえでヘッダーをハッシュ化し、結果をターゲットと比較する、という作業を繰り返します。この探索は「ハッシュパズル」と呼ばれることもありますが、知恵によって解けるようなものではありません。平均して、ターゲット以下のハッシュ値を見つけるには、それに見合う量の総当たり作業、つまり値を次々に試す作業が必要になります。

以下の表は、同様の探索を小規模な例で示したものです。このルールは説明用に作成したものであり、Bitcoinの実際のルールではなく、SHA-256も2回ではなく1回だけ適用しています。文字列「hello」の後にノンスを付けたもののSHA-256ダイジェストが、決められた個数のゼロで始まる必要がある、というルールです。ダイジェストは16進数表記(0〜9とa〜fの文字を使う基数16の記法)で書かれています。ゼロで始まるダイジェストは数値として小さいため、こうしたルールはいずれもターゲットとして機能します。

ルール

入力(テキスト+ノンス)

SHA-256ダイジェスト

結果

ダイジェストが000で始まる

hello0

5a936ee19a0cf3c70d8cb0006111b7a52f45ec01703e0af8cdc8c6d81ac5850c

失敗(5で始まる)

ダイジェストが000で始まる

hello1

91e9240f415223982edc345532630710e94a7f52cd5f48f5ee1afc555078f0ab

失敗(9で始まる)

ダイジェストが000で始まる

hello2

87298cc2f31fba73181ea2a9e6ef10dce21ed95e98bdac9c4e1504ea16f486e4

失敗(8で始まる)

ダイジェストが000で始まる

hello10284

0006bc9ad4253c42e32b546dc17e5ea3fedaecdabef371b09906cea9387e8695

10,285回目で成功

ダイジェストが0000で始まる

hello60067

0000e49eab06aa7a6b3aef7708991b91a7e01451fd67f520b832b89b18f4e7de

60,068回目で成功

この小規模な探索では、ゼロが1つ増えるごとに平均試行回数は16倍になります。ゼロ3つのルールでは平均約4,096回、ゼロ4つのルールでは約65,536回の試行が必要ですが、1回ごとの探索ではそれより多くなることも少なくなることもあります。表内の成功例でも、10,285は4,096より多く、60,068は65,536より少なくなっています。これらの結果はいずれも、SHA-256の計算を1回行うだけで検証できます。

実際のBitcoinの探索ははるかに大規模です。1ブロックあたりに期待されるハッシュ計算回数は、おおよそネットワーク難易度に2の32乗を掛けた値になります。2026年10月時点では、1ブロックあたり平均500セクスティリオン(10の21乗が1,000個分)回を超えるハッシュ計算が必要であり、この数値はネットワーク難易度が調整されるたびに変化します。セクスティリオンとは、1の後にゼロが21個続く数のことです。

ブロックの作業量を検証するのは、それを生成するのに比べてはるかに低コストです。ノードとは、ネットワークのルールに照らしてブロックを検証するBitcoinネットワーク上のコンピューターのことです。ブロックの作業量を検証するために、ノードはそのブロックヘッダーのダブルSHA-256ハッシュを一度計算し、ターゲットと比較するだけです。ブロックを生成するにはそれだけ多くの試行が必要だったのに対し、検証にはハッシュ計算1回で済みます。この非対称性こそが、作業を「証明」たらしめている理由です。

プルーフ・オブ・ワークにより、中央管理者なしでノードが1本のチェーンに合意できる

2人のマイナーがほぼ同時に有効なブロックを見つけることがあり、その場合ネットワーク上に複数のバージョンのチェーンが並存することになります。プルーフ・オブ・ワークは、どちらを選ぶべきかというルールをすべてのノードに与えます。ノードは、最も多くの作業量が積み重なったチェーン、つまり再現するのが最も困難なチェーンに従うのです。誰もがその作業量を検証できるため、どのチェーンを正とするかを中央管理者が決める必要はありません。

各ブロックには直前のブロックのハッシュ値が含まれているため、過去のブロックを改ざんするには、そのブロックとそれ以降のすべてのブロックについて作業をやり直す必要があります。プルーフ・オブ・ワークは、履歴の書き換えにコストがかかるよう設計されており、特定のブロックを改ざんするコストは、その後にブロックが追加されるたびに増していきます。

プルーフ・オブ・ワークは、同じBTCを二重に使おうとする「二重支払い」にも関わってきます。すでにブロックに取り込まれた支払いを覆すには、その作業をやり直す必要があるためです。

マイナーは補助金と手数料を受け取り、ネットワーク難易度がペースを決める

Bitcoinでは、ネットワークに受理された有効なブロックを生成したマイナーがブロック報酬を獲得します。報酬は2つの要素から成ります。新たに発行されるBTCであるブロック補助金と、そのブロックに含まれるトランザクションのユーザーが支払う手数料です。2026年10月時点で、2024年4月の直近の半減期以降、マイナーへの補助金は1ブロックあたり3.125 BTCとなっています。

ブロック補助金は21万ブロックごとに半減します。これは「半減期(ハルビング)」と呼ばれ、おおよそ4年ごとに訪れます。半減するのは補助金のみで、手数料は半減しません。

Bitcoinプロトコルは2,016ブロックごとにネットワーク難易度を調整します。各ブロックのヘッダーに記録された時刻をもとに、それら2,016ブロックの生成にかかった時間を測定し、それを2週間に相当する1,209,600秒と比較します。そのうえでターゲットを比例的に再調整し、ブロックが平均して約10分ごとに生成されるようにします。1回の調整でネットワーク難易度が変動できる幅は、最大でも上下4倍までです。

ハッシュレートとは、ネットワーク上のマシンが1秒間に計算するハッシュの総数のことです。ハッシュレートが上昇すると、ブロックは10分より速いペースで生成される傾向があり、次の調整でネットワーク難易度が引き上げられます。逆にブロック生成が遅すぎる場合は、調整によってネットワーク難易度が引き下げられます。この調整はブロック生成にかかった時間のみを基準にしており、マイナーの数やBTCの価格は一切考慮されません。

Bitcoinの「10分」というブロック生成時間はあくまで平均値であり、個々のブロックについての保証ではありません。ブロック発見についての統計モデルによれば、前のブロックから10分以内に生成されるブロックはおよそ63%です。

プルーフ・オブ・ワークとプルーフ・オブ・ステークの違い

プルーフ・オブ・ワークとプルーフ・オブ・ステークは、どちらもブロックチェーンに次のブロックを追加する参加者を決めるためのコンセンサスメカニズムです。ブロックチェーンとは、順番に連結されたブロックから成る共有記録のことです。プルーフ・オブ・ワークでは、この権利は計算作業に結び付けられており、マイナーはブロックがターゲットを満たすまでハッシュ計算を繰り返します。

一方、プルーフ・オブ・ステークでは、この権利は参加者が担保として預け入れる暗号資産に結び付けられています。これは、参加者がブロック追加に関わっている間、そのコインが動かせない状態で確保されることを意味します。不正な行為を試みた参加者はペナルティを科される可能性があります。

この2つのメカニズムの違いは、参加者が何を差し出すかにあります。プルーフ・オブ・ワークでは計算作業であり、プルーフ・オブ・ステークではロックされたコインです。

プルーフ・オブ・ワークが電力を消費するのはなぜか

Bitcoinマイニングが電力を使用するのは、プルーフ・オブ・ワークが実際の計算処理であり、計算を行うマシンは電力を消費するからです。このコストはプルーフ・オブ・ワークの定義そのものに組み込まれています。プルーフ・オブ・ワークは試行錯誤によって生み出されるものであり、Bitcoinではその試行錯誤をマシンが担っているのです。

マシンが計算する1回1回のハッシュ計算には電力が必要なため、総ハッシュ計算数が増えれば、一般に消費電力も増加します。より多くのマシンが参入すると、ブロックの生成速度が速まる傾向があり、次の調整でネットワーク難易度が上昇し、その結果1ブロックあたりに必要な平均ハッシュ計算数も増加します。

一部の政策担当者や送電網の計画担当者は、米国内の暗号資産マイナーが使用する電力がコスト、信頼性、排出量に与える影響について懸念を示しています。Bitcoinの電力使用量に関する公表された推計値は、算出方法や対象期間によって異なります。

有効なハッシュが示すのは作業が行われたことであり、トランザクションの正当性ではない

ターゲット以下のハッシュ値は、誰かがその作業を行ったことを示すにすぎません。ブロック内のトランザクションが有効かどうかについては何も示しません。フルノードは、ブロック内のすべてのトランザクションが有効であり、かつ未使用であった場合に限ってそのブロックを受理します。またBitcoin Coreのようなノードソフトウェアは、たとえどれだけの作業量が積まれていようと、補助金と手数料の合計を超える金額を請求するブロックを拒否します。

また、プルーフ・オブ・ワークは履歴を「不変」にするものでもありません。履歴を書き換えるのにコストがかかるようにしているだけです。ネットワークのハッシュレートの過半数を支配する当事者は、最近のトランザクション履歴を書き換えたり、新しいトランザクションの承認を妨げたりすることが可能です。承認(そのトランザクションを記録したブロックの上に積み重ねられたブロックの数)を多く待つことで、履歴を書き換えるコストは上がりますが、可能性自体がなくなるわけではありません。

さらに、プルーフ・オブ・ワークは努力そのものに報酬を支払う仕組みでもありません。プロトコルのレベルでは、受理されるブロックに結び付かなかったハッシュ計算には、どれだけ電力を費やしていようとブロック報酬は一切支払われません。

2025年11月27日

GoMiningニュース

興味があるかもしれない: