マイニング(発掘)と言う監視システム

2016年5月25日

採掘と言うのは、完全なる比喩で、実際は、取引の承認作業をしています。そして、膨大なコンピューターパワーをつかって不毛なチキンゲームをしています。

まず、ビットコインの仕組みを少し説明します。

ビットコインの取引、たとえば、AさんからBさんに1コイン支払ったというようなものは、取引として記録されます。これはリアルタイムで、たとえばこんなところから見ることができます。なんとビットコインを介した取引は丸裸。すべての取引がこうしてネット上でリアルタイムで参照できるんです。

さて、このリンクには、「未承認の取引」ってなってます。そう、ビットコインの取引は、承認されてはじめて大丈夫だと確認される。それまでは、二重支払があったり、もしくはニセや改ざんした取引だったりするかもしれない。

この承認作業というのを、いろんなひとが競争してやっています。これが「採掘」の実際のすがたです。この作業にかかるコンピューターパワーの見返りとして、承認作業をしたひとにたいして、一定のビットコインが与えられる(新規に生成され、承認作業をしたひとのものになる)というわけです。

そして、ではこの承認作業というのは何をしているのか?

これが予想を超える変なものでした。

名称未設定
ビットコインの取引は、少ないときは100、多い時は1000といった単位でまとめられて、ブロックという単位をなして記録されます。

このブロックごとにまとめられた取引記録に番号がつけられ、チェーン上につながって、取引記録全体として、保管されます。これは過去のすべての取引を記録した元帳のようなものです。

承認作業とは、承認済みの元帳に、(未承認の)あたらしい取引記録のブロックをつなげて追加していく作業です。

ブロックを元帳の末尾に正しくつなぐためには、つなぐための「キー」となる値をみつけなくてはいけません。そのキーを見つけるには高速なコンピューターをつかってとても時間がかかるのですが、いったんそのキーがみつかれば、iphoneでも簡単にそれが正しいということを検証できます。なので、ビットコインの参加者はだれもが、それが正当な取引であることを確認できます。

採掘とは、具体的には、この「キー」の値を見つけることです。

問題は、このつなげるためのキーをみつけるのに時間がかかるのです。

技術的にはこういうことです。承認したい取引の記録(ブロック)があります。これをB1とします。そして、この取引の元帳の最後に記録されている取引ブロックを、B0をとしましょう。

まず、B0の記録をつかって、その記録を代表するようなある値をつくります。これをH0とします。これと、もうひとつの値が「キー」に相当するものでkeyとします。この2つの値、H0とnをさらにハッシュ関数に入れて、ハッシュ値dを得ます。。ビットコインではSHAのアルゴリズムをつかっています

SHA (H0 , key ) → d

さてこのとき生成されたd の値をみるのですが、この値の先頭にゼロがたくさん並ぶ値になるまで、keyを変えて試行錯誤するのです。ビットコインでは、得られたdの値に、たとえば先頭に0が32個並べば、それでブロックをつないでいいという決まりになってます。

ハッシュ値をつくって、先頭にゼロが32個ならぶというのは、とんでもなく低い確率です。しかし、それができるまで、ひたすらnの値をランダムにつくって、ハッシュ関数にいれて、ゼロが32個ならぶかどうかをためしまくります。

ひたすらです。

この試行錯誤の早さが、採掘の早さとよばれ、○○メガハッシュ/s とかで話題になってるわけです。

これが採掘者が実際にやっていることです。はれて、適切なkeyの値がえられたら、それが正解です。それを見つけたひと(毎ブロック先着1名のみ)は、新しく取引の記録のブロックを、以前のブロックに正当につなげることができます。そして、新しくビットコインが生成され、それをもらえます。

このkeyをみつけるのは、ブロック毎に1名です。なので、みんな競争して見つけあいをしています。これが発掘競争といわれるものです。

なぜ、こんなことをしているかというと、これがビットコインのシステムが、分散的に、取引の改ざんを防いているシステムの根幹なのです。ビットコインのアイデアは、この部分が肝だといえましょう。

このような作業には、時間がかかります。当てずっぽうにkeyとなる値を、ひたすら試して、あたりをひくまで、全世界でスパコン何台分もの、計算をやってためしているのですから。

もし、悪意のあるひとが、取引記録を改ざんしようとしたら、過去の改竄にあわせて辻褄があうように、このkeyも改竄しないといけません。しかし、このkeyを探すのはとても時間がかかるため、改竄者は、容易にはこのkeyを改竄できないのです。しかも、keyは連鎖しているので、改竄した部分以降のkeyを全部改竄しないといけない。

改竄者がkeyを改竄するために再計算する時間と、正規の人(つまり全世界の採掘者)が正しいkeyをみつけるのと、どっちが早いかという競争になります。全世界のひとが参加している発掘者のコンピューターパワーには、改竄者はとうてい追いつかないという形になるのです。これがbitコインの安全を担保する仕組みです。

これは、よく考えると、ようするに改竄者に対抗できるように、常に、改竄者をうわまわるコンピューターの計算パワーをkeyをみつけるために投入しつづけなくてはいけないということになっています。つまり、ビットコインの安全性を維持するために、毎日採掘者は膨大なコンピューターの計算能力を、ある意味不毛な計算につぎ込んでいるのです。潜在的な改竄者に勝てるように。

いわばビットコインは、軍拡競争をしているのといえましょう。

テロ国家 vs 国連軍みたいな感じです。悪のテロリストが軍備を拡張すると、国連軍は共同してそれを上回る軍備を拡張します。

というか、実際は反対です。

国連軍(発掘者)が膨大な軍備を日々拡張して無駄に見せつけることで、これが抑止力になって、テロ国家が戦争をしかけないことを期待するわけです。

このシステムでは平和は訪れません。軍備をみせつづけなくてはいけないのです。

そして、その軍備とは、膨大な計算能力・コンピューターパワーとそれを動かす電力です。電力は今年の4月の時点で、1日当たり982メガワットになっています。

(参考資料)

satoshi white paper

 http://www.bitcoin.co.jp/docs/SatoshiWhitepaper.pdf

kahan academy  bit coin what is it?

 https://www.khanacademy.org/economics-finance-domain/core-finance/money-and-banking/bitcoin/v/bitcoin-what-is-it

bit coin FAQ

http://www.bitcoin.co.jp/faq/faq.html