ビットコインの採掘とは実際には何をしているのか?【仕組み入門1】

レポート「アルトコイン図鑑」では30種類以上のコインの概要と見通しを解説(詳しく)

ここしばらく、ビットコインにずっぽりハマっています。すっかりビットコイン研究家になりましたw。各取引所にアカウントをつくったり、試しに採掘してみたり。ここ1ヶ月くらいは、集中してビットコインについて書いていきたいと思います。

ビットコインの仕組みについて、あれこれ 、調べてみました。技術的なこともあわせて、すくなからずいろんな知識をえたので、それをシェアしていこうと思います。

まず、まったくわからないのが、ビットコインの採掘でしょう。これはいったい何をしているのか?

私もまったく理解できてませんでした。何かコインのアルゴリズムとして機能する特殊な関数の値を探しているのかとおもっていました。しかし、違いました。

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

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

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

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

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

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

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

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

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

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

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

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

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

技術的にはこういうことです。

ハッシュ関数 (直前ブロックの情報,  新ブロックの取引記録,  nonce) →  ハッシュ値

まず、承認済み元帳の末尾のブロックにある情報を得ます。そして、付け加えたい新ブロックにふくまれる取引をまとめた情報にします。さらに、nonceとよばれる32ビットの任意の値、この3つを、ハッシュ関数というものにいれて、256桁の値を得ます。これがハッシュ値と呼ばれるものです。ハッシュ関数は、ビットコインではSHA256を二重にして使っています。

さて、このとき生成されたハッシュ値をみるのですが、この値がある値以下になるまで、nonceを変えて試行錯誤するのです。ある値以下というのが分かりにくければ、こうも言い換えられます。この値は256桁の値ですが、その先頭にゼロがたくさんならぶような値をがえられるとOKということです。具体的に現在の状況では、先頭にゼロが16個並ぶようなハッシュ値が得られるnonceを見つけたとき、それでブロックをつないでいいという決まりになってます。

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

ひたすらです。

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

これが採掘者が実際にやっていることです。はれて、適切なnonceの値がみつかり、生成したハッシュ値にゼロがたくさんならんだら、それが正解です。それを見つけたひと(毎ブロック先着1名のみ)は、新しく取引の記録のブロックを、以前のブロックに正当につなげることができます。そして、新しくビットコインが生成され、それをもらえます。そして、そのハッシュ値が、過去のブロックの情報を含み、ブロック同士をつなげるkeyの役割をします。

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

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

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

もし、悪意のあるひとが、取引記録を改ざんしようとしたら、過去の改竄にあわせて辻褄があうように、この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

 

・おしらせ
ビットコイン研究所の有料版サロンでは、平易な言葉で最近の技術や業界事情などについて解説するレポートを毎週配信しています。

暗号通貨について、もっと知りたい、勉強をしたいというかたに情報を提供しています。サロン内では疑問点も質問できます。

一度登録いただけると100本以上の過去レポートが読み放題で、大変お得です。レポート一覧がこちらのページありますので、よろしければいちど目をとおしてみてください。