目次
謎の人物サトシ・ナカモトが発表した9ページの論文

ご存知の通り、ビットコインはサトシ・ナカモトと名乗る人物が発表した、9ページの論文によって発明されました。
論文のタイトルは、「Bitcoin: A Peer-to-Peer Electronic Cash System」となっており、「P2P(Peer to Peerのこと)方式による電子的な通貨の仕組み」と和訳できるでしょう。
ここで注目すべきは、「Electronic Cash System」の部分です。
ビットコインは新たな決済システムであるといった記述をよく目にしますが、論文のタイトルでは明確に決済システムである旨は記載されていません。
また、タイトル部分での登場を最後に、「Bitcoin」というワードが本文で用いられることはありませんでした。
概要
冒頭には、以下を中心に全体の概要が記載されています。
- P2Pという方式を活用した電子的な通貨が実現すると、金融機関を挟まずに当事者間でのオンライン支払いが可能になる
- 電子署名を活用することでその一部は実現するが、それだけでは多重支払いを防ぐことができず、結果的に金融機関によってその問題を解決するしかなかった
- この論文では、P2P方式による電子的な通貨の多重支払いの問題を解決する方法を提案している
その他、支払い履歴を改ざんすることの難しさなどが記載されていますが、ここで注目すべきは、「電子的な通貨の多重支払いを、第三者である金融機関を挟むことなく実現する」という点について、その方法を提案しているということです。
ビットコインの論文発表時点では、思想や仕組みは非常にシンプルであったことがわかります。
1.導入

第1章の導入部分では、現状(2008年時点)のインターネットにおける支払い手段には信頼できる金融機関を挟む必要があることに触れ、その問題点と解決方法について述べています。
問題点
- 大半の取引は信頼を前提とする取引モデルの欠点を許容するしかない
- 金融機関は、個人間取引の仲介に入るものの、個人間にトラブルが発生した場合に仲裁する必要があるため、その仲裁コストが取引コストを下回るよう制限せざるを得ない。(少額取引が実現できない)
- それに伴い非可逆的な取引も実現できない(取引を無かったことにする必要性が発生する可能性があるため)
- 可逆的な取引を実現するには、高度な信用が求められるため、顧客に対して必要以上の個人情報を取得しなければならない
- にも関わらず、詐欺を完全に防ぐことは不可能である
上記のような問題点を指摘した上で、本当に必要なのは金融機関(第三者)を必要とせずに電子的な取引を実現する仕組みであると述べ、その解決方法を提案しています。
解決方法

- 第三者への信頼ではなく、暗号技術を基にした仕組みが存在すればいい
- 取引時刻を数学的に検証することができれば多重支払いを防ぐことができる
- そのために、P2P方式の分散タイムスタンプサーバを使用する
- P2Pネットワーク内に、悪意のある参加者がいたとしても、その数を善意のある参加者の数が上回っている限り、安全なセキュリティを維持することができる(ここでいう参加者とは、コンピュータ(ノード)のこと)
詳細は後述しますが、ここで登場している「P2P方式の分散タイムスタンプサーバ」こそ、現在当たり前のように使われている「ブロックチェーン」の元になる技術となっています。
実は、論文内では一度もBlockchainという単語が登場することはありません。
ブロックチェーンという言葉は、この論文を読んだ別の開発者が、ビットコインの仕組みにおける特定の一部分を切り出して取り上げた結果、その優れた仕組みに注目が集まり生まれたのです。
2.電子的な取引
第2章では、金融機関などの第三者を挟まずにどのように多重支払いを防ぐかについて説明しています。
まず、送信側は以下のデータを組み合わせて電子署名を施します。
- 過去の取引内容をハッシュ化(暗号化)したデータ
- 受取人の情報(公開鍵)
このデータを電子的なコインの末尾に付け加え、受取人にまとめて送ります。
受取側は、送信側によりコインに付与された電子署名を検証することで、そのコインを元々誰が所有していたかを確認することができます。
ここで注目すべきは、過去の取引内容を暗号化したデータと電子署名がセットになっていることにより、元々誰が所有していたかの履歴を全て確認することができるという点です。
なお、このままでは過去にそのコインが多重支払いに使用されたことを確認できないという問題が解決できません。
従来は、この問題を解決するために金融機関が存在していましたが、この仕組みでは以下のルールを決めることで解決しています。
「コインが多重支払いに使用されたら、最初の取引だけを有効にし2回目以降は無効にする」
ここでさらに、どの取引が最初かをどのように確認するのか、という問題が浮上します。これに対しては、全ての取引を、その取引に関係のない人も含め参加者全員に公開し、全員が同一の取引履歴を共有することで確認できる、と説明しています。
要するに、P2P方式のネットワークに参加する全てのノードに共有するということです。
3.タイムスタンプサーバ
第3章では、取引データが確かにその時点に存在しており、架空の取引ではないことを証明するための方法を説明しています。
そのためには、タイムスタンプサーバが必要になります。
タイムスタンプサーバは特に新しい技術ではなく、取引データに対して時刻を打ち込むようなものです。
第2章で、コインの送信側は、コインと一緒に過去の取引内容を暗号化したデータをセットにして送ると説明しましたが、この中にはタイムスタンプサーバによって打ち込まれた時刻も含まれているため、取引が増えていくほど過去にデータが存在していた、という証明の信憑性が高まる仕組みになっています。
4.プルーフオブワーク

第4章ではProof of Workについて説明しています。
Proof of Workとは直訳すると「仕事による証明」であり、P2P方式の分散タイムスタンプサーバを実現するには、このProof of Workが必要であると言及した上で、Workにあたる仕事の具体的な内容について説明しています。
ノンスを探す作業

Proof of Workは、暗号化された値の先頭のnビットが全て0になるような値を探すことであり、調査にかかる平均的な時間は、nビットに対して指数関数的に変動する仕組みとなっています。
具体的には、ブロックに含まれるデータとランダムな数(ノンスと呼ばれる)を組み合わせて暗号化し、暗号化された値の先頭のnビットが全て0になる場合を探します。
このノンスを探す作業は非常に膨大な量のCPUを消費することになるため、一度Proof of Workを行うことで取引の証明を済ませておくと、取引内容を改ざんしようとした場合に再度同じProof of Workを行う必要がでてきます。
また、そのブロックの後ろに次のブロックが繋がっていくことで、ある一部のブロックに含まれる取引内容を改ざんしようとすると、それ以降の全てのブロックの内容を改ざんしなければならないのです。

ブロックに含まれるデータ
ブロックには、1つ前のブロックのデータも含まれているため、一部のブロック内のデータを改ざんしようとすると、それ以降のブロック内のデータも全て改ざんしなければならない
Proof of Workにおける合意形成の方法
Proof of Workは、不特定多数の集団における合意形成問題への解決策にもなると説明しています。
例えば、1つのIPアドレスに対して1票を分配するといった方法では、誰かがIPアドレスを大量に確保した時点でシステムの乗っ取りが成立してしまいます。
これに対してProof of Workは、1つのCPUに1票を分配するといったイメージです。
Proof of Workにおける集団の合意結果は、最も長いチェーン、要するに最もCPUを費やしたチェーンであるとみなされます。
CPUの大多数が善意のあるノードによって運営されていれば、不正なチェーンよりも正しいチェーンの方が長くなっていく、という考え方になっています。
先述しましたが、もし悪意のあるノードが正しいチェーンの情報を改ざんしようとした場合、それ以降の全ての情報を改ざんしなければなりません。
その場合の改ざん確率は、それ以降に形成されているブロックの数に対して指数関数的に小さくなります。(後ろに連なるブロックが多いほど、改ざんに必要なCPUが増えるということ)
Proof of Workの難易度調整
Proof of Workでは、ムーアの法則によるハードウェアの性能向上や、ノードの増減によって難易度が変動しないようにするため、1時間ごとのブロック数を一定の平均値に保つように設計されています。
例えば、もしブロックの生成時間が早くなった場合は、自動的に難易度が上がるようになっているのです。
5.ネットワーク

第5章では、この仕組みにおけるネットワーク上での動作手順を説明しています。ネットワークに参加するためには、全員必ず同じ手順を踏む必要があります。
- 新規取引は、ネットワーク上の全てのノードに共有される
- ノードは、新規取引をブロックに取り込む
- 同時に、各ノードはProof of Workを開始する
- Proof of Workを終えたノードは、そのブロックを他の全てのノードに共有する
- 各ノードは、ブロックに含まれる全ての取引が正しいものであり、過去に多重支払いに使用されていないことを確認してから、ブロックを承認する
- 各ノードは、承認したブロックを暗号化した値を、次のProof of Workに用いる。これはブロックを承認したことの表明にもなる
各ノードは、最も長いチェーンを正しいものとみなし、そのチェーンの末尾にブロックを連結させていきます。
2つのノードが同時に異なるブロックを共有した場合、いくつかのノードは取り込むブロックの順序が入れ替わる可能性がありますが、一方のブロックを処理するのと同時に他方のブロックも保持しておき、他方のブロックが長くなった場合に備えておきます。
この状態は、次にブロックが伸びた時に自然と解消されます。
Proof of Workが成立した方のブロックとは別のブロックを伸ばしていたノードは、より長い方のチェーンへと対象を切り替えるのです。
なお、新規取引の情報は必ずしもすぐに全てのノードに共有される必要はありません。
一定数のノードに共有されれば、その後いずれ全体へと共有されていくためです。
もし、ノードがブロックを取り込むことができなかった場合は、その次のブロックを取り込む際にまとめて取り込むことができます。
6.経済的インセンティブ
ここまでで、金融機関などの第三者を挟まずにどのように多重支払いを防ぐかについて、電子署名やタイムスタンプサーバ、Proof of Workなどの仕組みが登場しました。
ここで問題なのが、P2P方式による分散タイムスタンプサーバが実現したところで、ネットワークに参加するノードが無ければ元も子もありません。
従来は、金融機関などの第三者が取引手数料などを徴収することでこの役割を果たしてきました。
しかし、P2P方式では第三者はいません。
第6章で説明しているのがこの問題に対する解決方法で、P2P方式におけるノードへの経済的インセンティブについてです。
この部分こそ、ビットコインの論文おける最大の発明だといわれています。
報酬の設計
- Proof of Workを成立させた(ブロックを形成した)ノードは、自分が形成したブロックの先頭に、そのブロックは自分が形成したという情報を書き込むことができる
- ブロックが形成されると同時に、新しくコインが発行される
- ブロックの先頭に書き込まれているノード(そのブロックを形成したノード)は、発行されたコインを報酬として受け取ることができる
このように、Proof of Workに成功すると報酬としてコインを受け取れるように設計することで、Proof of Workのためにノードが自らのCPUを消費する経済的合理性を生み出しました。
また、ここでは新たなコインが一定量ずつ発行されることを金の採掘になぞらえて表現しており、このことが現在当たり前のように使われている「マイニング」という言葉の由来になっているのではないかと考えられます。
取引手数料
ブロックを形成したノードは、そのブロックに含まれている取引で発生した手数料も、報酬として受け取ることができます。
ビットコインには発行上限があり、将来、全てのビットコインが発行された場合には、それ以降の報酬は取引手数料のみとなりますが、インフレから完全に解放されるため、手数料のみが報酬となり得ると考えられます。
不正防止の経済的合理性
インセンティブは、各ノードが不正を働かない理由にもなります。
もし、悪意のあるノードが善意のあるノードの数を上回った場合、悪意のあるノードが行う行動は以下の2つになると考えられます。
- 過去の履歴を改ざんしてこれまでに支払った額を奪い戻す
- これから新しく発行するコインを独占する
しかしこの場合、このシステムは崩壊したとみなせるため、システムの崩壊と共に悪意のあるノードが保有しているコインの価値は崩壊してしまいます。
とすると、悪意を持った行動を取るよりも、善意を持った行動によりシステムの価値を高める方が、経済的合理性のある行動だと判断する、という考え方に基づいています。
要するに、善意のあるノード数を上回るために膨大な額を消費するものの、上回った時点でシステムの価値が崩壊するため、後には何も残らないということです。