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

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

暗い背景の技術図で、光る六角形のハブがユーザー・ピアノード・マイナーの各アイコンとつながっている。その脇には5層の帯状パネルが積み重なり、連結したブロックのアイコン列と、下部には円形ノードが並ぶ6段階のパイプラインが描かれている。

本文書シリーズについて

これは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つの層に積層される。各層はその下の層にのみ依存する。

層決定する内容主要データ構造
アプリケーションユーザー向けの挙動: アドレス生成、コイン選択、手数料推定、ペイメントチャネルHD鍵ツリー (BIP 32/44/84)、PSBT
トランザクション有効な支払いの形式: 入力、出力、ロックスクリプト、証人データCTxIn、CTxOut、CScript、証人スタック
合意形成どのブロックが受理され、どのチェーン先端が勝つかブロックヘッダー、マークルツリー、難易度ターゲット、nChainWork
ネットワークノードが互いを発見しデータを交換する方法version、inv、getdata、block、txメッセージ
ストレージ検証済みデータのディスク永続化と取得方法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パス合意形成、ポリシー、検証の各層に分離
チェーン選択最長チェーン(ブロック高の比較、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つの横断的深掘りページ

ビットコイン

設計書シリーズ

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セキュリティモデル信頼の前提、攻撃分類、防御層、経済的安全性、量子脅威

参照元の外部ソース

https://bitcoin.org/bitcoin.pdf