ブロックチェーンの正当性を確認するための重要な手続き
ブロックチェーンの仕組みでは、「正しいブロック情報の処理」について説明しましたが、ここでは正式なブロックの認証に関わる『プルーフ・オブ・ワーク』について説明します。
『プルーフ・オブ・ワーク』は、とても労力を要する作業ですが、この作業に参加した結果、ビットコインを得ることもできます。このことを「採掘(マイニング)」といいます。また、ブロックチェーンを維持するためにも「採掘(マイニング)」が必要とされます。
では、順次説明していきます。
プルーフ・オブ・ワークの作業
送金リクエストを依頼すると、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分よりも長い時間をかけて勝者を決めることになるでしょう。
