
Bitcoin v0.1はSourceForge上で .rarアーカイブとして公開された。この形式は、オープンソースの公開よりも、IRCやXDCCで海賊版を流すWarezシーンでよく使われていた。バージョン管理システムは使われなかった。このページでは、v0.1の配り方と、開発の道具が使われていなかったことを、ひとまとめにして考える。そのうえで、ダン・カミンスキーが2011年にセキュリティを調べた結果と並べる。カミンスキーは、まったく別の角度から、v0.1のセキュリティの設計を確かめていた。サトシが一人でどんな環境で開発していたかの手がかり (ハンガリアン記法、OpenSSLへの依存、Visual C++ 6.0の道具、PGPの暗号文の最初の行にあるMingW32) は、Windows中心の開発環境の分析という別のページで扱う。
1 配布: .rarパッケージングの選択
Bitcoin v0.1は .rarアーカイブとして配布された。SourceForgeでは .zipや .tar.gzがオープンソースリリースの標準だったため、この形式を選ぶのは珍しい。.rar形式がよく使われていたのは、Warezシーン(IRC/XDCC/Usenetの配布網)をはじめとする、非公式なソフトウェアの配布である。なぜこの形式で配ったのかを、サトシは書き残していない。
すぐ思いつくのは、サトシがWarezシーンの慣習を持ち込んだ、という見方である。しかし、当時のシーンが公開物を出すときの決まりごとと並べると、重なるのは見た目の一部だけである。
| シーンの決まりごと | サトシのしたこと | 一致 |
|---|---|---|
.rar配布 | bitcoin-0.1.0.rar | ✅ |
| Windows専用初期リリース | v0.1 〜 v0.1.5 | ✅ |
| インストーラーなし(展開して実行) | .rarを展開して実行 | ✅ |
| NFOファイル(ASCII art付き) | なし | ❌ |
グループタグ(-GROUPName) | なし | ❌ |
| SFV検証ファイル | なし | ❌ |
一致する三つは、展開すれば動くソフトをWindowsの一般の利用者に配る人なら、誰でもそうする。一方、シーンの公開物だと分かる目印であるNFO、グループタグ、SFVは、どれもない。仮名や匿名のメールアドレスを使うのも、シーンに限った習慣ではない。サトシが仮名とメールアドレスをどう使い分けたかは匿名性の分析に、どこにどんな名前で登録したかは登録を求めるソフトの時代とサトシを扱った分析にある。
サトシ自身の記録には、配布のほかにもう一度、.rarが出てくる。2009年1月30日、ソフトが落ちる原因を調べていたニコラス・ボームに、サトシはデバッグ版を.rarに詰めてメールで送った。最初のメールが届かず、送り直す前にこう書いている。「デバッグ情報を取り除き、rarのファイルの大きさを7.8MBから1.6MBに減らす」。ここでの.rarは、試しのビルドを一つにまとめてメールに添えるための形式である。インストーラーがなかったのも、最初の版だけだった。2009年10月までにマルッティ・マルミが自動起動とタスクトレイへの最小化を備えたWindowsのインストーラーを作り、v0.2の告知は新しい機能に「Windows用セットアッププログラム」を挙げている。
Windowsを使う一般の人を先に狙ったことは、サトシ自身が2009年8月のメールに書いている。そのメールはWindows中心の開発環境分析で取り上げた。この記録から、サトシがシーンの慣習を持ち込んだとは、私は考えない。重なるのは、Windowsの利用者に.rarで配るという形までである。
2 当たり前の開発の道具が使われていない
Bitcoin v0.1はバージョン管理の履歴を持たないまま配布された。SourceForgeは2008年時点でSVNとCVSのホスティングを両方提供していた。リポジトリが入ったのは2009年8月で、作ったのはマルッティ・マルミだった。
2008年時点で、バージョン管理は単独の開発者にとっても当たり前のことであり、2万行ほどのC++ のコードを仕事で扱う開発者なら、まず例外なく使っていた(v0.1.0は約19,900行で、数え方はコード分析にある)。v0.1にバージョン管理(VCS)がなかったことは、ビットコインより前にサトシがどう開発していたかを知る、有力な手がかりになる。
これに加えて、いくつかの道具も使われていなかった:
- テストスイートなし。v0.1には自動テストがなかった。動作を確かめるには、コードを読み直し、動いているネットワークを見るしかなかった
- 課題管理なし。バグの報告は、決まった形で記録する管理の道具ではなく、BitcoinTalkフォーラムとメールでやり取りされた
- 今のようなビルドシステムもない。v0.1は手でビルドしたバイナリとして配布された。誰がビルドしても同じものができる再現可能ビルドが入るのは、ずっと後のことである
これらの道具がなかったからといって、コードの技術的な質が低かったわけではない(質が高かったことを示す証拠は§4で扱う)。これらが意味するのは、サトシの開発の進め方が、決まった手順を踏まない 略式のものだったということである。チームで一緒に作るための道具ではなく、一人の人の習慣に沿って進められていた。
VCSなし、テストなし、課題管理なし、.rar配布という組み合わせは、一人で開発してきた人か、これらの道具が当たり前でない環境にいた開発者なら、うなずける。同じころ、ソフトウェア工学の仕事や研究の場に身を置いていた人だとすると、話が合わない。
3 実装の選び方と、Windows中心の開発環境
実装の仕方からの証拠は、Windows中心の開発環境分析にまとめてある。そこには、サトシがギャビン・アンドレセンを「Linuxに関しては、技術的に私よりずっと上だ」と評し、自分のほうが下だと認めた発言も記録してある。また、SVNを使い始める前の8か月、サトシが一人で開発していたことも記録してある。この時期は、このページで扱う配り方と重なる。
Warezシーンとの関わりで言えば、最初の版がWindows専用だったこと (v0.1 〜 v0.1.5) は、上の表で一致した項目の一つで、そのページが描くサトシの姿とも合う。これだけを取り出して驚くことではない。
4 セキュリティ・アーキテクチャ: カミンスキー監査
ダン・カミンスキーの2011年の監査は『The New Yorker』誌で報じられた。その評価には批判と称賛の両方があった。
フォーマットと可読性についてカミンスキーは、コードを「密度が高く難解」と評し、「コード全体の書式は、とんでもないものだった。世界で最も偏執的で、最も几帳面なコーダーでなければ、ミスを避けられないだろう」と述べた。
一方、セキュリティの設計についての評価は正反対だった。カミンスキーは攻撃に使えそうな手口を9つ見つけたが、どれを試そうとしても、そこには「Attack Removed」という表示と、その手口を防ぐ行が、もう書かれていた。同じことが何度も起きた。彼はこう結論した:
ダン・カミンスキー(The New Yorkerの記事、2011年10月10日)裏にチームがいるか、この男が天才か、そのどちらかだ。
公開された記録の中では、外の専門家がv0.1のセキュリティを最も厳しく調べたのが、この監査である。結果はどれも同じで、はっきり書いておきたい。腕の立つ攻撃者が試しそうな攻撃を、サトシは、ほとんどすべての種類について先に読み、設計の段階で防いでいた。
5 先回りしたセキュリティと、略式の開発の進め方
§1 〜 §4から浮かび上がるサトシの姿は、二つの点で並外れている。どちらも、一つだけでも珍しい:
| 軸 | サトシのしたこと | どこが珍しいか |
|---|---|---|
| セキュリティ・アーキテクチャ | 驚くほど先を読んでいる — カミンスキーが試みた攻撃は、何度試みても、もう防がれていた | 決まった手順を踏まずに一人で開発する人の多くは、まだ誰にも狙われていない込み入った暗号の攻撃まで、前もって防いだりはしない |
| 実装プロセス | 形式ばらない — バージョン管理なし、テストスイートなし、課題管理なし、.rar配布 | カミンスキーが文書化したレベルのセキュリティ意識を持つほとんどの開発者は、チームで働き、バージョン管理を使い、テストの仕組みを整えたうえで作業する |
二つが組み合わさっていることから、言えることがある: サトシは システムそのものに何が起きうるかについて明らかに深く考えていた。しかし、仕事として、チームでソフトウェアを作るときの決まった進め方の中では、働いていなかった。セキュリティの力と開発の進め方は、別々に身についたものである。これは不可能ではない。決まった手順で開発してこなかった、一人で暗号の仕組みを作る人はいる。ただし、サトシを見分ける特徴として挙げてよいほどには珍しい。
6 限界
- 一つ一つの観察には、それぞれ別の説明がつきうる。バージョン管理を使っていなかったのは、習慣のためではなく、時間に追われていたからかもしれない。ハンガリアン記法は、Windowsの文化から来た手がかりではなく、自分を律するために、わざと選んだ書き方かもしれない。どの観察も、一つだけでは手がかりとして弱い。
- まとめて見ると、一つずつ見るより手がかりとして強くなる。どの選択も互いに矛盾せず、Windows中心の開発、形式ばらない進め方、チームではなく個人の作業、という同じ姿に収まるからである。
- ここから身元の仮説は出てこない。ここで描けるのは、サトシの作業の環境の おおまかな形である。身元を、特定の国、働き方、年齢層、特定の人物に絞り込むものではない。
- 先を読んだセキュリティは、いくつもの経歴と矛盾しない。独学で暗号を学んだ人、所属する機関の外で研究していた暗号の学者、職場の外で活動していたセキュリティ業界のベテランの、どれであっても、カミンスキーが見つけたことと矛盾しない。
カミンスキーの見立ては二つに分かれていた。チームか、天才か。このコードを外から見た人で、どちらかに決めなかったのは、私の知るかぎり彼だけである。そして開発の道具の記録が、彼に代わって、チームという見立てを退けている。インストーラーのない .rar、リポジトリのないコード、テストのないリリースは、一人で働く人が残すものだ。残るのは天才という見立てのほうで、こちらは何の留保も付けずに言える。

















