
本文書シリーズについて
これはBitcoin Instituteが執筆したビットコインの技術設計書であり、システムを構成要素に分解してそれらがどのように組み合わさるかを説明する全12ページのシリーズである。プロトコル仕様ではなく、規範的な権威を持つものでもない。ホワイトペーパー、初心者向けガイド、および参照実装のソースコードを補完する分析的ガイドである。
基準線。特に断りのない限り、「現行のBitcoin Core」はv27以降のコードベースを指す。サトシ時代の記述はv0.1(2009年1月)を指す。両者の挙動が異なる場合は、両方を記す。
範囲。本シリーズはビットコインのプロトコルとその参照実装を対象とする。レイヤー2システム(Lightning Network、サイドチェーン)やアプリケーション層のソフトウェア(ウォレット、取引所、インデクサー)は接続境界で言及するが、詳細な分解は行わない。
本ページは設計文書シリーズのL0 — システム全体設計である。システム全体像を示し、各ドメインページへのリンクを提供する。
1. システム構造
以下の図は主要なサブシステムとそれらの間のデータパスを示す。各ボックスはシリーズ内の1つ以上のページに対応する。
| サブシステム | 役割 | 設計ページ |
|---|---|---|
| ネットワーク層 | P2Pゴシップ、ピア管理、メッセージ直列化 | L1 #1 P2P |
| トランザクション層 | UTXOモデル、スクリプト、入力/出力、署名 | L1 #2トランザクション |
| ブロック/チェーン層 | ヘッダー、マークルツリー、チェーン構造、コインベース | L1 #3ブロック/チェーン |
| 合意形成エンジン | PoW、難易度調整、フォーク処理、検証 | L1 #4合意形成 |
| 貨幣層 | 発行計画、手数料市場、マイナーのインセンティブ | L1 #5貨幣 |
| 暗号層 | 鍵、署名、ハッシュ、アドレス導出 | L1 #6暗号 |
| ストレージ層 | ブロックファイル、UTXOデータベース、チェーン状態 | L1 #7ストレージ |
| ウォレット/インターフェース | 鍵管理、コイン選択、PSBT、RPC | L1 #8ウォレット |
2. レイヤーモデル
ビットコインの設計は5つの層に積層される。各層はその下の層にのみ依存する。
| 層 | 決定する内容 | 主要データ構造 |
|---|---|---|
| アプリケーション | ユーザー向けの挙動: アドレス生成、コイン選択、手数料推定、ペイメントチャネル | HD鍵ツリー (BIP 32/44/84)、PSBT |
| トランザクション | 有効な支払いの形式: 入力、出力、ロックスクリプト、証人データ | CTxIn、CTxOut、CScript、証人スタック |
| 合意形成 | どのブロックが受理され、どのチェーン先端が勝つか | ブロックヘッダー、マークルツリー、難易度ターゲット、nChainWork |
| ネットワーク | ノードが互いを発見しデータを交換する方法 | version、inv、getdata、block、txメッセージ |
| ストレージ | 検証済みデータのディスク永続化と取得方法 | LevelDB (UTXO集合)、blk*.dat / rev*.datフラットファイル |
3. データフロー: トランザクションからブロックチェーンへ
以下のシーケンスは、ユーザーが署名した1件のトランザクションが承認の下に埋まるまでの経路を追う。
このフローに見える主要な設計特性:
- 中央のチェックポイントが存在しない。すべてのノードが独立して検証する。すなわち、トランザクションが通過しなければならない権威者は存在しない。
- 二段階の受理。トランザクションはまずメモリープールに受理され(未承認)、次にブロックに受理される(承認済み)。メモリープールはローカルかつ拘束力を持たない。ブロックへの組み込みだけが合意形成の対象となる。
- 最大作業量チェーンが勝つ。2人のマイナーがほぼ同時にブロックを発見すると、ネットワークは一時的にフォークする。ノードはプルーフ・オブ・ワークの累積量が最大のチェーンに従う。敗れたブロックは失効(孤立)し、そのトランザクションはメモリープールに戻る。
4. コンポーネント相互作用マップ
以下のフローチャートは、ノードがネットワークから新規ブロックを受信した際に、主要なコードレベルのコンポーネントがどのように相互作用するかを示す。
5. 二時代比較
以下の表は、サトシ時代のv0.1実装と現行のBitcoin Core(v27以降基準)の構造的な比較を簡潔にまとめたものである。各行は§ 7に記載されたドメインページで詳述される。
| 側面 | サトシv0.1 (2009年1月) | 現行Bitcoin Core、v27以降基準 |
|---|---|---|
| 合意規則の適用 | 単一のCheckBlock / CheckTransactionパス | 合意形成、ポリシー、検証の各層に分離 |
| チェーン選択 | 最長チェーン(ブロック高の比較、nBestHeight) | 最大作業量チェーン(nChainWork)、v0.3.3以降 |
| スクリプト系 | OP_CAT、OP_MUL等を含む全オペコード集 | 多数のオペコードを無効化(2010年)。SegWit証人バージョニングを追加(2017年) |
| トランザクション形式 | バージョン1、証人なし | SegWit証人フィールド (BIP 141)、バージョン2 (BIP 68 / 112 / 113) |
| ブロックサイズ | v0.1に明示的上限なし(2010年に1 MB追加) | 4 MWU重量上限 (BIP 141) |
| ネットワークプロトコル | 12種のメッセージ型 | 27種以上。コンパクトブロック (BIP 152)、addr v2 (BIP 155) |
| ピア発見 | ハードコードされたIRCチャネル + addrメッセージ | DNSシード、addrv2、Tor/I2P/CJDNS対応 |
| ストレージ | 索引とウォレットはBDB; 生ブロックはフラットファイル (blk*.dat) | LevelDB (UTXO集合)、フラットブロックファイル (blk*.dat)、取消ファイル (rev*.dat) |
| マイニング | CPUのみ、クライアント内蔵マイナー | getblocktemplate (BIP 22/23) 経由で外部化。エコシステムにStratum v2 |
| ウォレット | ノードバイナリに統合、ランダム鍵 | ディスクリプターウォレット (BIP 380以降)、論理分離(実験的マルチプロセス進行中) |
| 暗号 | ECDSAはOpenSSL; 採掘SHA-256は同梱Crypto++ | libsecp256k1(独自ECDSA/シュノア)、内蔵SHA-256 |
6. 読者ガイド
読者の属性によって、シリーズを読み進める最適な順序が異なる。
| 読者層 | 推奨読書順序 |
|---|---|
| ビットコイン初心者 | まず初心者向けガイドを読み、ここに戻り、L1 #2(トランザクション)→ #3(ブロック)→ #4(合意形成)の順 |
| 開発者 | 本概観 → L1 #2(トランザクション)→ #3(ブロック)→ #4(合意形成)→ #1(P2P)→ #7(ストレージ) |
| 研究者/経済学者 | 本概観 → L1 #5(貨幣)→ #4(合意形成)→ #2(トランザクション)→ L2 #9(構造進化) |
| セキュリティ監査者 | L1 #2(トランザクション)→ #4(合意形成)→ #1(P2P)→ #6(暗号)→ L2 #11(セキュリティモデル) |
7. 設計文書索引
本シリーズは3つのレベルで構成される:
- L0 — 本ページ(システム概観)
- L1 — 8つのドメインページ。各ページが1つのサブシステムを端から端まで解説
- L2 — 3つの横断的深掘りページ
L1 — ドメインページ
| # | ページ | 範囲 |
|---|---|---|
| 1 | P2Pネットワーク | ピア発見、接続ライフサイクル、メッセージ形式、ゴシップ中継、コンパクトブロック、BIP 324トランスポート |
| 2 | トランザクション | UTXOライフサイクル、トランザクション構造、スクリプト評価、署名 (ECDSA/シュノア)、SegWit、Taproot |
| 3 | ブロック/チェーン | ヘッダーフィールド、マークルツリー、チェーン構造、最大作業量チェーン選択、ブロック重量、コインベース |
| 4 | 合意形成 | PoWの仕組み、難易度調整、ブロック検証、フォーク種別、有効化メカニズム、ファイナリティモデル |
| 5 | 貨幣 | 2,100万枚上限の算術、半減期スケジュール、手数料市場、マイナーのインセンティブ、手数料のみの将来 |
| 6 | 暗号 | secp256k1、ECDSA/シュノア、SHA-256d、アドレス導出、HDウォレット、量子耐性 |
| 7 | ストレージ | ブロックファイル、UTXOデータベース (LevelDB)、チェーン状態、メモリープール、剪定、assumeUTXO |
| 8 | ウォレット / RPC | ディスクリプターウォレット、コイン選択、PSBT、手数料推定、RPC/REST/ZMQインターフェース |






















