2016年9月23日

ブロックチェーン入門

セキュリティ

ここ数年、Bitcoinとその基盤となるテクノロジー、ブロックチェーンの話が何度もニュースで取り上げられています。しかし、これらに関する議論はちょっとハイレベルになりがちで…というか、そう、ちんぷんかんぷんです。一般人は、通貨にまつわる何だかすごい出来事という漠然とした感想を抱くだけで、実際の知識はほとんどなく、理解もしていません。

bitcoin-easy-explanation-featured

このテクノロジーは確かに素晴らしいですし、それほど理解しにくいわけでもありません。今回の記事では、ブロックチェーンの仕組みを簡潔に説明してみようと思います。できるだけ専門用語を使わずに。

まず2つの技術概念を…

デジタル署名の仕組み

デジタル名とデジタル署名は、誰でも作成できます。これらはタイプされた名前や手書きのサインのようなものではなく、デジタル名は公開鍵、デジタル署名は秘密鍵です。これらがあれば、次のことができるようになります。

  1. メッセージの作成者は、メッセージを書いてデジタル署名をし、オンラインで公開できます。
  2. その他の人々は、このメッセージが本物であると判断できます。デジタル署名から、作成者のデジタル名を特定することができます。
  3. 署名入りのメッセージを偽造することはできません。
  4. ひとりの人が、さまざまな目的で、名前と署名のペア(芸名みたいなものと考えてください)を複数作成する可能性があります。

ハッシュの仕組み

たとえば、私が「Hello」というメッセージを書き、友人に送るとします。このメッセージが改竄されずに目的の相手に届くことを確認したいのですが、どうすればいいでしょうか?受け取ったメッセージをそっくりそのまま送り返してくれと友人に頼むのが一番簡単でしょう。2つのメッセージを比べて、一致するかどうかを確認するのです。電話で数字やメールアドレスを伝えるときに、よく使う方法です。

しかし、メッセージは友人のところに問題なく届くかもしれませんが、送り返す途中で「壊れる」かもしれません。その場合、私も友人もメッセージの整合性を保証できません。また、非常に長いメッセージだったり、高解像度の動画が含まれていたりしたらどうなるでしょう?データを正しく受け取ったかどうかを検証するだけのために、これほど大きなデータをすべて送り返すなんて、意味がありません。メッセージの再現性の保証に別の方法が使われているのはこのためです。ハッシュ法という方法です。

たとえば、以のように「Hello」を数値で表してみましょう。

  1. a=1、b=2、z=26のように、1文字に1つずつ、連続する番号を振ります。そうすると、「Hello」は「8 5 12 12 15」となります。
  2. これらの数字をすべて掛け合わせると、86,400になります。これが最もシンプルなハッシュの計算方法です。
  3. 「Hello」に続けて友人にハッシュを送信します。友人はこのハッシュを使って、受け取ったメッセージが意図したメッセージと一致するかどうかを確認できます。

さて、メッセージが途中で改竄されて、「Hallo」となっていたらどうなるでしょう?ハッシュが変わり、8×1×12×12×15=17,280となります。私が送ったハッシュは86,400でしたから、17,280という数字が出たときに、私も友人もこれは何かおかしいぞと警戒するわけです。

ここで注目すべきは、ハッシュ自体が改竄されたり、何らかの方法で不正に手を加えられたりする可能性があることです。ハッシュは、メッセージの整合性を保護するものではありません(それは署名の役目です)。整合性のチェックプロセスを単純化し、スピードアップするためのものです。また、実際にハッシュを使用するとき、送り手自身がハッシュを計算して、別のメッセージとして相手に送信することはありません。この処理はすべて、コンピューターが行います。

この単純なハッシュ法では、メッセージ内のどの文字が入れ替わったのかはわかりません。先ほどの例は、単なる例です。実際には、さらに複雑なアルゴリズムが使用されます。

「強力な暗号化方式」でメッセージをハッシュ化すると、相当長いプロセスになります。たとえば、よく使われているSHA-1アルゴリズム(設計時の予想ほど強力なアルゴリズムではありませんが、その話はまた別の機会に譲ります)を例にあげてみましょう。「Hello」のハッシュは次のようになります。

f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0

「Hallo」の場合は、次のようになります。

59d9a6df06b9f610f7db8e036896ed03662d168f

似ても似つかないですね。そうなるように作られているのです。暗号ですから。

仮想通貨を実現する

さて、難しい説明はこのくらいにして、こういったテクノロジーを使って、どんなすごいことができるのか考えてみましょう。

たとえば、あるクラスに30人の生徒がいるとします。生徒たちは、独自のクラス通貨を使うことにしました。これは完全に仮想の通貨です(つまり、紙に書いてあるか、インターネットに保存されている、ただの数字)。

生徒たちは最初の所持金額を黒板に書きます。続けて、誰が誰にいくら渡したのかを書きます。生徒はそれぞれの「取引」を手書きし、自筆で署名します。これで休み時間にクラス全員が教室を出て行っても、誰も取引を書き換えることはできません。この方法は完璧でした。担任が入ってきて、黒板をきれいに消し、現金の出入りを管理すると主張するまでは。担任にはそうする権力があり、生徒がこのシステムでドラッグを取引しないようにしたいのだ、というのです。

こうして、生徒たちは取引をメモ帳に記録するようになります。それぞれ、自分の机にメモ帳を保管し、こまめに取引記録を更新します。もちろん、授業中に「買った!」と大声で叫ぶことはできませんから、台帳(またの名をインターネット)を使用します。暗号通貨の誕生です!

問題点

取引をページにまとめる

さて、このクラスには30枚のメモが出回っています。それぞれの生徒が、すべてのメモの内容を自分のメモ帳に書き写したかどうかを確認するにはどうすればいいでしょうか?生徒全員が書き写したので、捨ててもいいメモはどれでしょう?ビリーがジョニーに支払うための50コインを持っているかどうか、ジョニーの知らないところで50コインを別の人に支払っていないかどうかは、どうすればわかるのでしょうか?

このような問題を解決するために、生徒たちは取引の明細が記録された短いメモだけでなく、ページ全体を交換することにしました。誰かが取引の記録をためておき、数が多くなったら、すべての取引明細を正確に書き写し、直前のページのハッシュを計算し、新しいページの先頭に記入してから、クラスの生徒全員に新しいページを配布します。

そのページを受け取ったら、ジョニーはページの整合性を確認します。具体的には、取引明細はすべて同じ筆跡で書かれているか、ページには新しい番号がふられているか、直前のページのハッシュが新しいページに記入されているハッシュと一致するか、などです。そしてもう1つ。取引に参加する生徒はそれぞれ、支払いに必要な金額を持っていなければなりません。その確認のため、ジョニーは取引記録帳全体を読み、お金を数える必要があります。相当に面倒な作業ですが、コンピューターなら簡単にできます。

さて、帳尻が合ったら、ジョニーは自分の記録帳に新しいページを正確に書き込み、取引を承認します。そのページに記入されている個々の明細/取引をクラスに回覧する必要はありません。捨てても構わないのです。代わりに、新しいページを回覧します。

何か間違いがあった場合(取引金額が不足している生徒がいる、ページ番号がおかしい、ハッシュが一致しない、とか)、ジョニーは「これは怪しい」と言って、そのページ全体を破棄し、これまでと同じ方法でやり直します。

要するに、番号付きのページ(ブロック)の集まりがブロックチェーンです。非常にシンプルで、不審なことは何もありません。

書いて書いて書きまくる

もし、このプロセスがほかに何の規則にも縛られていなければ、生徒はそれぞれ勝手に自分の123ページを書き始めるでしょう。この結果、教室内に30種類の取引記録帳が行き交うことになります。どうすれば、どれが正しい記録帳かわかるでしょうか?そのためには、なんらかの決められたやり方が必要です。ページは10分に1度作成され、クラス全員に配布されるものとしましょう。また、記録帳への記入責任者はランダムに選ばれることにします。

Bitcoinの場合を教室の例で引き続き説明すると、生徒たちは次のように処理することに決めたのです。たとえば、教科書からランダムに選んだ数学の問題を解くなど、何か役に立つ作業を行わなければなりません。この問題を最初に解き終えた人が、すべてのメモを回収して新しいページを作り始めます。残りの生徒が問題を解いている間に、賢い生徒のページがクラス中に配布され、みんながこれを承認したら、クラス全員でまた新たに別の数学の問題を解き始めます。

論点は、1人の賢い生徒がページを記入しているかどうかではありません。それよりも、高速で処理できる人ということの方が重要です。また、クラスに優秀な生徒が大勢いれば、問題の答えはさらに速く求められ、このクラスは教科書の次の章へと進むことができます。

しかし、学年トップのカールだけがいつもページの作成作業を任されていたら、カールは権力を持つようになり、ジョニーが誰かに仮想通貨を渡す機会を与えないかもしれません。そのようなことをしたがる人は、本当に恐ろしいほど優秀で、たちの悪い生徒であるはずです。その人の計算能力は、Bitcoinの全ユーザーの計算能力の半分以上(世界中の数百万台のコンピューターと同じくらい)でしょう。ですから、カールにそれができるなら(つまり、彼が計算能力にそれだけ投資したのなら)、つまらない不正行為をしても意味はないでしょう。

もう1つのルールは、優秀な学生が数学の問題の答えもページに記入することです(念のため言っておきますが、この数学の問題はまったくランダムに出題されているのではなくて、ページ自体に関係するものです)。これは、たとえ1年後であっても、123ページから最新のページまでのページを誰かが偽造できないようにするために絶対に必要です。こうしておけば、不正を企む者は大量の問題を解かなければならなくなります。

メリット

以上のやり方に従えば、記録帳には正確に記入された新しいページが同じように増えていきます。

  1. このプロセスは、参加者の人数に依存しません。
  2. このプロセスは分散型です。停止や偽造はできません。このシステムに参加している人なら誰でも、必要なときにすべてのページの整合性をチェックできます。
  3. このプロセスは匿名です(デジタル名から本名を割り出せないとすれば)。どのジョニーも、特定のデジタル姓に関連付けられたウォレットが自分のものであることを証明できます。つまり、対応するデジタル署名を持っていれば、そのウォレットを使用できます。しかし、現実の世界では、ウォレットが自分のものであることを証明してほしいとジョニー自身が思わなければ、証明は極めて難しいことでしょう。
  4. 無料です。しかし、優秀な学生にお金を渡して、取引を素早くページに書き写して貰うこともできます。
  5. いったん完了した取引は修正できません。ビリーがジョニーにお金を渡したという取引明細に線を引いて取り消すことは誰にもできません(どのページも直前のページに関連づけられているため)。あるページが変更されたら、(他の参加者の同意があったとしても)残りのページも変更されなければなりません。つまり、本当にたくさんの数学の問題を解かなければならないということです。不審な点がある場合、参加者は一番長く連なるページを信頼するでしょう。

もし、私がクラスの半分以上の生徒(できれば、成績優秀な学生たち)を買収できたら、この生徒たちを別の教室にごっそり移動させて履歴を書き換え、私のお金は誰の手にも渡っていないことにします。その後、私は元のクラスに戻って、そちらの学生たちに、長い取引記録帳を渡します。このトリックは、いわゆる51%攻撃(ロシア語記事)の基本原理です(しかし、現実的には、これは非常に困難です。理由は成績優秀な不良、カールを例にとって先ほど説明しました)。

お金はどこからやってくるのか

当初、すべてのBitcoinは、最初のページを編集できたラッキーな人々に分配されていました。しかし、これでは不公平ですし、意味もありません。このシステムへの参加者をさらに集めるため、発起人たちは分配を徐々に増額することに同意しました。問題を解き、新たなページを始める人は、ページの先頭に「どこからともなく私のところに50コイン入金」と1行書き込むのです。

額がちょうど50コインであれば、そのページが正確であることに皆が合意します。そして、数年のうちに50コインが25コインになり、25コインが…と続くでしょう。こうして人々の資産は増えていきますが、コインの数には限度があります。Bitcoinは2,100万個しかないのです(現在、約1,500万個が「流通」しています)。

この原則があるために、大勢の人々がこのプロジェクトに早い段階での参加を希望し、一番に問題を解いたという理由でなにがしかのお金を得ていたのです。その後、この金額は徐々に少なくなっていき、分配を受ける参加者は増えていきました。また、数学の問題をできるだけ早く解決しようと熱心に行動する人も増えてきました。

今や、暗号通貨をたんまり持っている人は大勢います。そして今こそ、この暗号通貨は新会社「Money Of The Future, Inc.」の株式であると発表し、株式市場で本物のお金との取引を開始するときです。この暗号通貨は市場価格で販売されており、価格が上昇し始めています。未来のお金を手に入れたいと思っている人はたくさんいます。多くの人々にとって、最も望ましい選択肢は、暗号通貨を購入することでしょう。現在、10分おきに25コイン単位で提供されていますが、この方法で手に入れるということは、数学の問題を解かなければならないということでもあります。そう、マイニング(採掘)よりも購入の方が簡単なのです。

そして、オンライン商人たちはコインを株式市場で本物のお金と交換できることに気づき、暗号通貨での支払いを受け付け始めました。暗号通貨の価格はコンスタントに上昇していますから、これは賢明な処置です。

多少の批判も…

さて、読者の皆さんがBitcoinのコンセプトをよく理解できたところで、ちょっと偏った見方をしてみましょう。

  1. Bitcoinは確かに本物のイノベーションです。ミステリアスな発案者(もしかしたら、さらにミステリアスな発案者グループかも)が登場と同時に見事な成功をおさめ、そのアイデアは今でも生きています。
  2. Bitcoinは、さまざまな不法行為にとっての純金です。武器や麻薬の取引、贈収賄、恐喝などが、やりやすくなりました。取引の追跡が極めて難しく、停止に追い込むのは不可能だからです。オフラインの世界では、このような取引は現金払いでしょうが、従来のオンライン決済システムは管理されていますし、匿名ではありません。それ故にBitcoinに価値があるのです。
  1. 合法的な行為の場合、分散型で匿名のシステムは役に立たず、むしろ有害です。私たちはVisa/MasterCard、銀行振替、PayPal/WebMoneyなどを長いこと使っています。このようなシステムには欠陥もありますが、便利な機能もあります。
    1. 手数料を支払いますが(特に国境をまたぐ支払いの場合)、有益なサービスを受けられます。
    2. 振替には多少時間がかかりますが、きちんとチェックされるので、取り消しが可能です。

    Bitcoinは処理が早く、安価ですが、その恩恵に浴するには、恐ろしい量の電力を使い、何度も情報を複製し続けなければなりません。この作業をPayPalに任せるとしても、悪いことに変わりありません。

  1. 人々がBitcoinを好むのは、価格がコンスタントに上がるからです。言うなれば、たくさんのバブルを生むネズミ講のようなものです。人々がこのやり方にすっかり興味を失くすことは、まずないでしょう。購入希望者が増えれば、需要は高まります。すでに自分の分のコインを購入した人が、「未来のお金」を積極的に宣伝するのはこのためです。興味をかき立てれば、価格が上昇しますから。明らかに需要が供給を超えていますが、時間の経過とともにしぼんでいきます。
  2. 人々がBitcoinを嫌がるのは、価格がコンスタントに上がるからです。これまでの経済は中央銀行が管理していて、利用できる通貨の量と財・サービスの量が釣り合うことを保証し、徐々に財・サービスが安くなるようにしています。Bitcoinでは、このプロセスがゆがんでいます。Bitcoinは継続的に、そして突然、価格が上昇します。つまり、Bitcoinを商品に使っても採算が取れません。本物の通貨を使用して、Bitcoinは後のために(または、望ましくは永遠に)取っておいた方がいいのです。
  3. 規制当局がBitcoinを嫌うのはなぜでしょう。
    1. ネズミ講方式だからです。ある国の国民がBitcoinを購入しようと殺到し、(数年に一度起こるように)バブルがはじけたら、それは危機の始まりです。多くの国で、ネズミ講が禁止されているのはそのためです。
    2. Bitcoinは、麻薬、税金逃れ、不正収入、テロリズムに関係しています。その理由は、ずばり、誰もコントロールしていないからです。したがって、規制当局は、暗号通貨を禁止し、どこでも簡単に手に入る従来の手段を使うよう呼びかけています。
  4. 通貨取引以外でブロックチェーンがどう使われるか。ブロックチェーンが絡むプロジェクトの大半では、同一の作業を一元管理しています。これには演算ハブが使われていて、コンピューターの処理能力と効率の点から見て非常に安上がりです。先ほどの黒板の例で言うと、取引を黒板に書き出す方が、同じことをこっそりと、机の下のメモ帳に書き込むよりもずっと簡単なことは明らかです。しかし、もちろん、突然黒板を消してしまう、高圧的な教師がいない場合に限りますが。

説明は以上です。これで、Bitcoinとブロックチェーンについて詳しくなったでしょう。賢くなるのは素敵なことです、そうじゃないですか?