2017.08.25Tweetビットコインはビックカメラ全店や新宿マルイでの決済に使えるようになり、徐々にではありますが身近なものになろうとしています。我々Web制作の現場でも話があがることが多くなってきました。Cash)」という新しい仮想通貨が生まれることになり、大きくメディアで取り上げられました。このような流れのなかでビットコインを筆頭とした仮想通貨というものに関心を持って、調べている人も多いのではないでしょうか。調べていく過程で「ブロックチェーン」のことはなんとなく理解できたとしても、その後「マイニング」のことを理解しようとしてつまずいてしまった人も多いと思います。なんとなく理解したつもりになっていたのですが、いざ人に説明しようとするとまったく要領よく説明できませんでした。いうわけで先日、ビットコインの初心者勉強会に参加し、マイニングについてある程度理解できたような気がするのでメモしておきます。メモ程度のものとご理解ください。■「小さな経済」としてのビットコインまず話を聞いていて思ったのは、ビットコインとはそのシステム自体が「小さな経済」、または「自動的に運営されている会社」のようなものであるということです。話をわかりやすくするために、今後「ビットコイン」と言った場合そのシステム全体を、またその通貨単位である「BTC」と言った場合は通貨としてのビットコインを指すことにします。BTCの取り引きはブロックチェーンに登録されることによって承認されたことになります。マイニングとはブロックチェーンに新たなブロックを生成し、未承認の取り引きを登録する「仕事」です。仕事なので当然報酬が発生し、それはBTCによって支払われます。このマイニングをする人(実際にはマシンですが)のことを「マイナー」と呼びます。BTCの発行上限は2100万枚とあらかじめ決められています。BTCが新たに発行される機会はひとつしかありません。それはブロックチェーンに新規ブロックを生成した時にマイナーに支払われる報酬です。その報酬は4年毎に半減期を迎え、運営当初は50BTC、今は2度の半減期を迎え12.5BTCになっています。考えられていると思うのは、半減期を迎える頃にはその価格も上がっていることが想定されていることです。1BTCが1万円だったものが、半減期にその貨幣価値が2万円以上になっていればマイナーが受取れる額は変わらず、マイニングという仕事を維持出来るわけです。実際当初ほとんど価値がなかったBTCは、今や30万円前後の価値を得ています。1BTCが30万円として、新規ブロックを生成できたマイナーには単純計算で375万円が報酬として支払われることになります。けっこうな額ですよね。work)と呼ばれています。これを続けていくとやがて発行上限を超える時がきます。その時ビットコインはどうなるのでしょう?――発行上限を迎えると当然BTCの新規発行はなくなります。するとその代わりとして、送金手数料が報酬として支払われる仕組みになっています。ビットコインが埋蔵量がわかっている「金」に例えられるように、BTCはその希少性から、その頃にはかなりの高値になり、少ない送金手数料でもマイニングが賄えると考えられているのです。■マイニングの実際の仕事とは?このように、ビットコインが回っていくために必要不可欠なマイニングという仕事を長年にわたり維持していく方法があらかじめ組み込まれているわけです。この仕事と報酬の循環(エコシステム)がうまく設計され機能しているかということが、仮想通貨を判断する一つの材料になるでしょう。マイニングとは実際どんな仕事なのでしょう?マイナーは、まず未承認の取り引き情報、直前のブロックの値、これにマイナーが付加する新たな値(ナンス)から、ハッシュ値を生成する必要があります。そのハッシュ値が指定された値になるナンスを1番最初に見つけたマイナーが新たなブロックを生成し報酬を得ることができるという仕組みになっています。マイニングとはつまりこの「計算競走」であり、こうすることによって取り引きの改ざんをしずらくし、また特定の誰かに報酬が偏らないようにしています。(ただ現在、電気代が安い中国にマイナーが集中しており、必ずしも予想通りにいっていない部分もあるそうです)通常なら3D演算に使われる単純計算が得意なGPUをいくつも搭載したマイニングマシンを見たことがあると思います(現在ではGPUでのマイニングもほとんど無理で、AISCという専用のものが使われているそうです)。このことからマイニングは一回の複雑な計算で求められるのではなく、ある種総当り的な単純計算の繰り返しであることがおわかりいただけるでしょう。■なぜ10分?今後の課題ここで疑問が生じます。当初は普通のPCでマイニング出来たそうなのですが、今は前記したようにハイスペックなマイニング・マシンでしか報酬を得られない状態です。おかしいではありませんか、計算能力が上がっているのだから、ブロック生成時間はどんどん短くなっていいはずなのです。運営当初よりブロック生成時間が短くなっていてしかるべきです。それは新しいブロックがつくられる間隔がシステムによって10分と決められているからです。ビットコインは、ブロック生成時間がだいたい10分となるように、その計算の難易度を自動的に上げ下げする設計がなされているのです。他の仮想通貨ではブロック生成時間が15秒というものまであり、この時間が短ければ短いほど送金が早くなるはずです。10分なのであるかは、まだよくわかっていないので今後の課題とします。indexソースコードは自己責任により自由にお使いください。何らかの不利益が生じたとしても一切責任を負いません。