2014年3月2日日曜日

ビットコインの仕組み(私家版、補遺あり)

今回、ビットコインの交換所の一つである、マウントゴックスが破綻し、ニュースになっています。ただ、ニュースを見ていると、報道関係者も、ビットコインとはなにか、よくわかっていない様子です。

実は、僕、少し前に、ビットコインについて色々調べていたことがありまして、ある程度、この「通貨」のしくみについては、そこそこ知っているつもりです。

昨日、たまたま、Facebookで友人の医師がこのビットコインについて話をしていて、そこで、この、ビットコインの仕組み、つまり、ビットコインがどうやって通貨として機能しているのか、中央の通貨発行者がいないというのはどういうことか、などについて、いろいろ知っていることを話しました。結構長い分量を書いたのですが、Facebookだと、あとで自分の書いた文章を見直すのが面倒なので、こちらに転記することにしました。
(ただ、僕自身で、ビットコインの取引をあまり行っていないので、誤解もあるかもしれません。もし、これを読んだ方で、以下の文章の僕の理解に間違いを見つけた方がいたら、教えていただけると幸いです。)

Hideaki Takata では、ちょっと説明を試みてみようと思います。少し長くなってしまって、このスレッドを占拠してしまうかもしれませんが、かまいませんか?
Hideaki Takata まず、ビットコインというのは、電子マネーの一種です。ですが、スイカやマイルのような電子マネーと違い、「コイン」というように、どちらかというと実際の硬貨や紙幣(百円玉とか千円札とか)のアナロジーを電子情報で実現したんだと考えるほうがわかりやすいです(少なくとも、僕は、そういう理解をしています。)。まず、ビットコインというのは、現実の貨幣みたいなもんだと思ってください。スイカなどのような、残高の記録された通帳データをいじっているのでなくて、ユーザー間で、百円玉ファイルとか、五百円玉ファイルというデータをやりとりしているのだと考えてください(本当は少し違いますが、そういう理解のほうが分かりやすいです)。
Hideaki Takata さて、僕達が、どこかのお店で、たとえば、百円玉でジュースを買う時、お店の人が簡単に百円玉を受け取ってくれるのは、どうしてでしょう。 
Hideaki Takata 答えは色々あり得るのでしょうが、ビットコイン的な回答は、「それがニセガネではないから」です。つまり、僕が自宅で金属を溶かして作った百円玉や、コピー機とプリンタで作った千円札ではないから、です。
Hideaki Takata 実際、どこの国でも、硬貨や紙幣のようなおかねが偽モノだったらすぐわかるように、硬貨や紙幣は精巧で偽造しにくいようにつくっています。
Hideaki Takata ただ、お金がニセモノでないことを証明する方法は、中央機関が通貨を精巧に作るという方法以外にもいくつかあります。
Hideaki Takata ビットコインが採用している方法は、硬貨の履歴を提示するという方法です。 
Hideaki Takata 硬貨の履歴を提示するというのは、「今僕が払おうとしているこの百円玉は、何月何日に、○○から僕に支払われたもので、その前は、何年何月何日に、××から、○○に支払われたものであり、その前は、、、、で、いついつに造幣局で作られたものです。」という風に説明することです。 
Hideaki Takata この履歴の提示が正しければ、自動的に、この硬貨はニセモノではない、という証明になります。
Hideaki Takata そして、ニセモノを作れない「貨幣」であれば、たとえ電子データであっても、十分に取引に使えるはずである、というのが、ビットコインのコンセプトです。
Hideaki Takata 問題は、履歴の正しさの確認を、それを証明する中央機関なしで、どうやって実現するか、です。
Hideaki Takata ビットコインのやり方は、こうです。まず、ビットコインで取引するときには、まず、すべての取引が公開されます。公開されているので、たとえば、こういうところで見ることができます 。 
1193の未確認取引blockchain.info未確認のビットコイン取引リスト
Hideaki Takata ここで公開されているのは、たとえば、「AさんがBさんにいくら支払おうとしている」みたいな情報です。
Hideaki Takata ここにあるものは、「未承認取引」です。この「取引」のことを、「トランザクション」といいます。未承認というのは、まだ、支払えていない状態です。未承認取引は、承認されて、初めて、実際の支払いができます。
Hideaki Takata この承認というのは、ビットコインの場合、複雑な計算をとくことで行われます。この承認作業を、世界中のコンピュータが競争してやっています。なぜ、これらのコンピュータが競争して一生懸命承認作業を行うかというと、この「承認」が儲かるからです。承認作業に参加したコンピュータの所有者には、その作業に使われた計算量に応じて、ビットコインが支払われます。
Hideaki Takata ここで支払われるビットコインは、新規に生成されるものです。これが、ビットコインにおける、「通貨発行」に相当します。つまり、この承認作業の報酬レートが、ビットコインの世界における、通貨供給量やインフレ率を決定します。 
Hideaki Takata さて、この「複雑な計算」がなんのためにおこなわれているのかというと、これが、さきほどの、中央機関無しで、貨幣の履歴の正しさを証明するため、なのです。
Hideaki Takata 個々のビットコインの貨幣には、履歴情報がひもづいています。この履歴情報は、「Aさんの所有する100円玉、何年何日にBさんからAさんに支払われた、その時に、こういう計算問題を解いた。答えは、いくつ。何年何日にCさんからBさんに支払われた、その時に、こういう計算問題を解いた、答えは、いくつ。、、、、この百円玉は、何年何日にNさんによって、生成された。」みたいな感じになっています。 
Hideaki Takata もし、悪意ある人が、ビットコインを偽造しようとしたら、その人は、この履歴情報を偽造しなくてはいけません。そのためには、この計算の部分も作らなくてはいけませんから、いま、承認作業に参加している沢山のコンピュータに張り合えるだけの、膨大な計算をしなくてはなりません。これは、不可能ではありませんが、割に合わないのです(というか、これが、割に合わないように、「計算問題」の難しさが設定されているのです)。百円玉を偽造するために百円以上かかるようであれば、偽造はされないはずである、という理屈になります。
Hideaki Takata これが、ビットコインの、中央機関無しで偽造を防ぐ仕組みと通貨発行のしくみです。
Hideaki Takata 今回、破綻した、マウントゴックスというのは、ビットコインの取引所です。取引所というのは、ビットコインと日本円や米ドルなどを交換できるサービスを提供している会社です。ビットコインの取引自体は、ビットコインのソフトウェアをインストールすれば、普通のパソコン同士、スマートフォン同士でも、簡単にできます。ただ、各個人同士で取引するのは効率が悪いので、通貨交換のマーケットがあるほうが便利なのです。そういう取引を行う会社です。リアルな通貨の世界で言うと、銀行とか証券会社とかFXの会社みたいな感じです。
Hideaki Takata 仮に、日本の銀行がひとつ破綻したというようなニュースがあれば大事件ですが、それは、もちろん日本円自体の破綻を意味するわけではありません。今回の事件で、ビットコインの価格は大きく下がっていますが(日本の銀行が破綻したニュースで、円安になっているという感じに近い)、下がりきったところで買い戻そうとしている人も多いのではないかと思います。 
Hideaki Takata 今回のことについて、いいまとめがあったので、リンクを貼っておきます。
ビットコインと交換所に関する基礎知識(議論や取材の前提として最低限の正しい理解が得られるように書きました)(大石哲之)
Hideaki Takata では。質問もしくはコメントがあれば、明日よろしく。

で、今朝、いくつか追加質問がありました。
1. 偽造防止のための「計算」というのは取引や履歴そのものとは関係のない暗号解読のような作業ですか?md5の逆演算みたいな?
2. ビットコインをリアルマネーに交換する際のサイバー空間上の出来事は日本円を米ドルに交換(購入)するのと同じ様なものと考えればいいですか?つまり自分の円口座から数字が減って米ドル口座の数字が増えるみたいな?

履歴で真正性を担保してリアルマネーとの交換価格は市場が決める…事件屋の間を流れてく約束手形みたいな感じですな。
Hideaki Takata >質問1。ハッシュの逆演算みたいなものです。
Hideaki Takata 実際の計算は、次のようなものです。未承認取引は、いくつかまとめられてブロックと呼ばれる取引群にまとめられます。
Hideaki Takata その、ブロック全体の情報のハッシュ値h0をまず求めて、そのあと、SHA(逆演算が困難なハッシュを求めるアルゴリズムの一つ)で、SHA(key, h0)=z0としたときに、z0の上位32桁がゼロになるようなkeyを求める。というのが、「承認」の作業です。 
Hideaki Takata お分かりと思いますが、承認作業は、正しいkeyが得られるまで総当りでやらなくちゃいけませんが、逆に、承認結果が正しいかどうかは、ハッシュ値を一回求めるだけで確認できます。これが、ビットコインの「承認」でやっている計算です。
Hideaki Takata >質問2。ビットコインと日本円の取引の際の取引所のやっている仕事は、ほとんど、日本円と米ドルの取引と同じです。というか、後者をモデルにして前者が作られたんです。
ハッシュ値の遡上を競い合うことで通貨供給量が増えるというのが実に斬新なアイディアですね.確かにこれは面白い.まだ自分で投資しようとは思わないけど
Hideaki Takata 僕も、今投資しようとは思いません。ビットコインが取引に使えることは、間違いないのですが、貯蓄や投資に向くかは、まだ未知数だと思うのです。
Hideaki Takata 通貨には、交換機能と貯蓄機能があります。論理的には、ビットコインに交換機能があることと貯蓄機能があることは全く別かもしれません。
匿名性は、どうなのでしょうか?資金洗浄に使われるとか聞いたことがありますが・・・
Hideaki Takata ビットコインを持つためのアカウントは簡単に作れますし、アカウント作成時に本人確認もしていません。適当なアカウントを作って資金洗浄をするのは簡単です。実際、ビットコインの取引で一番多いのは人民元からビットコインへの交換です。おそらく、中国の金持ちが、 身元を隠しながら外貨を手に入れるためにやってるのだと思います。 
Hideaki Takata 中国では、本当は、ビットコイン禁止されてんですけどね。

補遺。あとで出てきた追加の質問。
Mt.Goxが主張する「クラッキングによる不正引き出し」はどういう風に行われたんでしょうか?犯人は、今後ちゃんとつかまるんでしょうか?
Hideaki Takata それは、僕もよくわからないんですけれど、どうも、マウントゴックスが使っていたソフトウェアにバグがあって、それを突かれたみたいですね。通常、ビットコインを支払って、支払いの処理がうまくできたら、お金を払った側のコンピュータも、受け取った側のコンピュータも、それぞれ、「支払い成功」と分かる(反対に、ネットワークのエラーなど何らかの理由で支払いが失敗したら、「支払い失敗」と分かる)ものなのですが、マウントゴックスの使っているソフトウェアでは、マウントゴックス側からビットコインを支払った時に、条件によっては、たとえ支払い成功していても、支払い失敗と認識してしまうバグがあったみたいなんです。
Hideaki Takata ですので、そのエラーを突いて、マウントゴックス側「支払いました」 クラッカー側「支払い失敗してますよ。もう一度支払ってください」 マ側「もう一度支払いなおしました」 ク側「また支払い失敗してますよ。もう一度支払いやってみてください」。。。という風に、複数のアカウントから、なんども繰り返し支払いをさせたみたいなんですね。
Hideaki Takata もし、クラッカーが十分に賢ければ、この犯罪に使われたアカウントはとっくに削除されて、その時に入手されたビットコインは、とっくに、別のアカウントを通じて、リアルマネーに交換されてしまっているんじゃないでしょうか。
Hideaki Takata 個人的には、警察が、この件を犯罪としてきちんと捜査するか、まだわからないと思っています。そもそも、ビットコインは通貨ではないし、無保証であるというのが日本政府の公式の見解ですし、また、金融当局は、ビットコインみたいなものが世の中に普及することを嫌っています。こういう状況で、警察が捜査するというのは、かなり制約があるんじゃないかと思うんです。

0 件のコメント:

コメントを投稿