最高の論文-ビットコイン論文- byサトシナカモト
ビットコインの生みの親、サトシナカモト
世の中には数多の論文があり、誰にも読まれず電子ゴミと化しているものも数知れず存在します。
そんな中で、最高の論文の一つといって間違いないビットコインの生みの親のサトシナカモトの論文を紹介します
(2008年10月31日 https://bitcoin.org/bitcoin.pdf)。

本日時点で、引用件数29881件、もうすぐ3万件。
間違いなく世界トップクラスに価値ある論文のひとつ。
結論
ビットコイン論文の本質 二重使用問題 (double-spending problem) の解決法
以下でざっくり説明します。

ビットコイン論文の構成
2. introduction(第1章)
3. 本論1: 二重使用問題の解決法(第2-5章)
タイムスタンプ、PoW、ネットワーク
4. 本論2: 上述の解決法に関する諸問題の解決法(第6-10章)
インセンティブ、軽量クライアント、プライバシー
5. 本論3: 上述の解決法に関する確率論的説明(第11章)
6. 結論(第12章)
7. 参考文献一覧
以下で各章についてざっくり。

A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution.
ビットコイン:ピアツーピアの電子キャッシュシステム
ピア(Peer) :ネットワーク通信において、接続している相手のコンピューターや通信機器のこと。 ピア・ツー・ピア:コンピューターが対等な関係でデータを交信するシステムのこと。Peer to Peer、P2P、PtoPと表記
1.Introduction
インターネットでの電子取引は、信用できる第三者機関(Trusted Third Party;TTP)に依存。
本当に必要なのは、「信用」ではなく、暗号化された証明に基づく電子取引システム。
In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions.
この論文では、二重使用問題の解決法を提案する。その解決法は、P2P分散タイムスタンプサーバーを用いて、取引が生じた順番の計算機的な証明を生成するもの。
2.Transactions
この論文では、電子コインをデジタル署名のチェーンと定義。
以下に供覧するが、これはブロックのチェーンではなくデジタル署名のチェーン。
デジタル署名は後述するトランザクション (transaction) の中に含まれるので、トランザクションのチェーン。
各所有者は、一つ前のトランザクションおよび次の所有者の公開鍵のハッシュに対しデジタルに署名しコインの最後に付け加えることで、次の所有者へコインを譲渡する。受取人は、所有権のチェーンを証明してくれるそれらの署名を検証できる。

Public Keyに注目。どのPublic KeyがどのTransactionに含まれているのかがポイント。
(もしSignature1が偽物であれば、 Public Key1による検証が偽物だとばれ、TransactionBが受け入れられず、チェーンを伸ばせず、コインの譲渡ができない → チェーンを伸ばしたければ、TransactionBに本物のSignature1が必要。)
このようにPublic Keyは、あるTransactionにおいてコインを譲渡された人でありかつ次にコインを譲渡できる人、すなわちコインのOwnerを表しているとみなせる。
3.Timestamp Server
「デジタル貸金庫」は、クライアントが通信回線を通してデータを送ると、データをまるごとコピーして日時とともに保存します。後日、そのデータがその日時に存在していたこと、改ざんされていないことの確認が必要になったら、保存しておいたコピーおよび日時と突き合わせる。
これをnaiveなタイムスタンプと表現。

問題点:プライバシー、回線容量、ストレージ、機能不全
この問題の解決法が ハッシュ (hash) とデジタル署名 (digital signature) の利用
改良① ハッシュ
元のデータの内容が読み取れなくなりますので、先ほどのプライバシーの問題が解決。
②デジタル署名
デジタル署名は、ある人があるデータを作成したことを検証できる技術。クライアントは署名を検証することで、サービスが目的のデータに対してタイムスタンプを押してくれたことを確認できますし、壊れたデータに署名するような機能不全が発生していたら検出できるわけです。
信頼できるタイムスタンプサービス
ハッシュとデジタル署名を用いて改良したタイムスタンプサービスを図示


A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post .
タイムスタンプサーバーは、タイムスタンプを付与する複数のアイテムからなるブロックのハッシュを取得し、例えば新聞やUsenetの投稿などにおいて、そのハッシュを広く発信することで機能する
4.Proof-of Work(PoW)
おおまかに言うと PoW とは「ある水準のワークをある特定の時間をかけて行ったことを明らかにするプロトコル (This is a protocol in which a prover demonstrates to a verifier that she has expended a certain level of computational effort in a specified interval of time.)
The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits.
そのプルーフ・オブ・ワークでは、ある値をつぶさに調べて探し当てることになる。その値とは、例えば SHA-256 を用いて、ハッシュ化すると先頭の数ビットがゼロとなる値である。
SHA-256 の「SHA」とは、「Secure Hash Algorithm」の略です。その名のとおり、SHA-256 はハッシュを算出するためのアルゴリズムを規定したもので、ハッシュアルゴリズムやハッシュ関数 (hash function) と呼ばれます。
そもそもハッシュって何?
ハッシュ値、ハッシュ関数はビットコインのトランザクション(取引記録)処理の基本の考え方
・入力値が少しでも違うと、ハッシュ値は全く異なる
・入力値が同じだと、ハッシュ値も同じ
・入力値が何桁でも、ハッシュ値は同じ64桁
・取引記録をハッシュ値に変換するのは簡単
・ハッシュ値を取引記録に変換するのは不可能
For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block’s hash the required zero bits.
本論文のタイムスタンプ・ネットワークでは、プルーフ・オブ・ワークを行うにあたり、ブロックのナンスを増やしていく。ブロックのハッシュに、必要な数だけゼロが出てくるまで、ナンスを増やしていくのである。

5.Network
ネットワーク実行の手順は以下 1) トランザクションのブロードキャスト 2) トランザクションの蓄積 3) PoW 4) ブロックのブロードキャスト 5) ブロックの検査 6) ブロックの受け入れ
Nodes always consider the longest chain to be the correct one and will keep working on extending it.
ノードは常に最長のチェーンを正しいものとみなし、それを伸ばそうとし続ける。
以上のような六つのステップを繰り返すことが、
「たったひとつの順番に合意できるような仕組み」であり「多数派のノードが合意したことの証明」
6.Incentive
7.Reclaiming Disk Space
Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space.
あるコインの最新のトランザクションが十分な数のブロックの下に埋まってしまえば、それ以前の使用済みのトランザクションを廃棄してディスク容量を節約できる。
8.Simplified Payment Vertification
9.Combining and Splitting Value
ビットコインの場合、コインは小数点以下8桁までで表すことができる。
そのように分けたりまとめたりできるのは、トランザクションの構造のおかげ。
To allow value to be split and combined, transactions contain multiple inputs and outputs.
額面価格を分けたり合わせたりできるよう、トランザクションは複数のインプットとアウトプットを含んでいる。

インプット (input) は、このトランザクションで譲渡するコインの情報で、アウトプット (output) は、譲渡した結果の情報。
10. Privacy
The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, …
情報へのアクセスを、関係者と信頼できる第三者機関に制限することで、従来の銀行業のモデルはある程度のプライバシーを実現している。(ビットコインの場合、)すべてのトランザクションを公表する必要があるため、この方式は不可能である。
11. Calculations

Cコードに変換すると…

いくつか実行してみると、zが増えるにしたがって確率が指数関数的に下がっていくことが分かる。

Pが0.1%以下の時について値を求めると…

12. Conclusion
この論文の提案