2024年8月6日、サイバーセキュリティ研究者 Forensicxs が「Bitcoin Core v0.1: a code walkthrough」を公開した — 2009年1月9日にリリースされたサトシ・ナカモトのオリジナルのビットコインソースコードの包括的な分析である。
範囲: 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 行を構成した。
-
アーキテクチャ: 分析はコードベースを以下のカテゴリに分類した:
- 暗号学: Base58 アドレスエンコーディング、楕円曲線鍵管理(secp256k1)、SHA ハッシュ
- ブロックチェーン: トランザクション検証、ブロック処理、難易度調整(2,016 ブロックごと)、初期報酬 50 BTC が 210,000 ブロックごとに半減するマイニング
- ネットワーキング: P2P 通信、IRC ベースのノード発見、メッセージ処理
- ウォレット: トランザクション管理、コイン選択、残高計算
- スクリプトシステム: プログラマブルなトランザクション条件のためのオペコードを持つ Forth ベースのスタック言語
-
v0.1 にハードコードされた技術パラメーター: コインベース成熟度100 ブロック、難易度調整幅 25%〜400%、目標ブロック間隔 10分。
31,794 行というコード行数は、The New Yorker の 2011年10月の記事でジョシュア・デイヴィスがダン・カミンスキーのコード分析で記述した「roughly 31,000 lines」と一致している。