BitCoinの仕組みを紙とスタンプのごっこ遊びに例えてみる(2015/3改訂版)
仮想通貨「Bitcoin(ビットコイン)」が話題です。一般的な通貨とは異なり中央銀行が発行するのではなく参加者全員でその価値を維持するという点では金やプラチナなどの貴金属に近い性質があります。
金と同じく発掘(マイニング)をして生産、偽造やコピーは事実上不可能。コンピューター上の信用機関の管理外のデータがそのような性質を持つという事はすぐには信じがたいことです。
ここではそのBitCoinの技術を紙とスタンプのごっこ遊びに例えて説明してみます。すごく単純化してあるので実際とは異なる点や粗もあるかと思いますが、あくまで概要の理解が目的です。ご容赦ください。
目次
準備するモノ
- ランダムスタンプ(押すたびに違う10桁の番号が印刷される特殊なスタンプ)
- 沢山の紙
- コピー機
- 自分の名前の印鑑
- ペン
参加者は田中さんとデビッドさん花子さん、他2人の合計5人とします。それぞれ自分の名前の印鑑とランダムスタンプを持っています。上記以外は一切ないものとします。
最初のコインの作成
- 各自それぞれ紙にランダムスタンプを押し、手計算でそれぞれの桁を足し合わせます。下の桁が0になるまで紙を使い捨てて何度も繰り返します。
- 例えば田中さんが「5323569014」で桁を足したら5+3+2+3+5+6+9+0+1+4=30になる紙を作ったとしましょう。田中さんはペンで「一つ目のコイン」と記入しその上から自分の名前の入った印鑑を重ねて押し、場に5枚コピーして出します。
- 残りの4人は「5323569014 一つ目のコイン田中」が手計算でちゃんと10の倍数になることを確認します。これが最初のコインとなります。
最初のコインの使用と2つ目のコインの作成
田中さんがデビッドさんの車を買う代金として上記のコインをデビットさんに渡すとしましょう。
- 田中さんは手持ちの「5323569014 一つ目のコイン田中」の紙の一つ目のコインの行の真下に「一つ目をデビッドにあげます」と記入し、その上から「田中」の印を押します。「5323569014 一つ目のコイン田中 一つ目をデビッドにあげます田中」となります。
- 田中さんはこれを場に出します。場の全員はそれをコピー、コピーした紙にランダムスタンプを押します。これも下の桁が0になるまでコピーして捨てながら続けます。
- そのうち誰かのところで下の桁が0になるコピー、例えば花子さんが「4875209221」で足したら40の数値が印刷された紙を作ったとします。花子さんはこの紙に「二つ目のコイン」とペンで記入し、その上から自分の印鑑「花子」を押します。これが2つ目のコインとなります。
- 花子さんは紙を5人分コピーして全員に配ります。コピーされた紙には「5323569014 一つ目のコイン田中 一つ目をデビッドにあげます田中 二つ目のコイン花子」とあります。ずいぶん長くなりました。
- 花子さんの作ったコピーが全員に配られたのを確認してデビッドさんは商品の車を田中さんに渡します。
これでコインは2つ、一つ目の所有権はデビッドさん、二つ目の所有権は花子さんにあることが全員に配られた紙を見ればわかります。
以後の取引は上記を繰り返すことになります。例えば花子さんがデビッドさんに二つ目のコインを渡す場合は「二つ目のコイン」の下に「二つ目をデビッドにあげます花子」として、再び全員でランダムスタンプで承認作業をするわけです。皆は三つ目のコインを作る為に頑張ってランダムスタンプを押すことでしょう。デビッドさんが花子さんに渡す場合は「一つ目を花子にあげますデビッド」です。
説明
煩雑ですがこれで一つ目のコインの作成と一回の取引と二つ目のコインの作成が終わりました。何度も行われた下の桁が0になるまでスタンプを押し続ける作業、これは何の意味があるのでしょうか。
二重使用について
上の例では田中さんが「一つ目をデビッドにあげます」と書き、場に出して全員でランダムスタンプを押しました。しかしデビッドさんとのやり取りの後に別の人、花子さんにも二重に渡す為に「一つ目を花子にあげます」と書いた紙を場にだしたらどうなるのでしょうか。
これは当然すぐにばれます。なぜなら全員が既に「5323569014 一つ目のコイン田中 一つ目をデビッドにあげます田中」の紙を持っており一つ目のコインは現在デビッドさんが持っていることが明白だからです。
それでは田中さんが「一つ目をデビッドにあげます」を出すと同時に「一つ目を花子にあげます」も同時に場に出したとしたら。これはどうなるかわかりません。ただ、どちらかに承認スタンプ(足した下の桁が0になるランダムスタンプ)が先にはられ全員に配布されます。デビッドさんが車を渡すのを承認スタンプが配布されるまで待っていたのはこの為です。もしかしたらもっと人数が多くてデビッド80%/花子20%の割合で配布される場合もあります。その時はデビッドさんは関係のない取引が何回か終って紙が回ってくるまで商品を渡すのを待ちます。紙に書いてある取引の昔の方にちゃんと田中さんデビッドさんの取引が記載されていたらその事実が認知されていると判断できます。もしかしたらそこに花子さんの名前があるかもしれません。その場合は田中さんからのコインの受け渡しはなかったものと判断します。
偽造について
悪意のあるデビッドがそもそも「5323569014」は自分が作ったものとして、しかもその後の取引も含めてすべて偽造するとしましょう。これも現実的では無いのはすぐにわかります。なぜなら5人がかりで承認スタンプを押した作業をたった1人で行い、しかも場に周知されている数にまで追いつく必要があるからです。上記の通り、一番長い取引履歴が正しいものとされます。そんなことをする位なら承認作業に協力した方が手っ取り早く稼げそうですよね。
コインの発掘と承認作業のモチベーション
足した下の桁が0になるまでランダムスタンプを押し続ける作業は時間と労力がかかります。そのお陰で上記の様な二重使用や偽造が防げるわけです。それではどうして場の人達はそんな労力がかかる作業を進んで協力して行うのでしょうか。それがコインの採掘です。上の例の様に承認スタンプを押せた人には新しいコインが進呈されます。これが労力をかけて承認作業を行う原動力となります。
実際のBitCoinの技術
ここではイメージをつかみやすい様に紙とスタンプで例を紹介しました。実際のBitCoinとの違いを挙げます。
紙は「ブロック」と呼ばれるデータ構造で扱われます。ブロックには「トランザクション」というコインの取引履歴が格納されています。「ブロック」は連鎖しており、一つ前のブロックのハッシュを含みます。
ブロックは10分毎に計算され、その間に起きた取引(トランザクション)が格納されています。またブロックサイズを少なくするため、トランザクションのデータ自体は格納されず、それぞれのデータから計算されるハッシュツリーのルートハッシュがブロックに含まれています。取引の存在した確認はネットワークより必要な断片ハッシュのみを取得して計算、ルートハッシュと照合することにより行います。
承認に使った下桁0を出すランダムスタンプについては実際には2重のsha256ハッシュがブロックに施されます。ハッシュが特徴のある状態(0bitが一定数連続する状態)になる様な追記文字(nonse)を加え、コンピュータが計算の繰り返しにより求め、ブロックが有効になります。時間をかけさせるのが目的という点では共通です。この様に時間をあえてかけさせ不正を防ぐ仕組みをプループオブワーク(POW)といいます。
BitCoinにおいても承認作業の結果としてコインが生成されます。これが世界中で承認計算をしている原動力となります。生成されるコインの量はブロックが進むにつれて一定のルールに従い、半減していきます。その内にビットコインの最小単位である1satoshi=1/100000000btc以下になってしまう事から、論理的なビットコインの最大量が決まってきます。
印鑑の押印は、非対称暗号(ECDSA)によるデジタル署名が該当します。印鑑を持っている人しか押印できない事、陰影のみを渡して照合できる点が現実と似ています。
BitCoinでは上記のhashcashのルールに加えて、ターゲットという数値を定めて新しいコインはそれ以下以外認めないというルールを設けています。ターゲットの増減は直近2週間のコイン生産量をから決められた計算式で算出するルールで計算機性能やコイン発掘者が多ければ多いほど難しいターゲット値が決定されます。これによりブロックの承認スパンが10分にコントロールされています。
BitCoinは月の土地
先日BitCoinを日本円で一億円以上盗まれた人が出たというニュースがありました。上の記事を読んだ人はわかりますが「盗まれた」というよりは「所有権が無くなったという偽情報を皆に周知認知された」というのが正確な所です。BitCoinは金やプラチナに似ていると紹介されますが、どちらかというと「月の土地の所有権を皆で認め合っている」様なものです。もしくは夜空の星一つ一つに所有権を認め合い、あるものは未知なる星を探しして新たな所有を得ようと努力し、あるものは他人の星をなんとか自分の所有と皆に認めてもらおうと奮闘している状況に似ています。所有権自体をコピーすることは確かに出来ませんが、このシステム自体のクローンを大量に生産することは容易にできそうです。今後このBitCoinを含め仮想通貨というものがどうなっていくのか、とても楽しみです。
マイナー比較
さらに詳しく知る
- Bitcoin.it
- Bitcoin - Wikipedia
- 仮想通貨「Bitcoin」とは一体何か、どういう仕組みかが一発で分かるまとめ - GIGAZINE
- Bitcoin P2Pベースの仮想通貨 - ビットコイン
参考リンク
- Bitcoinの金鉱はそのプロトコルにあり(様々な応用例) - YAMDAS現更新履歴
- オープンソースの電子マネー、Bitcoinの実験 - 田舎で深呼吸
- bitcoinを始めよう bitcoinってなに?
- Bitcoin | 『金は海外に隠すな!!』
- (2)Bitcoinの利用はアンダーな世界にも広がっている - 『外貨』なマネービジネス こうして通貨は流通する
- ビットコインについて素人が思う疑問 - teruyastarはかく語りき
ビットキャッシュとビットコインの違いとは
よく名前が似ているので混同されるビットキャッシュですが、こちらはビットキャッシュ株式会社という企業が管理している電子マネーです。一つの企業の信用で成り立っている、いわばポイントの様なものです。参加者全員で管理されているビットコインとは全く性質の異なるものです。