ビットコインの原論文を読む 概要

まずは原論文Abstractから。

概要 真のP2P電子通貨が実現すると、金融機関の介在無しに、利用者から利用者へと直接オンラインで支払いできるようになるだろう。電子署名によって、その機能の一部は実装可能である。だが従来の方法では、多重使用を禁ずるために第三者機関を設置する必要があり、電子通貨の利点を生かせなかった。本論文で提案するのは、多重使用問題をP2Pネットワークで解決する方法である。このネットワークは、ハッシュ関数による演算量証明を利用する。その証跡をチェーンでつなぎ続けることにより、いつ、どのような取引が行われたかを証明可能にする。チェーン内の取引履歴を改ざんしようとしたら、時間をかけて演算量証明をやり直さなければならない。過去の出来事を時系列的に確認する場合には、ネットワーク上で最長のチェーンを調べれば良い。さらに、最長チェーンは、CPU能力を最も費やした計算結果でもある。CPU能力を持つ者の大半が、ネットワークへの攻撃者を無視していれば、その善良なノード群が作るチェーンは、攻撃者のそれを長さで上回り続ける。このネットワークに必要な規則は、極めて簡素である。メッセージはベストエフォートで拡散すれば良いし、各ノードはいつ離脱・再接続しても構わない。再接続時に最長チェーンを受け取ることによって、離脱していた間に何が起きたかを把握できるからである

AさんがBさんに電子通貨(以下コインと呼ぶ)を渡したときに、Aさんがその「渡したこと」を電子的に署名すれば、コインがAさんからBさんに渡ったことを誰でも確認できます。なので、その後もコインと一緒に、

  • 「AさんがBさんに渡した」
  • 「BさんがCさんに渡した」
  • 「CさんがDさんに渡した」
  • ……

という電子署名の履歴をすべて渡すことに決めていれば、最後の人がコインを持っているということを証明できるわけです。そこで、その電子署名の履歴を電子コインそのものとしましょう、というのがビットコインです。この理屈を使えば、簡単に電子通貨を実装できそうな気もしますが、大きな問題が2点あります。

  1. 最初の所有者をどうやって証明するか。そもそも、誰をコインの最初の所有者とすべきか。
  2. 多重支払い問題をどう解決するか。

特に後者は深刻で、上の例で言えば、BさんはCさんにコインを渡した後、さらにXさんにも渡せてしまうという問題です。Bさんは「AさんがBさんに渡した」という証明を持っているので、「BさんがCさんに渡した」という証明を隠しておけば、まだ自分がコインを持っているかのように見せかけられます。そして「BさんがXさんに渡した」という証明も作れてしまうわけです。こんなことがまかり通ったら、通貨制度が崩壊します。

というわけで必要なのは、「他の誰にもコインを譲っていない」ことを証明することです。つまり、「Bさんが誰かにコインを譲った電子署名」がこの世に存在しないことを、何らかの方法で示さねばならないわけで、これはかなり難しい問題です。「ある」ことを証明するのは簡単ですが、「ない」ことを証明するのは困難です。実は、第三者信頼機関があれば可能なのですが、そういった中央統制システムを使わずに電子通貨を実現しようという、高い目標をビットコインは掲げています。ビットコインでは、この多重支払い問題を解決することに労力の大半が費やされていると言っても、過言ではありません。そして、その根幹となる考え方がハッシュ関数による演算量証明です。

コメントを残す

メールアドレスは公開されません