ビットコイン・インスティテュート

ビットコインは​突然現れたのではない​ — 継承と​発明

暗い設計図ふうの図。左側に並ぶラベル付きの項目からオレンジ色の線が中央の光る六角形アイコンへ集まり、そこから右側のラベル付き項目へ緑色の線が扇状に広がっている

2008年11月9日、ビットコインのホワイトペーパー公開から9日後、サトシはハル・フィニーにこう書いた:

「質問はありがたい。実は私はこれを逆順でやった。全問題を解けると自分で納得するためにまず全コードを書く必要があり、それから論文を書いた。詳細仕様を書くよりもコードを公開する方が早いと思う。」

ホワイトペーパーは動作するコードの後にやってきた。8件の引用文献は、完成した実装を既存の文献に位置づけるために集められた。だが、それぞれの役割は同じではない。ビットコインv0.1は引用されたサイファーパンク期の方式(Hashcash)から1つの暗号学的基本要素(プルーフ・オブ・ワーク)を再利用し、複数の汎用コンピューターサイエンス構成要素(マークルツリー、連鎖タイムスタンプ、確率論、ECDSA署名)を、どの単一の引用文献からも継承することなく借用し、残りの大半(分散型合意形成、UTXOモデル、マイニング報酬による発行、2,100万通貨上限、P2P伝播、難易度調整)を独自設計として合成している。ビットコインの実際の中身と各構成要素の由来を構成要素別に整理し、開発中の使用が一次資料で確定しているもの、後付けでの引用追加が確定しているもの、汎用知識の再利用、独自合成を区別する。

1. 引用の区分

「設計期間」という慣習的な意味(コード以前の独立した段階)は、サトシが実際に行ったことの枠組みとしては正確ではない。本エントリ冒頭の2008年11月9日の引用が明示している通り、サトシは概念的な仕事をコードと一緒に進めていた。以下では「開発期間」という用語で、サトシがビットコインを構築していた期間全体(コードを書き、設計上の問題を解決し、最終的にその結果を文書化する論文を書いた期間)を指す。この発言は、サトシの自己言及をまとめた一覧ではD5として収録されており、同じ「コードが先、論文が後」という読みを裏付ける「1年半」「2年」というコーディング期間への言及(D6〜D11)と並べて扱われている。

この枠組みのもと、ホワイトペーパーの8引用は、サトシの記録された過程との関係で3つの区分に分かれる。第4の区分(独自構成要素)は引用するべき先行が存在しないため、引用文献リストには現れない。

  1. 開発中に使用していた(一次資料で確定)。サトシが当該文献を意識し、その概念をビットコイン構築中に使用していたことが文書化されている。サトシとアダム・バックの2008年8月20〜22日のメール通信がHashcashをこの区分に位置づける。
  2. 後付けで引用追加(一次資料で確定)。サトシは開発期間中、当該文献を知らなかった。後に知り、ホワイトペーパーの引用文献リストに追加した。2008年8月21〜22日のメール通信がウェイ・ダイのb-moneyをこの区分に位置づける。
  3. 汎用CS知識(背景)。当該文献は、当該時期の見識ある計算機科学者なら誰でも知り得る標準的な暗号学・確率論の知識に属する。サトシが具体的に当該論文を参照したか、それとも一般的な教養から概念に到達したかは、一次資料からは復元できない。マークルツリー(1980年)、Haber-Stornettaによる連鎖タイムスタンプ(1991〜1997年)、Fellerの確率論教科書(1957年)はここに該当する。
  4. 独自構成要素(引用不能)。ビットコインが先行なしで発明した構成要素。プルーフ・オブ・ワークの重みで決まる最長チェーン規則に基づく分散型合意形成、UTXOモデル、マイニング報酬による新規発行、2,100万通貨上限、難易度調整アルゴリズム、稼働中のP2Pネットワーク。

2. 構成要素別の系譜

ビットコインの構成要素引用文献使用区分注記
プルーフ・オブ・ワーク[6] Hashcash(バック1997年、2002年改訂)開発中に使用2008年8月20〜22日のサトシ↔バックメールで確認
連鎖タイムスタンプ/チェーン順序[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月22日返信「b-moneyのページは知らなかった」
分散型合意形成(PoWで重み付けされた最長チェーン規則)—独自ビットコインの中核的な発明
UTXOモデル—独自ビットコインのトランザクション出力設計
マイニング報酬による新規発行—独自ビットコインの貨幣発行機構
2,100万通貨上限—独自ビットコインの貨幣政策パラメーター
難易度調整—独自ビットコイン固有のアルゴリズム
P2Pネットワーク伝播(稼働中のネットワーク)—独自合成汎用的なP2P原理を台帳複製に適用
ECDSA/secp256k1によるトランザクション署名—標準暗号標準ツール、特定の引用なし

独自構成要素はホワイトペーパーの引用文献リストに含まれない。先行が存在しないからである。これらはビットコインが設計空間に対して行った貢献である。鍵生成、署名、検証、そしてビットコインが経てきた2つの署名方式の時代を含め、ECDSAが実装レベルで何になったかは、暗号設計ページが記録している。

3. 区分の一次資料的根拠

3.1 Hashcash:開発中に使用

サトシの2008年8月20日のアダム・バック宛メールはHashcashの正しい引用形式を質問している。本文ではビットコインの仕組みを詳しく述べ、Hashcashを「コードで再利用している既存の基本要素」として参照している。これはHashcashの使用が開発中であって開発後ではないことを位置づける。

「Hashcash」のcashは計算コストとしての対価の比喩(バック1997年のスパム対策・サービス拒否対抗策)であって通貨ではない。Hashcashの中身はプルーフ・オブ・ワーク基本要素のみで、台帳・送金・合意形成・通貨供給はない。ビットコインはPoWのみを再利用し、それ以外を別途構築する。「Hashcashの作者=ビットコインの作者」論点への含意についてはアダム・バック仮説 § 1.2を参照。この再利用された基本要素が実装レベルで何になったかは、コンセンサス設計ページが記録している。各マイナーが有効なブロックを生成するために解くSHA-256dのプルーフ・オブ・ワークパズルである。

3.2 b-money:後付けで引用追加

サトシの2008年8月21日のバック宛返信は「ありがとう。b-moneyは読んだことがなかったが、私のアイデアはまさにその出発点から始まっている」で始まる。これは、b-moneyがホワイトペーパーの引用文献リストにコードが実質的に完了した後で追加されたことの直接の一次資料である。翌日サトシはウェイ・ダイ宛にも直接メールを送り、提案について述べている。

ホワイトペーパーに現れる引用文献 [1] は、ウェイ・ダイの「b-money」(1998年)である。番号順は編集上のもので、内容は後から加えられた。ウェイ・ダイの2014年AALWAスレッド回想はこれと整合する:ウェイ・ダイはサトシが「以前から積極的に活動していた人物ではない」と示唆しており、これは「b-moneyを紹介経由で発見せざるを得なかった設計者」像と整合する。

このHashcash・b-moneyの系譜は、金子勇の正体仮説が金子を検証する際の物差しでもある。サトシとは異なり、金子はこの議論の流れに記録された存在を持たず、Winny自体の設計系譜(Freenet、Gnutella)はまったく別の方向を向いている。

3.3マークルツリー・タイムスタンプ・確率論:汎用CS知識

ホワイトペーパーはブロックヘッダーでマークルツリーを使用し(§7)、タイムスタンプサーバー型のチェーン構築を記述し(§3)、二重支払いの確率分析を行う(§11)。それぞれに引用文献がある。しかし、根底にある概念は当該時期の標準的な1990〜2000年代の計算機科学知識であり、相当の大学院レベルの教育を受けた者なら入手可能である。サトシのメール記録には「マークルツリーは知らなかった」や「連鎖タイムスタンプは知らなかった」に類する瞬間は含まれない。その不在は、開発中の使用を立証するわけでも、後付けの追加を立証するわけでもない。記録はこの点を未決着のまま残す:サトシは具体的にこれらの論文を参照したかもしれないし、一般的な教養から概念に到達して最も関連する先行として引用を加えたかもしれない。§3の見出し「タイムスタンプサーバー」が指し示すものを、ピーター・トッドは2016年のOpenTimestampsで独立したインフラへと一般化した。ホワイトペーパーがこの同じ連鎖タイムスタンプの系譜を借用してから8年後のことである。これらの借用元が実装レベルで何になったかは、ブロック・チェーン設計ページが記録している。ブロック内のトランザクションをコミットするマークルツリーと、台帳を追記専用にするハッシュ連鎖のヘッダー列である。

3.4独自構成要素:引用不能

PoWで重み付けされた最長チェーン規則による分散型合意形成、UTXOモデル、マイニング報酬による新規発行、2,100万通貨上限、難易度調整アルゴリズムは、ホワイトペーパーの引用文献リストに先行を持たない。ビットコイン以前には統合された設計として存在しなかったからである。ホワイトペーパーはこれらをビットコインの貢献として提示している。一部の下位構成要素(最長チェーンの考え方、P2P合意形成一般など)は分散システム文献に関連する先行があるが、本論点の主張は「具体的な合成が独自である」という点にある。

4. サトシ正体仮説への含意

構成要素レベルの分解は、正体仮説の重み付けに直接影響する。具体的な含意2点:

  • Hashcashの作者であることは、ビットコインの多数の構成要素のうち一つを設計したことを意味する。PoW基本要素は、多数の独自構成要素を含むシステムの中の引用された一つの貢献である。「Hashcashの作者=ビットコインの作者」のフォレンジック整合論は、Hashcashを部分的貢献として重み付けできるが、全体の重みを担うことはできない。詳細はアダム・バック=サトシ正体仮説エントリーを参照。
  • b-moneyの作者であることも、同様にビットコインの設計者であることを意味しない。b-moneyの引用はサトシがバックの紹介で知った後に追加されたもので、b-moneyの概念は開発期間中はビットコインの設計に影響していない。詳細は正体仮説の概観のウェイ・ダイ・プロファイルを参照。

他の固有名候補仮説(サッサマン、金子勇、トッド、ライト等)はホワイトペーパーの引用文献の作者性に直接結びついておらず、別の論点(タイミング、能力、可視性、外部的否定)で評価される。詳細は正体仮説の概観を参照。

5. 本エントリーの限界

  • 対象はホワイトペーパー引用文献レベルの系譜に限り、ビットコインv0.1のソースコードレベルの再利用は扱わない。たとえばv0.1コードベースは特定の暗号ライブラリ(SHA-256でCrypto++)をimportしているが、これはホワイトペーパーの引用ではなく、ソースコード分析エントリーの射程である。
  • 「汎用CS知識」区分は開発中の認識を不確定のままにしている。新たな一次資料(追加のサトシ通信、設計ノート等)が出現すれば、§2の個別行が区分間で移動する可能性がある。
  • 「独自合成」区分は、合成のレベルでの先行不在のみを主張している。一部の下位構成要素は分散システム文献に関連する先行を持つが、本論点の主張は「具体的な合成が独自である」という点にある。

本エントリーの技術系譜の焦点は、ハイエク1976年『貨幣発行自由化論』から1990年代のエクストロピアン・サイファーパンク環境を経てビットコインに至る、より広い思想史的系譜の中に位置する。その一段早い思想枠組みはハイエク=エクストロピアン系譜エントリーで扱う。

「再利用か発明か」という論点は、後年のいくつもの読みを貫いている。ウェイ・ダイ正体仮説は本表のb-money行に依拠し、サイファーパンク独立到達の分析はHashcash行を引いて、サトシがその先駆を知りながらその界隈には属していなかったと論じる。ニック・サボ正体仮説は同じ読みをビットゴールドに当てはめる(ホワイトペーパーが引いていない先駆であり、本表に行はない)。各行の一次資料はHashcashの告知とアダム・バックの1998年b-money批評にある。

ビットコインの参考文献一覧は家系図のように見えるが、私には、事後に組み立てられた文献表として読める。著者はまずコードを書き、あとから祖先を探しに出て、最も重要な部品には祖先がいないことを見つけた。