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

Bitcoin Core v0.1コードウォークスルー — Forensicxsに​よる​31,794行の​分析

濃紺地に、コードエディター風ウィンドウへ虫眼鏡が重なった図、金色とティール色に二分割された横棒グラフ、南京錠・ひし形・ノードの点・ウォレット・積み重ねたバーのアイコンを収めた五枚のカード、丸い目盛りが並び琥珀色の印が一つ付いた横長の年表を配置したインフォグラフィック風のイラスト。

2024年8月6日、サイバーセキュリティ研究者Forensicxsが「Bitcoin Core v0.1: コードウォークスルー」を公開した。同記事は、サトシ・ナカモトが2009年1月8日にリリースした最初のビットコインのソースコードを、全体にわたって分析したものである。

範囲: Forensicxsは、Bitcoin v0.1のコードベースを31,794行(31ファイル)と数えて分析している。C++ で記述され、MIT X11ライセンスの下でリリースされている。

なお、このサイトにあるソースコードの分析では、手元にある元のソースでv0.1のC++のファイルとヘッダーの行数を数え、約19,901行としている。同じ分析は、行数がv0.3.19までに31,909行に増えたとしている。したがって31,794行はForensicxsの記事での数え方によるもので、このサイトで基準にしている値ではない(どのファイルを数えるか、空行・コメント・wxWidgetsのヘッダーを含めるかで値がずれる)。

主な発見

  • コードの内訳: wxWidgetsによるGUIの実装が約18,000行で、単独の部品としては最も大きい。残りの約13,000行は、ブロックチェーンの操作、データベース管理、ネットワーク、スクリプトである。

  • 全体の構成: 分析は、コード全体を次のように分けている。それぞれの部分について、その設計がどうしてそうなったかを扱うこのサイトの記事がある:

  • v0.1にハードコードされた技術パラメーター: マイニングの報酬(コインベース)が使えるようになるまで100ブロック、1回の難易度調整は25%〜400%の範囲に制限、目標のブロック間隔10分。

31,794行という数は、ジョシュア・デイヴィスがThe New Yorkerの2011年10月の記事で、2009年1月にサトシが作ったビットコインについて書いた「3万1000行のコード」とも一致する。同じ記事はダン・カミンスキーによるビットコインのコード分析を取り上げている。カミンスキーは、悪用できる欠陥を見つけられなかった。