基本に立ち返ってBitcoinのホワイトペーパーの内容を紹介します

2018.11.15

rei

こんにちは、BCHNews編集部のreiです。

突然ですが、2008年10月31日、何の日かご存知ですか?

10年前のこの日、Satoshi Nakamotoによって暗号関連のメーリングリストにBitcoinのホワイトペーパーが投稿されました。
タイトルは、”Bitcoin: A Peer-to-Peer Electronic Cash System”。
論文は全12章で構成されており、現在流通する様々な暗号通貨の源流となったアイデアが端的に、鮮やかに記されています。
余談ですが、Blockchainという単語はこの論文には登場しません。ご存知でしたか?

そこで本日は、10年前突如として現れた謎の人物、Satoshi Nakamotoが記した”Bitcoin: A Peer-to-Peer Electronic Cash System”の中身を今一度紹介してみようと思います。

論文について

まず、論文の情報についてまとめておきます。

タイトル Bitcoin: A Peer-to-Peer Electronic Cash System
著者 Satoshi Nakamoto(satoshin@gmx.com)
発行 2008年10月31日
リンク https://www.bitcoin.com/bitcoin.pdf

章の構成は以下の様になっており、それぞれの章が短く簡潔に記述されてます。

  1. Introduction
  2. Transactions
  3. Timestamp Server
  4. Proof-of-Work
  5. Network
  6. Incentive
  7. Reclaiming Disk Space
  8. Simplified Payment Verification
  9. Combining and Splitting Value
  10. Privacy
  11. Calculations
  12. Conclusion

1.Introduction

この論文は、金融機関を通す事なく、送金者から受取人まで直接オンラインで支払いすることを可能にする、P2P通信による電子通貨(Electronic Cash)の仕組みについて紹介しています。

P2P(Peer to Peer)とは、同等の者から同等の者へを意味し、クライアントからクライアントへ端末間で通信を行う技術です。

Peer to Peer(ピア・トゥ・ピア または ピア・ツー・ピア)とは、複数の端末間で通信を行う際のアーキテクチャのひとつで、対等の者(Peer、ピア)同士が通信をすることを特徴とする通信方式、通信モデル、あるいは通信技術の一分野を指す。P2Pと略記することが多く、以下本記事においてもP2Pとする。

引用元:Peer to Peer – Wikipedia

論文が発表される以前、Bitcoinが誕生するまで、オンラインでの商取引のほとんどは金融機関に依存した方法がとられていました。
しかし、金融機関を通した取引には以下の弱点があります。

  • 金融機関は紛争の仲介を避けることができないため、完全に不可逆な取引は不可能
  • 仲介コストによる取引のコストの増大
  • コストの増大により、気軽に少額決済ができない

これらの弱点は、少額取引の可能性を制限し、非不可逆取引であるため(取引で不具合が合った場合の)信用の必要性を底上げし、金融機関が必要以上に顧客情報を集める必要があります。
現実で取引を行う場合は、不正防止技術を盛り込んだ物理通貨を使用することで、これらのコストや不確実性を回避することができましたが、信頼できる当事者がいないオンラインで支払いを行う仕組みは存在しませんでした。

そのため、この論文ではP2P分散タイムスタンプサーバーを使用することで、トランザクションの時系列順序の計算的証明を行い、二重支払い問題の解決法の提案を行なっています。

2.Transactions

著者であるサトシナカモトは、”electronic coin”をデジタル署名の鎖と定義しています。
コインの所有者は、前のトランザクションのハッシュと次の所有者の公開鍵をデジタル署名し、これらをコインの最後に追加することで、コインの送金とします。受取人は、署名を検証することで、所有権を検証することができます。

ホワイトペーパーでは、トランザクションが連なっている仕組みを以下のように図で表しています。

ただし、この仕組みだけでは二重支払いをしていないことの証明をすることはできません。二重支払いでないことを証明するには、全ての取引を把握している必要があり、その一つの提案として、Wei Dai氏のB-moneyの仕組みを紹介しています。しかし、これは、信頼できる当事者の存在が前提となっており、信頼できる当事者が必要ない状態で二重支払いを防止するためには、全ての取引履歴を公開しつつ、単一の取引履歴に合意する仕組みが必要であると述べています。

3.Timestamp Server

サトシナカモトの提案する解決策は、まず、タイムスタンプサーバーの発想から始まります。このタイムスタンプサーバーは、いろいろなデータを内包するブロックのハッシュ値を計算して公開します。タイムスタンプは、その時にそのデータが存在したことを証明するものです。次のブロックは、一つ前のブロックのタイムスタンプも含んでハッシュ化され、下図のようなチェーンが形成され、タイムスタンプが追加されるたび以前のタイムスタンプが強化されます。

4.Proof-of-Work

ただし、ただタイムスタンプサーバーを置くのでは従来の銀行システムと同じです。
P2Pベースで分散したサーバーを実行するには、プルーフオブワークシステム(PoW)を使用する必要があります。
プルーフオブワークでは、ハッシュ化を行なった時、特定の条件を満たすことができる値(Nonce)を見つける問題を課し、マシンパワーを消費してNonce値を発見した者の作ったタイムスタンプを信じます。このプルーフオブワークは、多数決で意思決定をする際の代表者をどうするかという問題を解決します。仮に、1IPアドレスにつき1票として票数が多いものを信じるという仕組みにした場合、多くのIPアドレスを取得できるものがシステムを乗っ取ることができてしまいます。

一方、PoWの場合、ブロックデータの変更にもう一度PoWを行わなければならず、不正を行うためには、莫大な計算をやり直さなければなりません。さらに、多数決の総意として最長のデータブロックチェーンが選ばれるため、攻撃者数が参加者のうち過半数を超えない限り、チェーンが不正に変更されることはありません。

5.Network

ネットワークは以下のように動きます。

  1. トランザクションはまず、全てのノードに通知されます。
  2. それぞれのノードは、トランザクションを収集してブロックに入れます。
  3. ノードは、PoWを計算によって発見します。
  4. PoWを発見したら、全ノードにブロックを伝搬します。
  5. ノードは、ブロック内のトランザクションが有効でかつ未使用であることを確認して、ブロックを受け取ります。
  6. ノードは、受け取ったブロックのハッシュを”previous hash(前のハッシュ)”として使用し、次のブロックの作成に取り組みます。

ノードは、常に最長のチェーンを正しいものとみなして伸びていきます。仮に、二つのノードが同時にブロックを伝搬した場合、他のノードは、はじめに受け取った方のブロックを処理しますが、もう一方のブロックも別のブランチに保存します。チェーンが一時的に分岐するということです。次のPoWが発見されてブロックが追加されると、どちらか一方のチェーンが長くなります。これにより、短い方のチェーンは破棄されることになります。

トランザクションは、必ずしも全てのノードに到達する必要はありません。多くのノードに到達しさえすれば、いずれブロックに入れられることになるでしょう。また、ノードは、受け入れ損ねていたブロックがあったとしても、次のブロックを受け取った時に、足りないブロックがあることに気づき、次のブロック受信を要求します。

6.Incentive

ブロック内の一番目のトランザクションは、ブロックの作成者に所有権があるコインを新規発行するための特別なトランザクションです。これが、いわゆるマイニング報酬であり、ノードがネットワークをサポートする(マイナーがマイニングをする)インセンティブになります。それと同時に、中央管理者の存在しないBitcoinネットワークにコインを供給させるための仕組みにもなっています。

また、トランザクション手数料もインセンティブになります。トランザクションのOutputがInputより小さい場合、その差額はPoWを見つけたノード(マイニングに成功したマイナー)のものとなります。

所定の数のコインの供給が終わると、インフレは終わり、インセンティブは取引手数料のみとなります。

このようなインセンティブがあることで、ネットワークを支配できるほど多くのマシンパワーを獲得する者が現れたとしても、ネットワークを破壊することにマシンパワーを使うのではなく、正当なルールに従って報酬を受け取った方が有利であると判断するはずと述べられています。

7.Reclaiming Disk Space

ブロック内のトランザクションは、マークルツリーを使用して管理されます。
マークルツリーは、ハッシュ同士を組み合わせて一つのハッシュにまとめ、情報を要約することでできる木のことです。

暗号理論および計算機科学において、ハッシュ木(Hash tree, ハッシュツリー)またはマークル木(Merkle tree)とは、より大きなデータ(例えばファイル)の要約結果を格納する木構造の一種であり、データの検証を行う際に使用される。

引用元:https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E6%9C%A8

トランザクションのハッシュ同士はまとめ上げられ、最終的に一つのハッシュ(マークルツリーのルート)になります。
マークルツリーのルートのみをブロックに保存することで、トランザクションのデータを破棄することができ、ノードはディスクスペースを節約してトランザクションの監視を行うことができます。

トランザクションの入っていないブロックヘッダーは、約80バイトです。ブロックが10分ごとに生成されると仮定すると、年間4.2MBになります。2008年時点で2GBのRAMを搭載したコンピュータが一般的に販売されていることと、ムーアの法則が年間1.2GBの成長を予測していることを鑑みれば、ブロックヘッダーをメモリに保存することは避けられないとしても、ストレージの問題は起こらないことがわかります。

8.Simplified Payment Verification

完全なブロックチェーンのデータを保管しておかなくても、最長チェーンのブロックヘッダのコピーを保存しておくだけで、支払いを検証することが可能になります。
これは、ブロックヘッダのマークルツリーのルートから、ブロックに関連づけられたトランザクションのマークルツリーの枝を得ることができるためです。
ノード自身がトランザクションを検証することができなくても、マークルツリーを参照することで、”ネットワークがその取引を受け入れたかどうか?”という情報を知ることができ、支払い検証を行うことができます。

ただし、攻撃者がネットワークを圧倒し続けることができる場合、攻撃者によって騙されてしまうリスクがあります。この対策の一つとして、無効なブロックを検出した場合にネットワークノードからアラートを受け取り、完全なブロックをダウンロードして検証するなどの対策をとる必要があります。頻繁に支払いを受ける企業などは、より独立したセキュリティと迅速な検証のために、独自のノードを実行する方が良いでしょう。

9.Combining and Splitting Value

デジタル署名の鎖であるコインを、一つづつ処理するという作業は非効率的です。
価値の分割と結合を行うため、トランザクションは複数のインプットとアウトプットを持ちます。
トランザクションのインプットは、大きな一つのインプットまたは、寄付などのように少額が複数集まったインプットなどがあり、アウトプットは支払い用とお釣り用の最大2つのアウトプットがあります。

10.Privacy

上図のように、従来の銀行モデルでは、信頼できる第三者が情報のアクセスを制限することによってプライバシーが保護されます。
しかし、”electronic coin”では、2重支払いを防止するために、トランザクションを公開するという方法を取っているため、従来の方法と同様にプライバシーを保護することができません。
そのため、公開鍵を個人情報と結び付けないこと、取引ごとに鍵を変えることである程度のプライバシーを保護することができます。

まとめ

本日は、信頼が必要ない電子取引システムとしてBitcoinを提案した、Satoshi Nakamotoのホワイトペーパーを紹介しました。
提案された”electronic coin”は、タイムスタンプサーバーとPoWを不正防止に使用し、ベストエフォート型の通信で取引を行うことができます。
ノードはCPUパワーを使用して、有効ブロックの拡張、無効ブロックの拒否をすることができ、利己主義的に不正が起きにくくなるように考えられています。
プライバシーの面では、取引履歴は全て公開されますが、現在ではミキシングや、シャッフルなどの技術を行うことでプライバシーを保護しようという動きもあります。

最新情報はこちら

BCHNewsでは公式のTwitterアカウント(@bchnews_jp)を開設しました。
更新情報を配信しておりますので、よろしければフォローしていただけると嬉しいです。

rei

BCHNews編集部のひとり。
わかりやすく掘り下げた記事を!というモットーで記事を書いています。
好きな食べ物はししゃもです。

関連記事

漫画で分かるBitcoinホワイトペーパーを紹介します

2018.11.15

by きなこ

JavaScriptベースでBCHアプリケーションを作成できるBITBOX SDK

2018.12.05

by きなこ

Bitcoin CashにおけるRabin Signatures

2018.09.25

by BCHNews編集部

bookchain – BCHのブロックチェーンを利用した書籍保存サービスを紹介します

2018.11.28

by BCHNews編集部