こんにちは、yoshihiroです。前回に引き続き、短期集中ブロックチェーン講座のPart 2です!
↓前回の記事はこちらから↓
今回は、マイニングについてです!
マイニングといえば、パソコンにめっちゃ計算させてビットコインをもらう作業だということは知っていても、具体的な仕組みとかどんな計算をしているのかとかはよく分からない人も多いのではないでしょうか。
この記事では、そのあたりに焦点を当てて詳しく解説していきたいと思います!
※本講座では、最も基本的なビットコインで使われるブロックチェーンを想定して解説しています
前回の記事で、ブロック同士がチェーン状に繋がっているイメージができましたね。では、チェーンの一番端っこはどうなっているのでしょう。
片方の端っこには、ブロックチェーンが初めて生まれた時にできたブロックがあります。このブロックは、すべてのブロックチェーン・仮想通貨の起源とも言えるブロックであり、ジェネシス・ブロック(genesis block)と呼ばれています。
ジェネシス・ブロックには記載すべき前のブロックのデータがなく、マイニングによってではなくサトシ・ナカモトにより作成されたという点でも特別なブロックです。
では、もう片方の端っこはどうでしょう。
ビットコインは今も世界中で取引がなされおり、新たな取引データが次々に生まれています。ということは、そのデータを格納するための新たなブロックが必要になりますね。
つまり、ブロックチェーンのもう一方の端っこは、今でも新しいブロックが生み出され続けているのです。
新しいブロックの作り方は決まっています。
「取引データ・ブロックのバージョンなどのデータ・ハッシュ・ナンス」の4つの要素を過不足なく正確に記載すればよいだけです。
ただし、だれが新しいブロックを作るのか、ということは決まっていません。ブロックチェーンの本質は、中央管理者がいなくとも正常に機能するという点です。参加する人全員が利用者であり管理者であるのです。
しかし、だれもが好き勝手に新しいブロックを作れてしまっては、どれが正しいのかも分からずシステムが破綻してしまいますよね。
そこでビットコインのブロックチェーンでは、参加者の中で一番仕事をした人に新しいブロックを生成する権利を与えるという仕組みになっています。そして、ブロックを生成した報酬としてビットコインが付与されます。報酬がなければだれもやりたがらないですからね。
ここで言う「一番仕事をした」とは、決められた条件のハッシュを生成するナンスを見つけることです。
ブロックチェーンの各ブロックには、前のブロックの情報を要約して暗号化したハッシュが記載されています。このハッシュは、16進数で64桁の数値なのですが、記載できるハッシュには決まりがあります。
具体的には、「先頭から18桁目までは0が並ばないといけない」というようなものです。そして、そういうハッシュを上手く生成するようなナンスを一番早く見つけた人が、「一番仕事をした」人になります。
ハッシュの生成はランダムであり一方通行なので、答えのハッシュから逆算することはできません。そして、元データが少しでも異なれば、生まれるハッシュは大きく異なります。
そのため、条件に合うナンスを探すためには、ひたすらナンスの値を変えてハッシュを生成し続けて、たまたま上手くいくことを願うしかないのです。
まるで金鉱を求めて山を掘り続けているみたい…。まさに、マイニングですよね。一番仕事をした人にブロックの生成権を与えるこの仕組みは、PoWと呼ばれています。PoWについては、Part 4と5で解説します。
最後に、目的のナンスを見つけるのがどれ程難しいことなのかということを説明して、Part 2は終わりにしましょう。
現在のビットコインのブロックチェーンでは、ハッシュの先頭から18桁目までは0が並ばなくてはなりません(より厳密には、ハッシュの数字としての大きさが条件として定められています)。
ハッシュの生成はランダムですから、一桁目が0となる確率は(1/16)です。二桁目も0となる確率は、(1/16)×(1/16)=(1/256)です。
同様に計算していくと、18桁目まで0が続く確率は(1/16)の18乗で、約千垓(=10の23乗)分の1です。千垓は1兆の千億倍ですね。
例えば、地球のある銀河系の直径がおおよそ千垓cmです。銀河系を1cmごとに区切った時に、どれか1カ所にある答えを探すのと同じぐらいの難しさということですね。。。イメージできますか?
これを世界中のコンピュータを使って、約10分で行っているのです。
ちなみに、参加するコンピュータリソースの量により、ナンスが発見されるまでの時間が変わってきてしまいますよね。ビットコインの場合、新しいブロックが生成されるまでの時間が約10分となるよう、参加者の量に合わせて記載できるハッシュの条件を変えることで調整しています。
少し長くなってしまいましたが、Part 2はここまでです。僕はほかにもマイニングに関する記事を書いているので良かったら読んでみてください!
次回はPart 3は、ブロックチェーンがなぜ改ざんができないかについてです。
>>Part 3:なぜブロックチェーン上のデータは改ざん不可能なのか
↓この記事を書いた人↓