FX・仮想通貨・先物の最新業界情報メディア

Menu

【ブロックチェーンとビットコイン入門】第1回 ビットコインマイニングの仕組み


伝統的な法定通貨のシステムは、政府は必要に応じて単純に多くの紙幣を印刷しています。しかし、ビットコインではお金は全く印刷されず発見されるのです。世界中のコンピューターが、お互いと競い合う中でコインを「マイン(採掘)」します。

どのように「マイニング」は行われるのか?

多くの人はビットコインネットワークの中で常にビットコインを送り合っているが、誰かが全てのトランザクションを記録しない限り、誰が何に支払ったかを誰も知ることができない。ビットコインネットワークは、ブロックと呼ばれる一定時期に行われたトランザクションを集めたリスト作ることでこの問題を解決する。これらのトランザクションを承認し、総勘定元帳に書き出すことがマイナーの仕事である。

マイニングを台無しにする

この総勘定元帳はブロックのリストであり、「ブロックチェーン」と呼ばれる。全てのネットワーク上の、ビットコインアドレス間で行われた全てのトランザクションを参照することができる。新たなトランザクションのブロックが作られると、ブロックチェーンに追加され、ビットコインネットワーク上で今まで行われた全てのトランザクションの長いリストが作られる。何が起こっているか知ることができるよう、全ての参加者に継続的に更新されるブロックのコピーが渡される。

しかしその概略が記載されている元帳は信用されていなくてはならず、これらは全て電子的に保持されている。私たちはどのようにブロックチェーンが常に保持され、改ざんされないか確信を持つことができるのであろう?ここで、マイナー(採掘者)が必要とされる。

トランザクションのブロックが作られると、マイナーがそれをあるプロセスへ持っていく。彼らはブロックの情報を取り、それらに数式を適用し、違うものへと変化させる。その違うものとは、さらに短く、ランダムに選ばれたかのように見える文字と数字の連なりであり、「ハッシュ」と呼ばれる。このハッシュは、その時点でブロックチェーンの終わりにブロックと共に保存される。

ハッシュは興味深い特性がある。ビットコインブロックのようなデータの集まりからハッシュを作るのは簡単だが、ハッシュを見るだけでそのデータが何であるのかを見極めるのはほぼ不可能である。そして、大量のデータでハッシュを作り上げるのはとても簡単だが、それぞれのハッシュは独特である。ビットコインブロックの1つでも文字を変えると、そのハッシュは全く違うものに変わってしまう。

マイナーはブロックの中のトランザクションのみを利用してハッシュを作り上げるわけではない。他のデータも利用されている。その一部のデータは、ブロックチェーンに保持されている最後のブロックのハッシュだ。

それぞれのブロックのハッシュは、その一つ前のブロックのハッシュを使って作られているため、封蝋の電子版のようである。もし勝手に改ざんしたら皆がわかるため、今のブロック、そしてそれの後のブロックが正当であるということを確証する。

ブロックチェーンに既に保持されているブロックを変えて、トランザクションを偽造しようとしたら、そのブロックのハッシュが変わってしまう。もし誰かがハッシュの機能を使ってそのブロックの信用性を確かめたら、既にブロックチェーンに保持されているブロックのハッシュと異なることを発見するだろう。すると、そのブロックは偽造されているとすぐにわかってしまう。

一つ一つのブロックが次のチェインのブロックを作るために使われているため、ブロックを改ざんするということは、その後のブロックのハッシュも間違ってしまうということだ。それはそのチェインのずっと終わりまで続き、全てが間違ってしまう。

コインを巡っての争い

このようにマイナーはブロックを「封鎖」する。マイナーは皆ブロックをマイニングするために作られたソフトウェアを使って、ブロックの封鎖をすることを競い合う。誰かがハッシュを作ることに成功するたびに、その人は25ビットコインの報酬がもらえ、ブロックチェーンは更新され、ネットワークに参加している皆にそれが知らされる。それがマイニングを続け、トランザクションが成立させ続けるための動機である。

しかし問題は、データの集まりからハッシュを作るのはとても簡単であるということだ。コンピューターはこれがとても得意である。ビットコインネットワークはこれをさらに難しくしなければならない。なぜなら、そうしなければ皆が1秒に何百ものトランザクションブロックでハッシュを作り上げ、全てのビットコインが数分でマイニングされてしまう。ビットコインプロトコルは、「作業の証明(Proof of Work)」というものでこれを故意に困難にしている。

ビットコインプロトコルは古いハッシュ受け付けない。それはブロックのハッシュが特定の形であることを要求する:決められた数の0が初めになくてはならない。ハッシュを作る前にそのハッシュがどのようなものなのかを当てることは絶対にできず、そのデータの中に新たなデータを入れると、すぐにそのハッシュは異なったものへと変わる。

マイナーはそのブロックに含まれているトランザクションデータに干渉してはいけないが、違うハッシュを作るにはデータを変えなくてはならない。彼らはこれを「ナンス」と呼ばれるランダムなデータを使って行う。このデータはハッシュを作るために、トランザクションデータと共に使われる。もしハッシュが要求されている形式に当てはまらなければ、ナンスは変更され、もう一度ハッシュを作り上げなければならない。上手く機能するナンスを見つけるには、何度も試みることが必要となる場合もあり、ネットワーク上の全てのマイナーが一度に皆試みている。このようにしてマイナーはビットコインを得ている。

<元彌>