
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行を構成した。
-
アーキテクチャ: 分析はコードベースを以下のカテゴリに分類した。いずれも本アーカイブが同じ主題を扱う設計文書と対応している:
- 暗号学: Base58アドレスエンコーディング、楕円曲線鍵管理(secp256k1)、SHAハッシュ。詳細は暗号学設計の記事
- ブロックチェーン: トランザクション検証、ブロック処理、難易度調整(2,016ブロックごと)については合意形成設計の記事、初期報酬50 BTCが210,000ブロックごとに半減するマイニングについては通貨設計の記事を参照
- ネットワーキング: P2P通信、IRCベースのノード発見、メッセージ処理。詳細はP2Pネットワーク設計の記事
- ウォレット: トランザクション管理、コイン選択、残高計算。詳細はウォレット設計の記事
- スクリプトシステム: プログラマブルなトランザクション条件のためのオペコードを持つForthベースのスタック言語。詳細はトランザクション設計の記事
-
v0.1にハードコードされた技術パラメーター: コインベース成熟度100ブロック、難易度調整幅25%〜400%、目標ブロック間隔10分。
31,794行というコード行数は、The New Yorkerの2011年10月の記事でジョシュア・デイヴィスが、サトシが2009年1月に生み出したビットコインの規模として挙げた「3万1000行のコード」と整合している。同じ記事はダン・カミンスキーによるビットコインのコード分析を取り上げており、カミンスキーは悪用可能な欠陥を見つけられなかった。














