ビットコイン相場で話題の「マイニング(採掘)」って何?
具体的に、執筆時点でのビットコインのブロック作成の閾値を見てみよう。
【ブロックヘッダハッシュの閾値(Target)】(以下2進数・16進数・10進数の3種類で標記しているがすべて同じ数値) 「10110011110011101001000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000」(2進数) 「b3ce90000000000000000000000000000000000000000」(16進数) 「1076379879376199359324913638762382564863378102643851264」(10進数)
これだけ見ると、閾値も大きな数に思えるが、ハッシュ値がとりうる数と比較するとかなり小さい数であることが分かる。
例えば、2進数でみると閾値の桁数は(上記枠内の桁数は目で数えるのは大変だが)180桁となっている。ハッシュ値の総桁数は(2進数で)256桁なので、ランダムにハッシュが生成されたとして、256桁のハッシュがおおよその閾値である180桁より小さい数値になれば"当たり"といえる。
この可能性を256桁のすべての(2進数の)数字のうち先頭76桁がゼロとなる数字が見つかる割合とみなせば、確率的に1/276≒1.32×10-23となる18。また、この逆数は7.56×1022となる。
つまり、現在"当たり"の「ナンス」を探すには、おおよそ7.56×1022回のハッシュ計算(発掘作業)が必要となっていることが分かる19。10分間(600秒)で"当たり"の「ナンス」が発見されるように難易度は調整されるので、1秒当たりでおおよそ1.26×1020のハッシュ計算(発掘作業)が行われていることになる20。
この1秒当たりの計算量はハッシュレート(Hash Rate)と呼ばれ1012を表す単位T(テラ)や1015を表す単位P(ペタ)、1018を表す単位E(エクサ)を使い、たとえば126EH/s(エクサハッシュ毎秒)などと表される。実際の「マイニング」に利用されている計算量は、図表6の通り激増している21。筆者の7年前のパソコンでは起動できたとしても、おそらく"当たり"のナンスは発見できないだろうし、宝くじを買って"当たる"可能性の方が高そうだと思える程度に"当たり"は少ない(しかし、誰かが約10分に一度"当てている"のも確かである)。
-----
18 2進数では各桁はゼロか1の2通り取り得るが、先頭76桁がすべてゼロである必要があるため1/278となる。約100垓(京の1つ上の単位)分の1である。閾値がキリの良い数値でないため、例えば先頭76桁がすべてゼロでもその後の2桁が11だと閾値を超えてしまうが、そのあたりは捨象している。
19 276≒7.56×1022("当たり"の「ナンス」を探すために必要な計算量)
20 1.26×1020×600(秒)=7.64×1022。
21 図表6で示したハッシュレートは直近で約145EH/sであり、本文中の必要ハッシュレートよりやや大きいのは途中の確率を計算する際に捨象した部分があるためと思われる(脚注18参照)。