まなさん、おはようございます。前回の記事ではビットコインのブロックチェーンのブロックの中身について説明させていただきました。それをまだ読んでいない方は、この記事を読む前に読んでいただけると幸いかと思います。今回はProof of Work(PoW)式のマイニングについて説明します。
マイニングは競争です。PoWでは、ビットコインの場合、誰が一番早くパズルを解けるかという競争であり、勝者は次のブロックをマイニング(作成)する権利とマイニング報酬としてビットコイン(現在12.5BTC)をもらいます。パズルを解けたら、あなたがワークをプルーブした(仕事した証拠)という風に認められます。というのは名前の由来です。もちろん、これは全部自動的に監視されます。
EthereumはProof of Steakという形式のマイニングを扱っています。それはまた全然違う話なので割愛しますが、言いたいのは、この記事で説明されるマイニングと違うマイニング形式も存在します。
「誰が一番早くパズルを解けるかと?」と思うでしょう。そうです。ビットコインマイニングは、パズルを解ける競争であり、前回の記事で説明を省いたBitsとNonceがマイニングにおいて重要な変数です。ブロックヘッダに六つの変数が揃うと完成です。バージョン、前ブロックのハッシュ、マーケルルートのハッシュ、タイムスタンプとビットは次のブロックヘッダを形成させる一般的に知られている情報です。そのため、ブロックをマイニングするときに、ヘッダにそれを記入します。あくまでもイメージですが、以下の図のような感じであり、Nonceだけが空欄になっている状態です。
マイニングのプロセスは単純ですが完璧に理解できるために色々説明しておかないといけません。しかし、詳しいことに興味がない方はこれでけを覚えてください:
このシリーズの第二回に解説したのですが、「。」だけを打つことでハッシュ値が完全に異なってきます。マイナーはとてつもない計算力のを使ってNonceに1、2、3、…を次から次へ記入し、ヘッダのハッシュを計算します。そのハッシュをターゲットと比べ、ヘッダのハッシュがターゲットと同じ、またはより小さかったら、マイナーがパズルを解けたという意味です。
ビットはパズルの難易度を設定します。これは2,016ブロックごとに(~2週間)、パズルが解けられる(ブロックが作成される)ために必要な時間を平均10分に維持するように更新されます。前回紹介したこのウエブサイトを見たら気付くと思いますが、「難易度」という変数もあります。それは難易度を可視化するための単位にすぎません。(二つのビットを比べてもどれの難易度がどれほど高いのかすぐに分からないために使われています。)
ブロック#50400
ビット:471907495
難易度:7.82
ブロック#50399
ビット:472518933
難易度:6.09
ビットからは、Target(ターゲット)が特定のアルゴリズムによって計算されます。ターゲットが余計に長いため(=重い)、比較的に短いビットという形に変化されます。例えば:
ビットは18062776だと、
ターゲットは:0000000000000000062776000000000000000000000000000000000000000000
Nonce(ナンス)
ナンスは一番面白い変数だと個人的に思っています。特に意味はなく、ただの数字なのですが、これを当ててみるために世界中にマイニング工場を作ったりします。(著作権のために写真を貼りませんが、GoogleでBitcoin Farmを検索したらいかにデカい工場があるか分かると思います。)
では、マイナーたちは実際何をしているのか、どういうパズルを解けようとしているのか、今から説明していきたいです。図2を見てみてください。
①:この図ではナンスとして入れる数字は✘です。1からスタートします。
②:ナンスを記入し、ブロックヘッダを完成させます。
③:全部の情報が揃ったブロックヘッダをハッシュします。
④:そのハッシュはターゲットと同じ、または小さいかが確認されます。
はい:パズルを解けた。㊗㊗報酬ゲットだぜ!㊗㊗
いいえ:✘に1を足して、全部をやり直します。
これだけです。もちろん、全てのマイナーが1からスタートするわけではなく、ナンスに入れる数字のさばき方はみんな違うのですが、根本では何も変わりません。また、このグラフによると2018年6月30日に、世界中のマイナーによって毎秒行われるハッシュ(図2のプロセス)は35,588,942テラハッシュです。
35,588,942,000,000,000,000回
これを600でかけたら、一つのブロックができます (600秒=10分)。しかし、技術が進化し、マイナーも増えるため、毎秒行われるハッシュも増えます。それでパズルがより早く解けられてしまいます。そのためにブロックチェインは2,016ブロックごとに難易度を高くします。マイナーが減ったら低くします。
少し長くなってしまいましたが、いかがでしょうか。マイニングするというのは数字を当ててみるという子供のようなゲームに過ぎませんが、現在もっとも注目浴びている現象といっても過言ではないと思います。
次回は恐らくこのシリーズの最後になり、Nodeについて説明しようと思いますので、そのときもよろしくお願いします。
Blockchain技術シリーズ:
誰にでも理解できる:Blockchain技術 ① - チェーンの意味と働き
誰にでも理解できる:Blockchain技術 ② - ハッシュとは?
誰にでも理解できる:Blockchain技術 ③ - ブロックの中身
誰にでも理解できる:Blockchain技術 ④ - マイニング