ビットコインのマイニング(採掘)の仕組み

3rd 12月 2015

ビットコインのマイニング(採掘)の仕組み

伝統的な不換紙幣のシステムでは、必要に応じて政府が追加のお金を印刷します。しかし、ビットコインでは、お金の印刷は全く行われません。お金は発見されるものなのです。世界中のコンピューターが競い合って、お金を「採掘」します。

マイニングが登場する場面

ビットコインのネットワーク上では、ユーザー間で常時ビットコインの送金が行われていますが、誰かがその全取引を記録しないと、誰が何を支払ったかを追跡することができません。ビットコインのネットワークは、一定期間中に実行された全ての取引を「ブロック」と呼ばれるリストにまとめることで、この問題に対処します。これらの取引を承認し、総勘定元帳に記帳するのがマイナー(採掘者)の仕事です。

ビットコインのマイニングについての入門ビデオ

by bitcoinmining.com

ハッシュ値の生成

この総勘定元帳はブロックをつないだ膨大なリストであり、「ブロックチェーン」と呼ばれています。これを利用することで、ネットワーク上の任意の地点で行われた任意のビットコインアドレス間の取引を確認することができます。新しい取引ブロックが生成される度に、これがブロックチェーンに追加されます。その結果、ビットコインネットワーク上でこれまで発生した全ての取引を含むリストが作成され、このリストはどんどん長くなります。常に、ブロックの最新のコピーが参加者全員に提供されるため、参加者は何が起きているのかを知ることができます。

しかし、総勘定元帳には信頼性が求められる一方、全てデジタルで保管されています。どうすれば、ブロックチェーンが完全で、絶対に改ざんされないと信じることができるのでしょうか?ここで重要なのがマイナーの存在です。
取引ブロックが生成されると、マイナーたちがこれを計算処理にかけます。ブロックに含まれる情報を取り出し、数式を適用して、「何か別のもの」に変換します。この「何か別のもの」がハッシュ値と呼ばれるものであり、元データよりも格段に短い、一見してランダムな文字と数字の羅列です。このハッシュ値が、その時点におけるブロックチェーンの末尾に該当ブロックと共に保管されます。
ハッシュ値には、いくつかの興味深い特性があります。ビットコインのブロックのようなデータの集合体からハッシュ値を生成するのは簡単ですが、ハッシュ値を見ただけで元のデータを導き出すのは現実的に不可能です。また、大量のデータからハッシュ値を生成するのは非常に簡単である一方、ハッシュ値は全て一意の値になります。ビットコインブロック中の1文字を変えるだけで、ハッシュ値も完全に変わってしまいます。

マイナーたちは、ブロック内の取引データだけを使ってハッシュ値を生成するわけではありません。その他のデータも使用されます。その一つが、ブロックチェーンに保管されている末尾ブロックのハッシュ値です。

各ブロックのハッシュ値はその直前のブロックのハッシュ値を用いて生成されるため、これがデジタル版の「封蠟」の役割を果たします。ブロックを改ざんすると他の全員に知られてしまうため、ハッシュ値はそのブロック、そしてそれに続く全てのブロックの正当性を保証します。
ブロックチェーン上に既に保管されているあるブロックを変更して、取引を偽装しようとした場合、そのブロックのハッシュ値が変化します。誰かがハッシュ関数を実行してそのブロックの真正性を確認しようとした場合、ハッシュ値がブロックチェーン上の当該ブロックに既に保管されていたハッシュ値と異なることに気付くでしょう。こうして、ブロックの偽造が直ちに特定されます。
各ブロックのハッシュ値はチェーン上の次のブロックのハッシュ値を生成するために使用されるため、一つのブロックを改ざんした場合、その次のブロックのハッシュ値も不正な値になります。この現象がその後のチェーン全体で連鎖的に発生するため、整合性が全て失われます。

コインの獲得競争

以上が、マイナーによるブロックの「封鎖」方法です。マイナーたちは、ブロックのマイニング専用に開発されたソフトウェアを利用し、競ってこの作業に取り組みます。誰かがハッシュ値の生成に成功する度に、その人に25ビットコインの報酬が与えられ、ブロックチェーンが更新され、ネットワーク上の全員に通知されます。これがマイニングを続け、取引機能を維持するためのインセンティブとなります。

問題は、データの集合体からハッシュ値を生成するのが非常に簡単だということです。コンピューターは、このような処理を大変得意としています。ビットコインネットワークはその難易度を高める必要があり、さもなければ、全員が毎秒数百個単位で取引ブロックをハッシュ化し、全てのビットコインが数分以内に採掘されることになってしまいます。ビットコインのプロトコルでは、「proof of work(仕事の証明)」と呼ばれる仕組みを使って、ハッシュ化の難易度を意図的に高くしています。

ビットコインのプロトコルでは、旧来型のハッシュ値を認めていません。各ブロックのハッシュ値が一定の形式になることを求めています。すなわち、ハッシュ値が一定数の0で始まることが条件です。ハッシュ値を生成する前に、ハッシュ値がどのような値になるかを推測することは不可能であり、組み合わせるデータを1つ変えるだけで、ハッシュ値は全く別の値になってしまいます。

マイナーたちは、ブロック内の取引データを変更することはできませんが、新しいハッシュ値を一つずつ生成するために、使用するデータを変更する必要があります。ここで使用されるのが、「ナンス」と呼ばれるランダムなデータです。ナンスは、ハッシュ値を生成するために取引データと組み合わせて使用されます。ハッシュ値の形式が要件に合わない場合は、ナンスを変更し、データ全体を再度ハッシュ化します。条件を満たすナンスを見つけるには数多くの試行錯誤が必要で、ネットワーク上の全てのマイナーたちが同時にこれを行います。これが、マイナーたちがビットコインを獲得する仕組みです。

ビットコインマイニングのインフォグラフィック(英語)

WHAT IS BITCOIN MINING

by bitcoinmining.com

No Comments