ビットコイン相場で話題の「マイニング(採掘)」って何?
そうすると、ブロック#2のヘッダ部分は「634505251???」という数値になる。
ここで、最後の「???」に相当する「ナンス」については説明していなかったが、マイニングでは実はこの数値が重要である。「ナンス」の数値は外部から与えられるものではなく、「ナンス」はネットワーク参加者(採掘者)が探しあてる数値である(図表5で「ナンス」を黄色にしているのは金発掘のイメージのため)。
では、採掘者はどのような「ナンス」(「???」の数値)を探しているのだろうか。それは、ブロックヘッダからハッシュ値を計算したときに、そのハッシュ値が閾値(target)を下回るような「ナンス」である。この閾値を下回るとブロックが作成される(そこに含まれる取引が承認される)。
これを具体例で示してみたい。ここでは閾値としてハッシュ値(この例では「☆値」)が10未満となるような「ナンス」を探している状況を想像してみる。
採掘者がナンスとして「001」を選んでブロックヘッダの「☆値」を計算してみたとする。この場合、「ブロック#2のヘッダ」=「634505251001」(下3桁がナンスで今回は「001」)となり、この☆値は25である10。☆値が10以上であるためブロックは作成できない。
-----
10 6+3+4+5+0+5+2+5+1+0+0+1=32で、634505251001÷32=19828289093あまり25
次にナンスとして「045」を選んでみる。この場合、「ブロック#2のヘッダ」=「634505251045」であり、☆値は5となる11。☆値が10未満であるためブロックが作成できる。
-----
11 6+3+4+5+0+5+2+5+1+0+4+5=40で、634505251001÷40=15862631276あまり5
したがって、「ブロック#2」は「ヘッダ部分」が「634505251045」、これに「取引リスト」が加わったものとして作成できる(前掲図表5)。これ以外の「ナンス」でも☆値が閾値以下になるような「ナンス」であればブロックは作成できるが、どの"当たり"の「ナンス」がブロックとして採用されるかは早いもの勝ちである(1番早く見つけられた"当たり"の「ナンス」でブロックが作成される)。
また、「ブロック#2」のヘッダである「634505251045」の☆値となった「5」は「ブロック#3」のヘッダの先頭部分の数字12となる(「ブロック#2」ヘッダの先頭部分が「ブロック#1」のヘッダのハッシュ値であったことと同じ)。
-----
12 実際にはソフトウェアのバージョン情報がさらに先頭につく(脚注8と同様)。
このように前ブロックのヘッダ部分のハッシュ値が次ブロックに組み込まれていることから、ブロックがチェーン状に繋がっているイメージが持てる。そのため、このブロックの連なりがブロックチェーンと呼ばれる。そして、前のブロックが作成されてはじめて次のブロックのヘッダに格納すべき数値が分かる。そのためブロックは1列にしかつながらず、いわばブロックのハッシュ値はその前までに繋がっているブロックすべての情報が集約されているのであり、これがチェーンの役割を果たしていると言える。
このブロック作成で重要なのは、もちろん「ナンス探し」であるが、これは"あてずっぽう"で探すしかない(今回の例で「☆値」をやや込み入った計算にしたのは、"あてずっぽう"でしか探せなさそうな雰囲気を出すためでもある)。
また、先ほど述べたように"当たり"の「ナンス」探しは早いもの勝ちである。早くナンスを探せた参加者(ノード)はブロックを作成し、その報酬として新しいコインを得ることができる13。それ以外の参加者(ノード)には報酬はなく、次のブロックでナンス探しをしなければならない。
-----
13 取引リストに含まれている取引の手数料も得ることができる。