なんくるないさ

最高の論文-ビットコイン論文- byサトシナカモト

crypto money

ビットコインの生みの親、サトシナカモト

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

本日時点で、引用件数29881件、もうすぐ3万件
間違いなく世界トップクラスに価値ある論文のひとつ。

結論

ビットコイン論文の本質
二重使用問題 (double-spending problem) の解決法

以下でざっくり説明します。

ビットコイン論文の構成

1. Abstract
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に含まれているのかがポイント

1.Owner1のPublic Key1はTransactionAにあり、これは次のTransactionBにあるSignature1を検証する。
(もしSignature1が偽物であれば、  Public Key1による検証が偽物だとばれ、TransactionBが受け入れられず、チェーンを伸ばせず、コインの譲渡ができない → チェーンを伸ばしたければ、TransactionBに本物のSignature1が必要。)
2.本物のSignature1を作れるのは、Owner1のPrivate Key1だけ。よって、チェーンを伸ばせるのは、Owner1だけ。
3.Owner1がチェーンを伸ばすとき、TransactionBにはコインの受取人であるOwner2のPublicKey2を含めておく。
4.すると今度は、本物のSignature2を作ってチェーンを伸ばせる人、つまりコインを譲渡できる人はOwner2だけになる。
このように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

この論文の提案

信頼できる第三者機関 (TTP) を用いずに、P2Pネットワークによる分散タイムスタンプを用いて、一意な順序でデータを記録する方式。
代表例は、PoW と組み合わせたビットコイン。