img {
width: 100%; /* 横幅に合わせて自動で拡大縮小する */
}

暗号資産(仮想通貨)

ビットコインの採掘(マイニング)とは

マイニングのサーバー

ブロックチェーンの正当性をチェック

プルーフ・オブ・ワークについて

採掘(マイニング)のお話の前にビットコインなどの”暗合資産の送金”について、おさらいの意味も込めて触れておきます。

AさんからBさんへのビットコインの送金要請は、P2Pネットワークに向けて依頼されます。P2Pネットワークに参加しているコンピュータ(ノード)は、公開鍵を使ってこの送金リクエストの検証作業を行います。

関連記事送金リクエストの検証作業

ブロックチェーン生成の一幕 「ブロックチェーン」と呼ばれる技術は、正しい取引記録の塊(ブロック)を延々とつなげていきます。この仕組みは、暗合資産(仮想通貨)の送金リクエストの検証や不正防止に必要な革新 ...

続きを見る

この記事では、送金リクエストの検証作業である「プルーフ・オブ・ワーク(proof of work、POW)」について考察します。

プルーフ・オブ・ワークは、とても労力を要する作業ですが、この作業に参加した結果、ビットコインを得ることもできます。このことを「採掘(マイニング)」といいます。また、ブロックチェーンを維持するためにも「採掘(マイニング)」が必要とされます。

順次説明していきます。

プルーフ・オブ・ワークの作業

送金リクエストを依頼すると、P2Pネットワークに参加しているコンピュータ(ノード)がブロックの検証を行います。その結果、ブロック内の情報はすべて正しいと分かったとします。

ここで、『どのコンピュータの検証を採用して正規のブロックとするか』を決めるための競争が始まります。

各ブロックには、以下の要素が格納されています。

ブロック情報

  • 直近10分程度の間に世界中で出された送金リクエスト内容
  • ひとつ前のブロックの計算結果(ハッシュと呼ばれます)
  • ナンス(nonce)

ここで、ナンスが活躍します。ナンス自体は無意味な文字列ですが、ここに適当な文字列を入れます。

そして、ある決められた計算をした結果、正解とされるような文字列が出るようにします。この正解のナンスを最初に見つけた人の検証結果を、正式なブロックとして採用します。

 

 

 

ナンス探しの競争原理

計算方法も答えも公開されている状態でのナンス探しですが、この正解を得るための特定の方程式などはありません。そこで、適当な文字列をナンスに入れて計算して正解かどうかを確認するという作業を延々と繰り返します。

文字列を入れて計算してハズレ、違う文字列を入れて再び計算してハズレ・・・これを実行するのです。

この無意味とも思える計算競争を実行し、最初に正解のナンスを見つけたコンピュータ(ノード)が勝利します。その勝者が正当だと主張するブロックを採用し、ブロックチェーンの最後に追加します。

ただし、最初に見つけたノードが検証作業したブロックにつき、敗者のノードの承認が必要です。敗者のノードは、そのナンスを使って計算したら本当に正解の文字列が出るのか、そして、勝者が問題ないと判定したブロックの中身にエラーがないかどうかを確認します。

褒美としてのビットコイン支給

ナンスを見つけるために実行した、世界全体の計算量の過半数の承認を得られれば、晴れて正式なブロックとなり、今まで作られてきたブロックチェーンの最後に取り付けられます。

そして、勝者となったノードに、褒美として新規にビットコインが支給されます。

当初、褒美で得られたビットコインは50BTCでした。そして、作成されたブロックの数が21万に達するたびに褒美は半減していきます。これを「半減期」と呼んでいます。

半減期は、2012年11月、2016年7月、2020年5月とすでに3回経ており、2020年~2024年の間のビットコイン報酬は6.25BTCになっています。こうして半減期を繰り返し、最終的に2140年ころに2,100万ビットコインになるまで新規発行が続きます。その後は、ビットコインの新規発行はされません。

新規発行が終了した後のビットコインの世界を(その時はこの世にいませんが・・)、機会があれば記事にします。

プルーフ・オブ・ワークの効果

以上のように、一見すると無駄に電力等の資源を消費しているように見えるプルーフ・オブ・ワークですが、「ブロックチェーンの正当性を確認するための重要な手続き」となっています。

プルーフ・オブ・ワーク(POW)の流れを簡単に要約しますと、以下の通りです。

POWの流れ

取引リクエストをおよそ10分ごとにブロックにまとめ、

各ノードが取引リクエストを確認して、内容は正しい!と主張し、

どのノードの主張を採用すべきかでレース(POW)を開催し、

最初にナンスを発見した人が勝者となり、

負けた人は勝者が検証したブロックとナンスを再確認し、

POWの作業量全体の過半数の承認を得られれば、そのブロックを正式版として採用

採掘(マイニング)されたビットコインは、勝利したノードに支給される

プルーフ・オブ・ワークは一見無駄に見える作業ですが、勝者決定と承認のために必要な作業ということになります。

採掘(マイニング)をめぐる攻防

ビットコインを新規に得るための「採掘(マイニング)」を目当てにして、高性能コンピュータが次々に投入されてきました。

ナンスを見つけるために投入される高性能コンピュータはあまりに高性能なので、一般家庭にあるようなパソコンでは採掘で勝つ可能性は限りなく小さい(ほぼゼロ)という状態です。

高性能コンピュータが次々に導入されると、正解のナンスを一瞬で探し当ててしまうように思います。そこはビットコインのシステムが問題の難易度を自動で調整します。この調整の結果、正解のナンスを探し当てるのに必要な時間は平均で10分程度になっています。

  • 採掘難易度の調整:BTC.COM

ただし、平均ですので、いきなり正解のナンスを当てることに成功すれば、わずかな時間で勝者が決まることもあるでしょう。また、なかなか正解が見つからない場合は、10分よりも長い時間をかけて勝者を決めることになるでしょう。

複数の正解ナンス?

正当なブロックを見つけるための作業、すなわちプルーフ・オブ・ワークでは、高性能コンピュータが数多く投入されています。すると、ほぼ同時に、複数のコンピュータ(ノード)が正解を発見することもあるでしょう。

すると、それぞれのノードが「自分が勝者だ!」と主張してP2P内に正解のナンスとブロックを広めようとします。

正式なブロックの採用方法

同時に正解のナンスが複数見つかった場合、ビットコインでは以下の方法で正式なブロックを決定します。

ブロック採用の流れ

  1. とりあえず、二つとも正式なブロックとしておく(=分岐)。
  2. その後もブロックの作成を続けます。
  3. 各ノードは、どちらの分岐ブロックに追加しても構いません。
  4. 最終的に、長いブロックチェーンを作った方の分岐を採用(※)

(※)不採用となったブロックは、データそのものがなかったことにされてしまいます。もちろん採掘報酬もありません。

分岐した後、ノードはどちらの側についてプルーフ・オブ・ワークをするのか自由に決定できます。すると、勝算が高いと予想する分岐に人気が集まるでしょう。負ける側の分岐について勝利しても、勝ったという事実そのものが取り消されてしまって無意味だからです。

こうして、より長くブロックチェーンを作った側が生き残るという方法を採用しています。

51%攻撃とは

ここで、ブロックが分岐するということは、不正を働こうとする”ふとどき者”にとっては「隙あり(?)」と感じるかもしれません。

もし不正を働こうとする場合、次の方法が想定できます。

 ① 意図的に不正なブロックを作り、ブロックチェーンを分岐させる。
 ② その後もブロックを作成し続け、不正なブロックを承認し続ける。
 ③ 不正がない正当なブロックチェーンに対しては承認しない。
 ④ すると、正当なブロックチェーンが不正なブロックに比べて短くなる。

検証されたブロックの承認には、ノードが参加して計算した総量の過半数が必要です。ということは、正当なブロックチェーンの作成を妨害するには、不正な計算をする側が全体の51%の計算量を保持すれば良いことになります。

この方法による攻撃を51%攻撃、または51%アタックと呼びます。

しかし、全世界で計算に参加しているノードの計算力はすさまじく大きいため、51%攻撃を実行するのは極めて大変な作業だと分かります。

そもそも、51%攻撃が成功してそれが世間に明らかになると、ビットコインの信用が一気に失われ、ビットコインの価格が暴落する可能性があります。

価値が暴落すると、巨大な計算力を投入して不正にビットコインを得たのに、結果として損になってしまいます。

このため、51%攻撃を仕掛ける誘因は大きくないと予想できます。

関連記事ブロックチェーンの仕組み

ブロックチェーンができるまで 暗号技術を知らなくても投資は... ビットコインやイーサリアムなどの仮想通貨(暗号資産)を支えているのがブロックチェーンと呼ばれている「暗号技術」です。この暗号技術のすべ ...

続きを見る

-暗号資産(仮想通貨)