ビットコインのシステム設計概観 — 全体構造、データフロー、設計文書索引

本文書シリーズについて

これは Bitcoin Institute が執筆したビットコインの技術設計書であり、システムを構成要素に分解してそれらがどのように組み合わさるかを説明する全 12 ページのシリーズである。プロトコル仕様ではなく、規範的な権威を持つものでもない。ホワイトペーパー仕組み図解、および参照実装のソースコードを補完する分析的ガイドである。

基準線。 特に断りのない限り、「現行の Bitcoin Core」は v27 以降のコードベースを指す。サトシ時代の記述は v0.1(2009 年 1 月)を指す。両者の挙動が異なる場合は、両方を記す。

範囲。 本シリーズはビットコインのプロトコルとその参照実装を対象とする。レイヤー 2 システム(Lightning Networkサイドチェーン)やアプリケーション層のソフトウェア(ウォレット、取引所、インデクサー)は接続境界で言及するが、詳細な分解は行わない。

本ページは設計文書シリーズの L0 — システム全体設計 である。システム全体像を示し、各ドメインページへのリンクを提供する。

1. システム構造

以下の図は主要なサブシステムとそれらの間のデータパスを示す。各ボックスはシリーズ内の 1 つ以上のページに対応する。

フルノード

外部アクター

tx 配信

ブロック / tx / addr

ブロック提出

受理

ブロックテンプレート

新ブロック

ユーザー / ウォレット

ピアノード

マイナー

ネットワーク層

(P2P メッセージ処理)

メモリープール

(未承認 tx プール)

トランザクション検証

ブロック検証

合意エンジン

(最多ワークチェーン

選択)

チェーン状態

(UTXO セット + ブロックインデックス)

ストレージ層

(ブロックと undo データのディスク保存)

スクリプト

インタープリター

(署名 + ロック検証)

ポリシーフィルター

(中継 / メモリープールルール)

サブシステム役割設計ページ
ネットワーク層P2P ゴシップ、ピア管理、メッセージ直列化L1 #1 P2P
トランザクション層UTXO モデル、スクリプト、入力/出力、署名L1 #2 トランザクション
ブロック/チェーン層ヘッダー、マークルツリー、チェーン構造、コインベースL1 #3 ブロック/チェーン
合意形成エンジンPoW、難易度調整、フォーク処理、検証L1 #4 合意形成
通貨層発行計画、手数料市場、マイナーのインセンティブL1 #5 通貨
暗号層鍵、署名、ハッシュ、アドレス導出L1 #6 暗号
ストレージ層ブロックファイル、UTXO データベース、チェーン状態L1 #7 ストレージ
ウォレット/インターフェース鍵管理、コイン選択PSBT、RPCL1 #8 ウォレット

2. レイヤーモデル

ビットコインの設計は 5 つの層に積層される。各層はその下の層にのみ依存する。

アプリケーション層

ウォレット、

エクスプローラー、

Lightning、

取引所

トランザクション層

UTXO モデル、

Script、署名

合意層

ブロック検証、

最多ワークチェーン、

難易度調整

ネットワーク層

P2P ゴシップ、ピア発見、

メッセージ中継

ストレージ層

ブロックファイル、

UTXO データベース、

チェーンインデックス

決定する内容主要データ構造
アプリケーションユーザー向けの挙動: アドレス生成、コイン選択、手数料推定ペイメントチャネルHD 鍵ツリー (BIP 32/44/84)、PSBT
トランザクション有効な支払いの形式: 入力、出力、ロックスクリプト、証人データCTxInCTxOutCScript、証人スタック
合意形成どのブロックが受理され、どのチェーン先端が勝つかブロックヘッダー、マークルツリー、難易度ターゲット、nChainWork
ネットワークノードが互いを発見しデータを交換する方法versioninvgetdatablocktx メッセージ
ストレージ検証済みデータのディスク永続化と取得方法LevelDB (UTXO 集合)、blk*.dat / rev*.dat フラットファイル

3. データフロー: トランザクションからブロックチェーンへ

以下のシーケンスは、ユーザーが署名した 1 件のトランザクションが承認の下に埋まるまでの経路を追う。

ブロックチェーンマイナーノード Bノード Aウォレットブロックチェーンマイナーノード Bノード Aウォレットトランザクションが 1 承認以後のブロックごとに 1 承認が加算署名済みトランザクションを配信ポリシー検査(手数料、サイズ、標準スクリプト)検証(UTXO 存在、署名正当、二重支払いなし)メモリープールに受理inv → getdata → tx で中継独立に検証メモリープールに受理メモリープールからブロックテンプレートを構築プルーフオブワークを解く(ナンスを反復)新ブロックを配信ブロック検証(ヘッダー PoW、全 tx、マークルルート)UTXO セット更新、チェーン状態延長ブロック中継検証してチェーン延長

このフローに見える主要な設計特性:

  • 中央のチェックポイントが存在しない。 すべてのノードが独立して検証する — トランザクションが通過しなければならない権威者は存在しない。
  • 二段階の受理。 トランザクションはまずメモリープールに受理され(未承認)、次にブロックに受理される(承認済み)。メモリープールはローカルかつ拘束力を持たない。ブロックへの組み込みだけが合意形成の対象となる。
  • 最大作業量チェーンが勝つ。 2 人のマイナーがほぼ同時にブロックを発見すると、ネットワークは一時的にフォークする。ノードはプルーフ・オブ・ワークの累積量が最大のチェーンに従う。敗れたブロックは失効(孤立)し、そのトランザクションはメモリープールに戻る。

4. コンポーネント相互作用マップ

以下のフローチャートは、ノードがネットワークから新規ブロックを受信した際に、主要なコードレベルのコンポーネントがどのように相互作用するかを示す。

失敗

合格

yes

no

いずれかの tx 無効

全合格

不一致

一致

yes

no

no

yes

ピアから

ブロックメッセージ受信

ブロックヘッダー +

本体をデシリアライズ

ヘッダー検査

有効な PoW?

タイムスタンプ妥当?

難易度正しい?

ブロック拒否、

ピアにペナルティ

既にチェーン内?

重複を無視

全トランザクションを

検証:

• UTXO 検索

• スクリプト実行

• 署名検証

• 金額検査(入力 ≥ 出力)

マークルルートを再計算、

ヘッダーと比較

ブロックを

チェーン状態に接続:

• UTXO 消費(セットから削除)

• 新 UTXO 作成(セットに追加)

• ブロックを

ディスクに書込み

• チェーンインデックス

を更新

現最良チェーンを

延長する?

チェーン先端を更新、

承認済み tx をメモリープールから除去

現先端より

累積ワークが多い?

失効ブランチ

として保存

再編成:

旧先端ブロックを切断、

新ブランチを接続

5. 二時代比較

以下の表は、サトシ時代の v0.1 実装と現行の Bitcoin Core(v27 以降基準)の構造的な比較を簡潔にまとめたものである。各行は§ 7 に記載されたドメインページで詳述される。

側面サトシ v0.1 (2009 年 1 月)現行 Bitcoin Core、v27 以降基準
合意規則の適用単一の CheckBlock / CheckTransaction パス合意形成、ポリシー、検証の各層に分離
チェーン選択最大作業量チェーン(累積難易度で測定)同一規則。nChainWork 追跡で実装を強化
スクリプト系OP_CATOP_MUL 等を含む全オペコード集多数のオペコードを無効化(2010 年)。SegWit 証人バージョニングを追加(2017 年)
トランザクション形式バージョン 1、証人なしSegWit 証人フィールド (BIP 141)、バージョン 2 (BIP 68 / 112 / 113)
ブロックサイズv0.1 に明示的上限なし(2010 年に 1 MB 追加)4 MWU 重量上限 (BIP 141)、実測約 1.5〜2 MB
ネットワークプロトコル7 種のメッセージ型27 種以上。コンパクトブロック (BIP 152)、addr v2 (BIP 155)
ピア発見ハードコードされた IRC チャネル + addr メッセージDNS シード、addrv2、Tor/I2P/CJDNS 対応
ストレージBerkeley DB ですべての状態を管理LevelDB (UTXO 集合)、フラットブロックファイル (blk*.dat)、取消ファイル (rev*.dat)
マイニングCPU のみ、クライアント内蔵マイナーgetblocktemplate (BIP 22/23) 経由で外部化。エコシステムに Stratum v2
ウォレットノードバイナリに統合、ランダム鍵ディスクリプターウォレット (BIP 380 以降)、論理分離(実験的マルチプロセス進行中)
暗号OpenSSL で ECDSA + SHA-256libsecp256k1(独自 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 つの横断的深掘りページ

ビットコイン

設計書シリーズ

L0 全体俯瞰

L0: システム全体設計

L1 ドメイン別

1: P2P ネットワーク

2: トランザクション

3: ブロック・チェーン

4: コンセンサス

5: 貨幣

6: 暗号

7: ストレージ

8: ウォレット / RPC

L2 横断・比較

9: アーキテクチャー進化

10: エコシステム

11: セキュリティーモデル

L1 — ドメインページ

#ページ範囲
1P2P ネットワークピア発見、接続ライフサイクル、メッセージ形式、ゴシップ中継、コンパクトブロック、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 インターフェース

L2 — 横断的深掘り

#ページ範囲
9構造進化v0.1 対 v27 以降の全 8 ドメイン横断比較
10エコシステムLightning Network、サイドチェーン (Liquid)、L1 拡張 (Ordinals)、マイニングプール
11セキュリティモデル信頼の前提、攻撃分類、防御層、経済的安全性、量子脅威