Bitcoinの仕組み

Bitcoinの仕組みについてはSatoshi Nakamoto氏の論文※1やBitcoinwiki※2を見て頂くのが一番正確なのですが、理解するには多少専門知識が必要だったり、英語が必要だったりするため、噛み砕いて解説していきたいと思います。

Bitcoinの仕組みを理解するために押さえておきたいポイントは以下の3点です。
・取引記録を分散型データベースに持っている
・取引記録を承認するためにはマシンパワーが必要
Bitcoinは自動的に発行され、発行量の上限が決まっている

1.取引記録を分散型データベースという形で保存する
Bitcoinでは、電子署名を連鎖させていくことで全ての取引を記録します。全ての取引記録が正しく管理されていればコインの偽造は不可能になるので安全です。

問題はこの取引記録をどこに保存するかです。一つの企業や団体が管理してしまうとそれは結局中央機関を持つ通貨と変わりがありませんし、その一つの記録が書き換えられてしまえば終わりです。

BitcoinではP2Pの分散型データベースとしてこの取引記録を持つことにしたのです。しかし、これだけではユーザ間のデータベースに不整合が起きた時、どれが本物の取引記録か分からなくなってしまいます。この問題を解決するのが、ブロックチェーンと呼ばれる仕組みで、これこそがBitcoinが産んだイノベーションの核心です。

2.proof of workによってBitcoinの信頼性を守る
まず、取引の記録をブロックという単位で切り分けます。一定時間の間に発生した取引をブロックとして保存していくのです。ブロックを作る時には3つの要素が必要になります。1つ目は最後のブロックが作られた時点からブロックを作ろうとしている時点の間に起こった取引情報。2つ目は最後のブロックが持つハッシュ値。3つ目はnonceと呼ばれる変数です。

ブロックの生成とはこの3つ目のnonceという変数を増加させながら目的のハッシュ値を割り出すproof of workと呼ばれる作業になります。一方向ハッシュ関数では、出力された結果から入力した文字列を推測することは出来ません。また、入力した要素が1bitでも違えば全く異なる結果が出力されます。ブロックの生成では、ある条件を持つハッシュ値が作られるまでnonceの値を1つずつ増やしていきます。

例えばハッシュ値の先頭2桁が00から始まるというのが条件だったとします。入力に対する出力はランダムなので、目的のハッシュ値が作られるかどうかは確率的にしか求めることが出来ません。しかし秒間の計算回数が分かっていれば1つのブロックを生成するのに必要な理論時間がわかります。Bitcoinでは、ブロックを生成しようとしているコンピュータのリソース数を計算し、1つのブロックが生成されるまでの理論時間が10分になるように条件を変動させています。

こうして条件を満たすnonceが見つかったらそのハッシュ値と共に最新のブロックとして分散データベースに保存します。このブロックの連なりをブロックチェーンと呼んでいます。

では、なぜただ単純に取引記録のハッシュ値を計算するのではなく、10分も時間がかかるproof of workをさせるのでしょうか?

先ほど、ブロック生成の難易度はブロックを生成しようとしているリソース数に依存するということを述べました。

ブロック生成のためにコンピュータリソースを提供している人たちはブロックの生成に成功すると報酬としてBitcoinが支払われます。報酬がもらえるのは一番最初に次のブロックを生成した人だけです。競争に打ち勝つには、短時間でより多くの計算が出来るマシンが必要になります。

また、1台で計算を行うよりも複数台で計算を行い、ブロック生成に成功した時には報酬を山分けするといった仕組みにする方がコインを入手する確率が上がります。

このような競争が働いているため、もし市販されているマシン1台だけでブロック生成を行おうとすると丸1年かかってもブロックを生成することが出来ません。

ここで、もし悪意のあるユーザがBitcoinに参加し、過去の取引記録を改竄しようとした場合を考えてみましょう。

取引記録を改竄するので、ハッシュ値が変わります。すると当然今のnonceだと条件を満たさないハッシュ値になってしまいますので、proof of workをやり直す必要があります。もし、悪意あるユーザが平均的な性能のマシンを1台しか持っていない場合、proof of workが終わるまでに1年がかかってしまいます。

さらに、例え1年後にブロック生成に成功したとしても今度はその間に進んだブロックを再計算しなくてはなりません。なぜなら、ブロックは一つ前のブロックのハッシュ値を要素として持っているのでこのままだと不正にブロックを生成したことがばれてしまうためです。取引記録を改竄するには過去のブロックから現在に至るブロックまでのproof of workをやり直し、さらに最新のブロック生成に追いつき追い越す必要があります。

1年経つ間にブロックは52,560個も進んでしまっていますし、その後も10分に1つブロックが生成されていくので、この悪意あるユーザがブロックの改竄に成功するのは理論上不可能になりますよね。

長くなりましたが、Bitcoinの取引の信頼性は善意のユーザのリソースが悪意あるユーザのリソースを上回っている限り担保されるということです。

Bitcoinではこのユーザがブロック生成をする行動をマイニング(採掘)と呼んでいます。

ブロックを生成出来るかどうかは確率的にしか分からなくて、ブロックを生成した時しか報酬が得られないというのはまるで金の採掘をしているかのようですからね。

3.Bitcoinと金の関係
Bitcoinが金に似ているのはこれだけではありません。Bitcoinはあらかじめ埋蔵量が決まっているのです。

Bitcoin自体はマイニング以外の行為から生成されることはありません。現在から2017年までは1ブロックを生成した時の報酬は25 Bitcoinです。その後4年ごとに報酬は半減していき2140年までに合計2100万 Bitcoinが生成されその後一切新しいBitcoinが生まれることはありません。これは何を意味するかというとBitcoinは本質的にデフレ経済モデルの通貨なのです。

デフレが進んでいくと1Bitcoinの価値が大きくなりすぎて使えなくなるのではないでしょうか?

その心配はあまりありません。1Bitcoinは最大1/1000000まで分割して使えることが出来るからです。とはいえ、発行量があらかじめ決まっている通貨モデルというものには色々と欠点があります。

※1
http://bitcoin.co.jp/docs/SatoshiWhitepaper.pdf

※2
https://en.bitcoin.it/wiki/Main_Page