Ameba Ownd

アプリで簡単、無料ホームページ作成

ハッタリからはじめよ - bluff driven -

【Bitcoin】Nakamoto論文をざっくり読む

2018.09.03 18:25

今更ながら、自分の中での復習も兼ねて、Bitcoinがこの世に生み出された原論文の概要をまとめておきます。

少しだけ易しいMastering Bitcoinで一通りBitcoinの仕組みを理解していることを前提としているので、「Bitcoinの原論文ってどんなこと書いてあるんだろ」くらいの感覚で読んで頂けると幸いです。


原論文はここから読めます。


0. 基本情報

タイトル:Bitcoin: A Peer-to-Peer Electronic Cash System

著者:Satoshi Nakamoto(正体不明)

発表日時:2008年10月31日



1. Introduction

現在のインターネット決済では

といった問題があるので、よくない。


一方で、仲介者を無くそうとするシステムでは

という問題がある。


これらの問題を解決する仕組みBitcoinを提案しますという話



2.Transactions

トランザクションについて「UTXO, locking script, unlocking script」周りの話が、めっちゃざっくり説明してある。


二重支払い問題の解決は、これまで「中央機関が全ての取引を監視し、取引が起こるたびにそこで使われた通貨を一度無効にし、新しい通貨を発行することで、新しい通貨は二重使用されていない」という証明の仕方をしていたが、Bitcoinでは「全ての取引履歴を全員が監視し、多くの人が二重使用されていないと同意したらそのコインはそのコインは二重使用されていない」という証明方法を使います。といった話



3. Timestamp Server

連鎖していくブロックは直前のブロックの(正確にはブロックヘッダの)Hash値を含んでいるので、「このブロックは必ずこのブロックの前に存在していた」ということが証明され、一種のタイムスタンプになるという話。



4. Proof-of-Work


という点から、ブロックデータは改ざんできないようになってますという話



5. Network


1. 新規のトランザクションは全ノードに向けて送信される。(全ノードに届かなくても良い)

2. 各ノード(正確にはminer)が新しい取引をブロックに取り入れる。

3. 各ノード(正確にはminer)がそのブロックへのプルーフ・オブ・ワークを算出する。

4. PoWを見つけ次第、各ノードはそれを全ノードに告知する。

5. ノードは、ブロックに含まれる全ての取引が有効であり、以前に使われていないことを検証した上で、それを承認する。

6. ノードは、承認されたブロックのハッシュを直前のハッシュとして用いて、チェーンの次のブロックの作成を開始する。


と言った流れでトランザクションはブロックに入れられて行きますよという話



6. Incentive

ブロック作成者に「新規発行bitcoin(coinbeseトランザクション)」と「そのブロックに含まれるトランザクションの取引手数料の総和」を電力と計算資源使ってPoWを解いてブロック生成した報酬として与える。


もし他の全てのノードの計算力を上回る主体が攻撃者として不正を働こうとしても、

攻撃者ができることは

・自分の支払ったトランザクションをなかったことにする

くらいしかできず、それならその計算資源でマイニングしてたほうが儲かるから

不正するインセンティブないよねという話



7. Reclaiming Disk Space

古いブロックの中身トランザクションのデータは保持しておく必要はなく、Merkle Treeで要約したMerkle Rootがブロックヘッダに含まれているので、それだけ持ってることでディスク容量等節約できるよねという話。



8. Simplified Payment Verification

タイトルからわかる通り、SPVノードの説明。

7の考え方でブロックヘッダだけ保持していても、トランザクションを検証することはできるよねという話



9. Combining and Splitting Value

一つのUTXOに含まれるbitcoinは分割することはできず、各トランザクションにはInput, Output共に複数含めることが可能になっているという話。



10. Privacy

従来の商取引のプライバシー保護の仕方は「取引を処理する関連団体だけの秘密にする」(逆に言えば関係者には見られる)というものだったが、

Bitcoinでは「公開鍵と個人が紐づけられていない」ため、「誰かが誰かにいくら送ったかは全員に見られるけど、それが誰かはわからない」というプライバシー保護になっている。


また、同じBitcoinアドレス・公開鍵を使っていると取引傾向などで個人が判明する恐れがあるので、一回のトランザクションごとに新しい鍵を生成するようにする必要があるよという話



11. Calculations


攻撃者が正当なチェーンよりも速いスピードで偽のチェーンを伸ばして行き、データを改ざんしようとする場合について考えている。

攻撃者が新規ブロックを生成する確率(攻撃者の持つハッシュパワーに依存する)がその他の正常なノードが新規ブロックを生成する確率よりも低いと仮定した時には、ブロックが積み上がるに連れて攻撃が成功する確率が指数関数的に減少していくことを示している。



12. Conclusion



といったこれらのルールによって成る、信用に依存しない電子取引のシステムBitcoinを提案するというまとめ話


 <感想>

Bitcoinのwhite paper自体はとても簡潔に書かれており、Satoshi Nakamotoによって開発されたBitcoinリファレンスクライアントであるBitcoin Coreのソースコードを参照することを前提にしているんだろうなぁと感じました。


中でも、「11章 Calculations」は、Mastering Bitcoinにはなかった確率計算を読めるのでとても参考になります。

Mastering Bitcoinを読破→原論文の「11章 Calculations」という流れで読むといいと思います。