
2008年11月9日、ビットコインのホワイトペーパー公開から9日後、サトシはハル・フィニーにこう書いた:
質問してくれてありがたい。実は、論文とコードの順番が逆だった。すべての問題を解決できると自分を納得させるには、まずコードを全部書かなければならなかった。論文はそのあとで書いた。詳細な仕様を書くよりも先にコードをリリースできると思う。
ホワイトペーパーは、動くコードのあとに書かれた。8件の参考文献は、出来上がった実装を既存の文献とつなぐために集められたものだ。だが、どれも同じ役割を担っているわけではない。ビットコインv0.1の部品は、出どころで三つに分かれる。一つは、引用したサイファーパンクの時代の方式(Hashcash)から使い直した、暗号の基本の部品(プルーフ・オブ・ワーク)である。二つ目は、計算機科学で広く使われている部品(マークルツリー、連鎖タイムスタンプ、確率論、ECDSA署名)で、どれかの参考文献から受け継いだのではなく、誰でも使える知識として取り入れたものである。残りの大半(分散型合意形成、UTXOモデル、マイニング報酬による発行、2,100万通貨上限、P2Pでの伝え合い、難易度調整)は、新しく設計して組み合わせたものである。ここでは、ビットコインの中身を部品ごとに分けて、出どころをまとめる。開発中に使っていたと一次資料から分かるもの、あとから引用に加えたと分かるもの、広く知られた知識を使ったもの、新しい組み合わせを分けて見ていく。
1 引用の区分
よく言われる「設計期間」(コードを書く前に、設計だけをしていた時期)という考え方は、サトシが実際にしたことと合わない。このページの冒頭に引いた2008年11月9日の言葉にはっきりあるとおり、サトシは考える仕事を、コードを書くのと一緒に進めていた。以下では「開発期間」という用語で、サトシがビットコインを構築していた期間全体(コードを書き、設計上の問題を解決し、最終的にその結果を文書化する論文を書いた期間)を指す。この発言は、サトシが自分について語った言葉の一覧にD5として載っていて、コーディングの期間を「1年半」「2年」と述べた発言(D6〜D11)と並べてある。D6〜D11も、同じく「コードが先、論文が後」だったことを裏付けている。
この枠組みで見ると、ホワイトペーパーの8件の引用は、記録に残るサトシの作業の進め方との関係で、三つの区分に分かれる。これとは別に、ビットコインが独自に作った部品という四つ目の区分があるが、引用できる先行研究がないので、参考文献の一覧には出てこない。
- 開発中に使用していた(一次資料で確定)。サトシがその文献を知っていて、ビットコインを作りながらその考えを使っていたことが、記録で分かる。サトシとアダム・バックの2008年8月20〜21日のメールのやり取りから、Hashcashはこの区分に入る。
- あとから知って引用に追加(一次資料で確定)。サトシは開発期間中、その文献を知らなかった。あとで知って、ホワイトペーパーの参考文献に加えた。2008年8月21〜22日のメールから、ウェイ・ダイのb-moneyはこの区分に入る。
- 汎用CS知識(背景)。計算機科学で広く知られた知識のこと。その文献に書かれているのは、標準の暗号学や確率論の知識で、当時、計算機科学をきちんと学んだ人なら、誰でも知っていておかしくない。サトシがその論文そのものを参照したのか、身につけた一般的な知識からその考えにたどり着いたのかは、一次資料からは分からない。マークルツリー(1980年)、ハーバーとストルネッタによる連鎖タイムスタンプ(1991〜1997年)、フェラーの確率論教科書(1957年)はここに該当する。
- 独自構成要素(引用できる先行例なし)。ビットコインが、手本なしに作り出した部品。次のものがこれにあたる。プルーフ・オブ・ワークの重みで一番長いチェーンを選ぶ規則による分散型合意形成。UTXOモデル。マイニング報酬による新規発行。2,100万通貨上限。難易度調整アルゴリズム。実際に動いているP2Pネットワーク。
2 構成要素別の系譜
| ビットコインの構成要素 | 引用文献 | 使用区分 | 注記 |
|---|---|---|---|
| プルーフ・オブ・ワーク | [6] Hashcash(バック1997年、2002年改訂) | 開発中に使用 | 2008年8月20〜21日の、サトシとバックのメールで確かめられる |
| 連鎖タイムスタンプ/チェーン順序 | [2-5] Haber-Stornetta 1991, 1993, 1997 + Massias 1999 | 汎用CS知識 | 1990年代のタイムスタンプの代表的な文献。ブロックをつなげていくビットコインの考え方は、連鎖タイムスタンプとよく似ている |
| ブロックヘッダーのマークルツリー | [7] Merkle 1980 | 汎用CS知識 | 標準的なCS教科書概念。トランザクション集合の効率化に使用 |
| 二重支払いの確率分析 | [8] Feller 1957 | 汎用CS知識 | 標準的な確率論教科書。ホワイトペーパー §11計算で使用 |
| 分散デジタルキャッシュ概念 | [1] b-money(ウェイ・ダイ1998) | あとから知って引用に追加 | 8月21日のバックへの返事で、サトシは「b-moneyのページは知らなかった」と書いた |
| 分散型合意形成(PoWで重み付けされた最長チェーン規則) | — | 独自 | ビットコインの中核的な発明 |
| UTXOモデル | — | 独自 | ビットコインのトランザクション出力設計 |
| マイニング報酬による新規発行 | — | 独自 | ビットコインの貨幣発行機構 |
| 2,100万通貨上限 | — | 独自 | ビットコインのお金の出し方を決める数字 |
| 難易度調整 | — | 独自 | ビットコイン固有のアルゴリズム |
| P2Pネットワーク伝播(稼働中のネットワーク) | — | 独自の組み合わせ | 広く知られたP2Pの考え方を、台帳を写して配ることに使った |
| ECDSA/secp256k1によるトランザクション署名 | — | 標準暗号 | 標準ツール、特定の引用なし |
独自構成要素がホワイトペーパーの参考文献にないのは、それまで誰も発表していなかったからである。これらこそ、ビットコインが設計に新しく付け加えたものである。ECDSAが実際のコードでどう作られたかは、暗号の設計のページにまとめてある。鍵の作り方、署名、検証のほか、ビットコインの署名の方式がこれまでに経てきた二つの時代も扱っている。
3 区分の裏付けになる一次資料
3.1 Hashcash:開発中に使用
サトシの2008年8月20日のアダム・バック宛メールはHashcashの正しい引用形式を質問している。メールの本文は、ビットコインの仕組みをくわしく説明し、Hashcashを、コードの中で使い直している、すでにある基本の部品として挙げている。このメールから、Hashcashを使ったのは、開発を終えたあとではなく、開発の最中だったと分かる。
Hashcashは、バックが1997年に作った、迷惑メールとサービス拒否攻撃を防ぐ仕組みである。名前のcashは、計算の手間を郵便料金に見立てたもので、通貨のことではない。Hashcashにあるのは、プルーフ・オブ・ワークという基本の部品だけで、台帳も、送金も、合意形成も、通貨を出す仕組みもない。ビットコインはPoWだけを使い直し、ほかはすべて別に作った。このことから「Hashcashの作者=ビットコインの作者」という説について何が言えるかは、アダム・バック仮説 § 1.2を参照。使い直したこの部品が、実際のコードでどうなったかは、コンセンサスの設計のページにある。SHA-256dを使うプルーフ・オブ・ワークのパズルで、マイナーはそれぞれ、有効なブロックを作るために、このパズルを解く。
3.2 b-money:あとから知って引用に追加
サトシの2008年8月21日のバック宛返信は「ありがとう。b-moneyのページは知らなかったが、私のアイデアの出発点は、まさにそこだ」で始まる。この返事は、b-moneyがホワイトペーパーの参考文献に、コードがほぼ出来上がってから加えられたことを、そのまま示す一次資料である。翌日、サトシはウェイ・ダイにも直接メールを送り、提案について書いている。
ホワイトペーパーに現れる引用文献 [1] は、ウェイ・ダイの「b-money」(1998年)である。1番目に置かれているのは、一覧の並べ方の都合にすぎず、引用そのものは、あとから加えられた。ウェイ・ダイの2014年AALWAスレッド回想もこれと合う。ウェイ・ダイは、サトシは「以前から積極的に活動していた人物ではない」と書いている。人に教えられて、初めてb-moneyを知った設計者だった、ということと合う。
Hashcashとb-moneyにつながるこの流れは、金子勇がサトシだという説を検討するときの基準にもなる。サトシと違って、金子がこうした議論に加わっていた記録はなく、Winnyのもとになった設計(Freenet、Gnutella)は、まったく別の流れから来ている。
3.3 マークルツリー・タイムスタンプ・確率論:汎用CS知識
ホワイトペーパーは、ブロックヘッダーでマークルツリーを使い(§7)、タイムスタンプサーバーのやり方でチェーンを作ると書き(§3)、二重支払いが起きる確率を計算している(§11)。どれにも参考文献がついている。しかし、もとになっている考えは、1990〜2000年代の計算機科学の標準の知識で、その分野を大学院くらいまで学んだ人なら、誰でも知っていておかしくない。サトシのメールの記録には、「マークルツリーは知らなかった」「連鎖タイムスタンプは知らなかった」と書いたところはない。それがないからといって、開発中に使っていたとも、あとから加えたとも言えない。記録からは、どちらとも決められない。サトシはこれらの論文そのものを読んで使ったのかもしれない。身につけていた知識から同じ考えにたどり着き、一番関係の深い先行研究として、あとで引用を加えたのかもしれない。
ホワイトペーパーが引くタイムスタンプの論文のうち二つは、何を目指したかをはっきり書いている。スチュアート・ハーバーとW・スコット・ストルネッタがベルコアで書いた1991年の論文は、タイムスタンプの証明書のそれぞれを、それより前に受けた依頼に結びつけたうえで、さらに一歩進めて、「この方式は、中央のタイムスタンプのサービスをまったく使わなくてよい」と書く。2人がデイブ・ベイヤーと書いた1993年の論文は、多くの依頼を木の形で一つの値にまとめ、「この仕組みを管理したり、それで利益を得たりする中央の事務局は要らない」と書いた。毎日一つ選ぶその値は「新聞の広告に載せ、図書館のマイクロフィルムにいつまでも残せる」とも書いている。1997年には、同じ作りのサービスを売る会社があった。Surety Technologiesのサイトは、Digital Notaryのサービスと、その「スーパー・ハッシュ値」を「週に一度、ニューヨーク・タイムズの商業告知欄に載せる」と説明し、なぜ信頼できるのかを、一言でこう書いていた。「要するに、Suretyを信頼できるのは、信頼しなくてよいからだ」。
ホワイトペーパー§3の見出しは「タイムスタンプサーバー」である。ピーター・トッドは2016年に、まさにこれを、ビットコインとは切り離して誰でも使える仕組み、OpenTimestampsに作り直した。ホワイトペーパーが、同じ連鎖タイムスタンプの考え方を取り入れてから、8年後のことだった。取り入れたこれらの部品が、実際のコードでどうなったかは、ブロックとチェーンの設計のページにある。ブロックの中のトランザクションをまとめて一つの値に固定するマークルツリーと、ハッシュでつながり、台帳を書き足すことしかできなくするヘッダーの列である。
3.4 独自構成要素:引用できる先行例なし
PoWの重みで一番長いチェーンを選ぶ分散型合意形成、UTXOモデル、マイニング報酬による新規発行、2,100万通貨上限、難易度調整アルゴリズムは、ホワイトペーパーの参考文献のどれにも、手本がない。ビットコインより前に、これらをまとめた設計はなかったからである。ホワイトペーパーはこれらをビットコインの貢献として提示している。それぞれの中の小さな部品(最長チェーンという考え方、P2Pでの合意形成全般など)には、分散システムの文献に関係する先行研究がある。ただ、新しいのは、それらの具体的な組み合わせである。
4 サトシ正体仮説への含意
部品ごとに分けて見ると、正体の説がどれだけ説得力を持つかが、はっきり変わってくる。次の二点である。
- Hashcashの作者は、ビットコインの多くの部品のうち、一つを設計したにすぎない。独自の部品をたくさん持つシステムの中で、PoWという部品は、引用された一つの貢献でしかない。だから、設計が近いことを根拠に「Hashcashの作者=ビットコインの作者」と言う説は、Hashcashをビットコインの一部への貢献とは数えられても、ビットコイン全体を作ったことの証拠にはできない。詳細はアダム・バック=サトシ正体仮説エントリーを参照。
- b-moneyの作者であることも、同様にビットコインの設計者であることを意味しない。b-moneyの引用は、バックに教えられてサトシがb-moneyを知ったあとで加えたもので、開発しているあいだのビットコインの設計に、b-moneyの考えが影響したことはない。詳細は正体仮説の概観のウェイ・ダイ・プロファイルを参照。
名前の挙がったほかの候補(サッサマン、金子勇、トッド、ライトなど)の説は、ホワイトペーパーの参考文献の著者かどうかとは、じかには関係しない。こちらは、別の点(時期、能力、人目に触れていたか、ほかの人による否定)で検討される。詳細は正体仮説の概観を参照。
5 このページの限界
- 扱うのは、ホワイトペーパーが引用した文献から見た出どころだけで、ビットコインv0.1のソースコードが、ほかのコードを使い回していることは扱わない。たとえば、v0.1のコードには、ある暗号ライブラリ(SHA-256のためのCrypto++)が組み込まれているが、これはホワイトペーパーの引用ではないので、ソースコード分析のエントリーで扱う。
- 「汎用CS知識」の区分では、サトシが開発中にそれを知っていたかどうかは決まらない。新しい一次資料(サトシの通信の追加、設計のメモなど)が出てくれば、§2の行のいくつかが別の区分に移る可能性がある。
- 「独自の組み合わせ」の区分が意味するのは、その組み合わせの手本がない、ということだけである。下位の部品の一部には分散システムの文献に関連する先行研究があり、新しいのは具体的な組み合わせのほうである。
ここで扱う技術の流れは、もっと大きな思想の流れの一部である。ハイエクの1976年の『貨幣発行自由化論』に始まり、1990年代のエクストロピアンとサイファーパンクの人たちを経て、ビットコインに至る流れである。ビットコインより前のこの思想の流れは、ハイエクとエクストロピアンからビットコインへの流れを扱ったページで扱う。
「使い直したのか、発明したのか」という論点は、のちのいくつもの分析が受け継いでいる。ウェイ・ダイがサトシだという説のページでは、この表のb-moneyの行を出発点にした。サトシとサイファーパンクの関わりを扱った分析では、Hashcashの行を引いて、サトシは先にあった仕事を知ってはいたが、その人たちの仲間ではなかった、と論じる。ニック・サボがサトシだという説のページでは、同じ見方をビットゴールドに当てはめた(ホワイトペーパーが引いていない先行の仕事なので、この表に行はない)。「コードが仕上がる前にサトシが知っていたもの」のページでは、この表と同じ行に、参考文献に入っていない先行技術も加えて、それぞれを、サトシが知っていたと分かる一番早い記録の日付で並べた。これらの行の裏付けになる一次資料は、Hashcashの告知とアダム・バックの1998年b-money批評にある。
ビットコインの参考文献の一覧は、家系図のように見えるが、実はあとから組み立てた文献の一覧である。作者はまずコードを書き、そのあとで、それぞれの部品のもとになったものを探した。そして、一番大事な部品には、もとになったものがないと知った。
































