プルーフ・オブ・ワーク(PoW)とは?
定義 · Proof of work(PoW)
ブロックを追加する権利が、ブロックヘッダーのハッシュ値がターゲットを下回る値を最初に見つけた人に与えられる仕組みです。見つけるには膨大な回数の試行が必要ですが、確認はハッシュ計算1回で済みます。
Satoshi Nakamotoは2008年のBitcoinのホワイトペーパーでこれを説明しました。メールのスパム送信を高コストにする古いアイデア、Adam BackのHashcashをもとにしたものです。有効なハッシュが、その作業をした証明になります。作業なしに有効なハッシュを得ることはできず、誰でも作業が行われたことを確認できます。
このページでは各要素を順に説明します。上のボックスで実際に試すこともできます。これは本物のBitcoinヘッダー形式で、ブラウザ上でリアルタイムにハッシュを計算します。マイニングの全体像については、Bitcoinマイニング完全ガイドをご覧ください。
プルーフ・オブ・ワークはどんな問題を解決する?
Bitcoinを管理する会社や銀行、サーバーはありません。何千台ものコンピューターがそれぞれ台帳のコピーを持ち、次にどのブロックを追加するか、支払いがどの順序で行われたかについて合意する必要があります。そうでなければ、同じコインを二重に使えてしまいます。
単純な投票はオンラインでは機能しません。誰でも偽のコンピューターを千台作り、千回投票できるからです。これはシビル攻撃と呼ばれます。プルーフ・オブ・ワークはこの問題を回避します。発言権はハッシュ数で測られ、ハッシュの計算には電気代とハードウェアの費用がかかります。
次のブロックに関われるのは誰?
ノード1つにつき1票
攻撃者1人が無料で60個の偽ノードを立ち上げ、12個の誠実なノードより多く票を集めます。
ハッシュ1つにつき1票
正直なマイナー 88%攻撃者 12%
同じ60個のノードが攻撃者の実際のハードウェアを共有しているため、合わせても計算力は12%です。コピーは無料でも、ハッシュ計算は無料ではありません。
ビットコインのブロックヘッダーには何が入っている?
マイナーがハッシュするのはブロック全体ではありません。80バイトのヘッダーをハッシュし、そこに残りのすべての情報を反映させます。上のボックスで編集した6つのフィールドは次のとおりです。
| 項目 | バイト | 含まれるもの | 誰が変更するのか |
|---|---|---|---|
| バージョン | 4 | ブロックが従うルールセット | めったに変わらない |
| 前のブロックのハッシュ | 32 | チェーンをつなぐ、ひとつ前のブロックのハッシュ | ブロックごとに新しくなる |
| Merkle root | 32 | ブロック内のすべての取引をまとめた1つの指紋 | マイナー、取引または追加ノンスが変わったとき |
| 時間 | 4 | マイナーがブロックの作成時刻として示す時刻(Unix時間) | マイナー、制限の範囲内で |
| ビット | 4 | 4バイトに圧縮されたターゲット | ネットワークによる調整、2,016ブロックごと |
| Nonce | 4 | 再試行のために自由に変えられる数値 | マイナー、試行のたびに |
ヘッダーには前のブロックのハッシュが含まれています。そのため、古いブロックを変更するとハッシュが変わり、次のヘッダーも、その次のヘッダーも無効になります。このページの作成時に、ヒーローで使っているのと同じコードをサーバー上で使い、2009の実際のジェネシスブロックを検証しました。
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
BitcoinのSHA-256はどう動く?
SHA-256は、どんな入力も256ビットの数値に変換します。これは64桁の16進数で表されます。Bitcoinはヘッダーにこの処理を2回行います(SHA-256dと呼ばれます)。マイニングで重要な性質はシンプルです。
入力が同じなら、出力も同じ
決定論的
同じヘッダーなら、どのコンピューターでも同じハッシュになります。だから検証できるのです。
256ビット
固定サイズ
短い一行でも本一冊分でも、ハッシュは常に64桁の16進数です。
一方向
元に戻す近道はない
狙ったハッシュになる入力を計算で導き出すことはできません。入力を試していくしかありません。
≈ 50%
アバランチ効果
文字を1つ変えると、ビットの約半分が反転します。ヒーローのグリッドを見てみましょう。
この最後の性質が、プルーフ・オブ・ワークの核心です。ターゲットに近いハッシュでも、次の試行結果はわかりません。そのため、有効なブロックにたどり着く近道はありません。すべてのマイナーが同じ抽選を行い、1秒あたりのハッシュ数が多いほど、抽選券を多く買えるだけです。
ターゲットって何? それと、なぜ先頭にゼロが並ぶの?
ターゲットは256ビットの数値です。ハッシュを数値として読んだ値がターゲット以下なら、そのブロックは有効です。小さい数ほど先頭にゼロが多く並ぶため、ターゲットが小さいほど先頭のゼロが増えます。16進数のゼロが1つ増えるごとに、平均で16倍の試行が必要です。
有効なブロックを1つ見つけるのに必要な平均ハッシュ数
- ヒーロー画像のサンプルブロック · 先頭の16進数のゼロは4個65,536
- Bitcoinで最も難易度の低いターゲット(2009) · 先頭の16進数ゼロが8個、bits 1d00ffff4,294,967,296
- 現在のビットコインブロック・先頭に16進数のゼロが約20個(リアルタイム推定)4.9 × 1023
ネットワークは2,016ブロックごと、およそ2週間ごとにターゲットを調整します。そのため、ハッシュレートが増減しても、ブロックは約10分ごとに生成されます。現在、ネットワークは約811 EH/sで稼働しています(最新値、1時間ごとに更新)。調整の仕組みはBitcoinのマイニング難易度ガイドで、単位についてはハッシュレートの解説で説明しています。
ノンスとは?エクストラノンスとは?
nonce(「一度だけ使う数」)は、マイナーが試行ごとに変更する4バイトのフィールドです。変更するためだけに用意された唯一のフィールドです。問題は、4バイトでは約4.3十億通りしかなく、最新のマシンならほぼ瞬時にすべて試せることです。
マイナーの処理
- 01
すべてのナンスを試す
0、1、2から4,294,967,295まで。これが4バイトで表せるすべての値です。
- 02
すぐに底をつく
100 TH/sのマシン1台なら、すべてを約43マイクロ秒で試せます。
- 03
extra nonceを変える
マイナーは自分の報酬トランザクション(coinbase)にある余白のフィールドを編集します。
- 04
新しいマークルルート
そのトランザクションが変わったため、merkle rootも変わり、nonceを変えるたびに新しいハッシュが得られます。
そのため、マイナーは追加のnonceも変更します。これはcoinbaseにある数バイトの余白です。coinbaseはブロックの最初のトランザクションで、マイナーへの報酬を支払います。coinbaseが変わるとmerkle rootも変わり、新たに何十億ものnonceを試せます。マイニングプールでは、プールが各マイナーに個別の追加nonce範囲を割り当てるため、ほかの人と同じ作業を繰り返さずに済みます。
ブロックを見つけるのは大変なのに、検証は簡単なのはなぜ?
ブロックを見つけるには
≈ 4.9 × 1023 ハッシュ
ネットワーク全体、すべてのマシンで、約10分間試行します。
リアルタイムの推定値。1時間ごとに更新。
検証するには
1 ハッシュ
どんなノードでも、安価なノートパソコンでも、80バイトのヘッダーを1回ハッシュして、1ミリ秒もかからずにターゲットと比較できます。
マイナーはターゲットを下回るハッシュが見つかるまで、ハッシュを試し続けます。それ以外の人はヘッダーを1回ハッシュして比較するだけです。この大きなコスト差があるからこそ、何千台もの一般的なコンピューターが、チェーンを作ったマイナーを信頼せずに検証できます。
下で検索のしくみを試してみましょう。このデモはヒーロー画像より簡略化したブロック形式ですが、同じ二重SHA-256の抽選です。見つかった各ブロックは、直前のブロックにつながっています。
体験 · ブラウザでブロックをマイニング
実際のSHA-256dプルーフ・オブ・ワーク(簡略版ヘッダー)
ブロックハッシュ(SHA-256を2回)
取引を書き換えると、たった1文字でもハッシュは完全に別物になる。
試行回数:0
あなたのハッシュレート: 該当なし
時間:0.0 s
最長チェーンルールとは?51%攻撃とは?
2人のマイナーがほぼ同時にブロックを見つけると、ネットワーク上に一時的に2つのバージョンができます。ノードは、累計の作業量が最も多いチェーンに従います。最長チェーンと呼ばれますが、実際には最も重いチェーンです。難易度の高いブロックが数個あれば、難易度の低いブロックがそれ以上にあっても上回ることがあります。
支払いを取り消すには、攻撃者はその支払いより前の時点から、ほかの全員より重いチェーンを作らなければなりません。新しいブロックが1つ追加されるたびに(承認が1つ増えるたびに)、攻撃者はさらに遅れを取ります。ホワイトペーパーではその確率が計算されています。スライダーを動かして確認してみましょう。
インタラクティブ · 攻撃者は追いつける?
Bitcoinホワイトペーパー第11節の数式
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
攻撃者が遅れているブロック数(承認数)。バーは対数目盛で、100万分の1から確実までを示します。
ハッシュレートの10%を持つ場合、6承認後に支払いを書き換えられる確率は0.024%で、1承認後は20.5%です。
50%以上なら、攻撃者はいずれ勝ちます。これが51%攻撃です。深刻ですが、限界もあります。
ハッシュレートの大半を持つ攻撃者は、次のことができます
- 最近のブロックを自分のチェーンに置き換える
- 自分に送ったコインを二重使用する
- 一部の取引をブロックに含めない
それでも、彼らにはできません
- 他人のウォレットからコインを使う
- ブロック報酬を超えてコインを作る
- ほかの人にも適用されるBitcoinのルールを変える
そのため、取引所は多額の入金に対して、複数の承認を待ちます。一般的な目安は6回です。
プルーフ・オブ・ワークはなぜこれほど多くのエネルギーを使う?
エネルギーがセキュリティそのものだからです。有効なブロックは、実際に電力が使われた証拠です。履歴を書き換えるには、攻撃者は少なくとも同じだけの電力を使い、正直なネットワークが先へ進む間も使い続けなければなりません。
エネルギーはどこに使われ、何をもたらすのか
ブロック報酬と手数料
各ブロックの新規BTCと手数料。ブロックを見つけた人に支払われます。
マシンと電力
マイナーは、報酬に見合うと考える額まで費用をかけます。
ネットワークハッシュレート
こうしたコストはすべて、1秒あたりのハッシュ数に表れます。
履歴を書き換えるコスト
攻撃者は、ブロックごとに、そのすべてを上回るコストをかけなければなりません。
電力をどれだけ使い、どこから電力を得るのかは、議論の余地があります。ケンブリッジのインデックスでは推定値を追跡しており、Bitcoinマイニングのエネルギーガイドでは数値を詳しく見ていきます。半減期のたびに報酬のうち新規発行コインの分が減るため、時間がたつにつれて、セキュリティを支える費用をより多く手数料でまかなう必要があります。
プルーフ・オブ・ワークとプルーフ・オブ・ステークの違いは?
プルーフ・オブ・ステーク(PoS)では、電力を使う人ではなく、コインを預け入れてロックした人の中から次のブロック生成者を選びます。Ethereumは2022にプルーフ・オブ・ワークからプルーフ・オブ・ステークに移行しました。公平に並べて比べてみましょう。
| プルーフ・オブ・ワーク | プルーフ・オブ・ステーク | |
|---|---|---|
| 次のブロックを追加するのは誰? | ターゲットを下回るハッシュを最初に見つけたマイナー | ステーク量に応じて選ばれるバリデーター |
| 何が安全を守るのか | チェーンの外で消費される電力とハードウェア | チェーン内にロックされ、不正をすると没収されるコイン |
| 消費エネルギー | 設計上、高くなる | 低 |
| 参加するには | マシンと安価な電力 | ステークするコイン |
| 決済 | 承認が増えるほど安全性が高まる | 明示的なファイナリティチェックポイント |
| 主な批判 | エネルギー消費とマイニングの集中 | ステークの集中と複雑な設計 |
| 実績 | Bitcoin、2009以降 | Ethereum、2022以降 |
Bitcoinの開発者がプルーフ・オブ・ワークを維持してきたのは、そのコストがシステムの外部にあるためです。つまり、すでに持っているコインで支配権を買うことはできません。プルーフ・オブ・ステークの支持者は、省エネルギーとファイナリティの速さを利点に挙げています。
Can you get mining rewards without running proof of work yourself?
Yes. With CloudMineCrypto you mine bitcoin for free from your phone or browser, with no hardware, noise or power bill. Claim the free 8-hour plan, and add more free plans by watching ads, playing games, completing offers and checking in daily. Your estimated BTC ticks up while your plans run, and you withdraw to your own wallet, Lightning included.
Each plan has a hashrate, and your estimate is that hashrate’s share of the whole network, times 6 blocks an hour, times the block reward. That’s the formula the app uses to estimate your rewards (rules and limits apply). Want more speed? Paid plans are an optional boost for fun. They usually mine less than they cost, and the price is shown before you confirm.
知っておきたいこと:報酬はネットワークの状況に応じて変わる見積もりで、保証されていません。また、プランを利用しても、マシンやマイニングプールの所有権は得られません。出金には上限が設けられたり、本人確認が必要になったりする場合があります。詳しくは報酬ルールと無料のBitcoinマイニングガイドをご覧ください。利用規約が適用されます。
よくある質問
プルーフ・オブ・ワークを簡単に説明すると?
ブロックの追加に実際の労力がかかるようにする仕組みです。マイナーはノンスと呼ばれる数値を変えながら、ブロックヘッダーを何度もハッシュし、結果がターゲットを下回るまで続けます。そのハッシュを見つけるには膨大な回数の試行が必要ですが、誰でもハッシュを1回計算するだけで検証できます。
ビットコインのノンスとは?
ブロックヘッダー内の4バイトの数値で、マイナーは試行のたびに変更します。値は約4.3十億通りあります。使い切ると、マイナーはcoinbaseトランザクション内のextra nonceを変更します。すると新しいマークルルートができ、ハッシュも新たに試せます。
ビットコインはなぜSHA-256を2回使う?
Bitcoinは80バイトのヘッダーをSHA-256でハッシュし、さらにその結果をもう一度ハッシュします。サトシはこの選択の理由を説明していません。一般的には、長さ拡張攻撃を防ぎ、安全性に余裕を持たせるためと考えられています。
51%攻撃で何ができる?
ハッシュレートの大半を持つ人は、非公開でより長いチェーンを作り、最近のブロックを置き換えられます。これにより、自分のコインを二重使用したり、一部のトランザクションを妨げたりできます。他人のコインを使ったり、ルールを超えてコインを作ったり、全員に適用されるルールを変更したりはできません。
プルーフ・オブ・ステークはプルーフ・オブ・ワークより優れている?
消費エネルギーは大幅に少なく、セキュリティはステークとしてロックされたコインによって支えられます。プルーフ・オブ・ワークでは、電力やハードウェアといった外部コストがセキュリティを支えており、2009以来Bitcoinで使われています。それぞれに異なるトレードオフがあるため、どちらが優れているかは何を重視するかによります。
Can I get bitcoin mining rewards without my own hardware?
Yes. In the CloudMineCrypto app you claim free mining plans (the free plan, ads, games, offers and a daily check-in) and your estimated BTC ticks up while they run, then you withdraw to your own wallet. Rewards are estimates based on your plan’s hashrate and live network data, they aren’t guaranteed, and a plan doesn’t give ownership of any hardware.
出典と追加の参考資料
- Bitcoin: A Peer-to-Peer Electronic Cash System(ホワイトペーパー) · サトシ・ナカモト、bitcoin.org
- ブロックチェーン入門:ブロックヘッダー、プルーフ・オブ・ワーク、コインベース · Bitcoin開発者ドキュメント
- マイニングガイド:ソロマイニング、プール、getblocktemplate · Bitcoin開発者ドキュメント
- 難易度 · Bitcoin Wiki
- 承認 · Bitcoin Wiki
- ケンブリッジ・ビットコイン電力消費指数 · Cambridge Centre for Alternative Finance
- マイニングダッシュボード:ハッシュレート、難易度、最近のブロック · mempool.space
このページのリアルタイムの数値は、CloudMineCrypto APIまたは横に記載された公開ブロックチェーンデータサービスから取得し、定期的に更新しています。各数値の出典も表示しています。このガイドは教育目的であり、金融アドバイスではありません。CloudMineCryptoは投資商品ではありません。アプリ内の報酬は推定値であり、保証されません。
仕組みは読んだよね。次は、実際に動くところを見てみよう。
CloudMineCryptoアプリで無料の8時間マイニングプランを受け取ると、ライブのネットワークデータに基づく推定BTCが増えていくのを確認できます。ハードウェアもカードも不要。