

ブロックチェーンの正当性を確認するための重要な手続き
前の記事「ブロックチェーンとは-仕組みと役割」では、ブロックチェーンの仕組みと送金要請の検証までを確認しました。この記事では、その検証方法である「プルーフ・オブ・ワーク(PoW)について考察しましょう。
『プルーフ・オブ・ワーク』は、とても労力を要する作業ですが、この作業に参加した結果、ビットコインを得ることもできます。このことを「採掘(マイニング)」といいます。また、ブロックチェーンを維持するためにも「採掘(マイニング)」が必要とされます。
では、順次説明していきます。
プルーフ・オブ・ワークの作業
送金リクエストを依頼すると、P2Pネットワークに参加しているコンピュータ(ノード)がブロックの検証を行います。その結果、ブロック内の情報はすべて正しいと分かったとします。
ここで、『どのコンピュータの検証を採用して正規のブロックとするか』を決めるための競争が始まります。
前の記事「ブロックチェーンとは-仕組みと役割」において、各ブロックには、以下の要素が格納されていることを確認しました。
- 1.直近10分間程度に世界中で出された送金リクエスト内容
- 2.ひとつ前のブロックの計算結果(ハッシュと呼ばれます)
- 3.ノンス(nonce)
ここで、ノンスが活躍します。ノンス自体は無意味な文字列ですが、ここに適当な文字列を入れます。
そして、ある決められた計算をした結果、正解とされるような文字列が出るようにします。この正解のノンスを最初に見つけた人の検証結果を、正式なブロックとして採用します。

ノンス探しの競争原理
計算方法も答えも公開されている状態でのノンス探しですが、この正解を得るための特定の方程式などはありません。そこで、適当な文字列をノンスに入れて計算して正解かどうかを確認するという作業を延々と繰り返します。
文字列を入れて計算してハズレ、違う文字列を入れて再び計算してハズレ・・・これを実行するのです。
この無意味とも思える計算競争を実行し、最初に正解のノンスを見つけたコンピュータ(ノード)が勝利します。その勝者が正当だと主張するブロックを採用し、ブロックチェーンの最後に追加します。
ただし、最初に見つけたノードが検証作業したブロックにつき、敗者のノードの承認が必要です。敗者のノードは、そのノンスを使って計算したら本当に正解の文字列が出るのか、そして、勝者が問題ないと判定したブロックの中身にエラーがないかどうかを確認します。
勝者に新規ビットコインが支給
ノンスを見つけるために実行した、世界全体の計算量の過半数の承認を得られれば、晴れて正式なブロックとなり、今まで作られてきたブロックチェーンの最後に取り付けられます。
そして、勝者となったノードに、褒美として新規にビットコインが支給されます。
当初、褒美で得られたビットコインは50BTC(BTCはビットコインの単位です)でした。そして、作成されたブロックの数が21万に達するたびに褒美は半減していきます。これを「半減期」と呼んでいます。
すでに半減期を2回経ており、2016年~2020年の間のビットコイン報酬は12.5BTCになっています。こうして半減期を繰り返し、最終的に2140年ころに2,100万ビットコインになるまで新規発行が続きます。その後は新規発行されません。
ビットコインの採掘(マイニング)とは
上記した作業は、一般的に「プルーフ・オブ・ワーク(proof of work、POW)」と呼ばれ、ビットコインを新規に得ることを「採掘(マイニング)」と呼んでいます。この採掘を目当てにして、高性能コンピュータが次々に投入されています。
ノンスを見つけるために投入される高性能コンピュータはあまりに高性能なので、一般家庭にあるようなパソコンでは採掘で勝つ可能性は限りなく小さいという状態です。
プルーフ・オブ・ワークの効果
この一見すると無駄に電力等の資源を消費しているように見えるプルーフ・オブ・ワークですが、ブロックチェーンの正当性を確認するための重要な手続きとなっています。
以上の話を簡単に要約しますと、以下の通りです。
- 1.取引リクエストをおよそ10分ごとにブロックにまとめ、
- 2.各ノードが取引リクエストを確認して、内容は正しい!と主張し、
- 3.どのノードの主張を採用すべきかでレース(プルーフ・オブ・ワーク)を開催し、
- 4.最初にノンスを発見した人が勝者となり、
- 5.負けた人は勝者が検証したブロックとノンスを再確認し、
- 6.プルーフ・オブ・ワークの作業量全体の過半数の承認を得られれば、そのブロックを正式版として採用
- 7.採掘(マイニング)されたビットコインは、勝利したノードに支給される
プルーフ・オブ・ワークは一見無駄に見える作業ですが、勝者決定と承認のために必要な作業ということになります。
なお、高性能コンピュータが次々に導入されると、正解のノンスを一瞬で探し当ててしまうように思います。そこはビットコインのシステムが問題の難易度を自動で調整します。この調整の結果、正解のノンスを探し当てるのに必要な時間は平均で10分程度になっています。
ただし、平均ですので、いきなり正解のノンスを当てることに成功すれば、わずかな時間で勝者が決まることもあるでしょう。また、なかなか正解が見つからない場合は、10分よりも長い時間をかけて勝者を決めることになるでしょう。
同時に正解のノンスが複数見つかったらどうする?
正当なブロックを見つけるための作業、すなわちプルーフ・オブ・ワークでは、高性能コンピュータが数多く投入されています。すると、ほぼ同時に、複数のコンピュータ(ノード)が正解を発見することもあるでしょう。
すると、それぞれのノードが「自分が勝者だ!」と主張してP2P内に正解のノンスとブロックを広めようとします。
正式なブロックの採用方法
この場合、ビットコインでは以下の方法で正式なブロックを決定します。
- 1.とりあえず、二つとも正式なブロックとしておく。すなわち、分岐します。
- 2.そして、その後もブロックの作成を続けます。
- 3.各ノードは、どちらの分岐の次にブロックを追加しても構いません。任意です。
- 4.最終的に、長いブロックチェーンを作った方の分岐を採用し、不採用となったものはデータそのものがなかったことにされてしまいます。よって、採掘報酬もありません。
分岐した後、ノードはどちらの側についてプルーフ・オブ・ワークをするのか自由に決定できます。すると、勝算が高いと予想する分岐に人気が集まるでしょう。負ける側の分岐について勝利しても、勝ったという事実そのものが取り消されてしまって無意味だからです。
こうして、より長くブロックチェーンを作った側が生き残るという方法を採用しています。

ブロックの分岐が起きる確率
では、このブロックの分岐はどれくらいの確率・頻度で発生しているでしょうか。ビットコインは取引記録がすべて公開されていますので、この確率を確認できます。とはいえ、ブロックの数は膨大ですので、全てを調べるわけにはいきません。
そこで、ブロックの番号が400,000番~449,999番の5万ブロックについて、分岐した回数を確認しました。
ブロックはおよそ10分ごとに1つずつ増えていきます。そのブロックは、ブロックチェーンに追加されると番号を割り振られます。2017年3月現在、ブロックの番号は458,000番台です。すなわち、延々と採掘を続けた結果、458,000回もマイニングしたということになります。
- 分岐した回数:92回
- 確認したブロック数:50,000
- 分岐する確率:0.184%
ブロックが分岐する確率は0.2%に満たないようです。分岐して負けたブロックを採掘した人は、報酬をもらえなくて残念な思いをします。しかし、そうなる確率はとても小さいと分かります。
51%攻撃とは
ここで、不正を働こうとする人にチャンス(?)があります。次の方法です。
- 1.意図的に不正なブロックを作り、ブロックチェーンを分岐させる。
- 2.その後もブロックを作成し続け、不正なブロックを承認し続ける。
- 3.不正がない正当なブロックチェーンに対しては承認しないで、ブロックチェーンの作成を妨害する
- 4.すると、正当なブロックチェーンが不正なブロックに比べて短くなるので、捨て去られる。
検証されたブロックの承認には、ノードが参加して計算した総量の過半数が必要です。ということは、正当なブロックチェーンの作成を妨害するには、不正な計算をする側が全体の51%の計算量を保持すれば良いことになります。
この方法による攻撃を51%攻撃、または51%アタックと呼びます。しかし、全世界で計算に参加しているノードの計算力はすさまじく大きいため、51%攻撃を実行するのは極めて大変な作業だと分かります。
51%攻撃は骨折り損・・
51%攻撃が成功してそれが世間に明らかになると、ビットコインの信用が一気に失われ、ビットコインの価格が暴落する可能性があります。価値が暴落すると、巨大な計算力を投入して不正にビットコインを得たのに、結果として損になってしまいます。
このため、51%攻撃を仕掛ける誘因は大きくないと予想できます。
ただし、51%を仕掛けることは不可能か?という問いに対しては、「可能である」という回答が見え隠れします。
次のページでは、自宅にあるパソコンを使って、実際に「ビットコインのマイニング」を行った結果を報告しています。