ブロックチェーンのネットワークとノード

article technology medium #blockchain#p2p-network#full-node#light-node#mempool#gossip-protocol#snap-sync#eclipse-attack#sybil-attack#orphan-block
Created: 2026-06-06 Updated:

P2P トポロジ・peer discovery・gossip 伝播・オーファンブロック、フルノード/軽量ノード/アーカイブ/バリデータの種別、メンプールと手数料市場(RBF)、sync 方式、Eclipse / Sybil のネットワーク脅威を体系化。

ブロックチェーンのネットワークとノード

ブロックチェーンは、世界中に散在するノードが P2P ネットワークを通じて自律的に協調することで動作する。本記事では P2P ネットワークの構造、ノード種別とその役割、メンプール(トランザクションプール)、ブロック同期方式、そしてネットワーク層固有の脅威モデルを体系化する。コンセンサスアルゴリズムの理論は tech-203、ブロックのデータ構造は tech-208、トランザクションモデルは tech-211 を参照。情報カットオフ ~2025-08、confidence: medium 固定(2026-06 時点での外部再検証は未実施)。

P2P ネットワークのトポロジと peer discovery

ブロックチェーンのネットワーク層は非構造化(unstructured)P2P が一般的だ。すべてのノードが等価なピアとして通信し、中央サーバが存在しない。

トポロジ: Bitcoin・Ethereum ともにランダムグラフに近い構造を形成する。各ノードは少数(8〜50 程度)のピアと接続し、ネットワーク全体としては平均数ホップで情報が到達する小世界(small-world)特性を持つ。

Peer discovery: ノードが起動時に最初のピアを見つける方法は複数ある。

  • DNS seed: クライアントソフトに埋め込まれた DNS サーバのドメインを引くと、アクティブなノードの IP アドレス一覧が返る。Bitcoin Core・geth(Ethereum)ともに採用。
  • Bootstrap node / Boot node: Ethereum の devp2p プロトコルではハードコードされた boot node に接続してピアリストを取得する。
  • Persistent peer list: 過去のセッションで接続したピアリストをディスクに保存し、再起動時に再利用する。

Gossip 伝播(flooding): 新たなトランザクション / ブロックを受信したノードは、まだ受け取っていないピアにそれを転送する(inv / getdata プロトコル)。このランダムウォーク型の伝播により情報は数秒〜十数秒で世界中に広まる。Bitcoin は Dandelion++(BIP-156)でトランザクション発信元の IP 難読化を試みている。

ノード種別 — フルノード・ライトノード・アーカイブノード

ブロックチェーンのノードは保持するデータ量と役割によって複数種別に分類される。

フルノード(Full node): ブロックチェーン全履歴を検証しながら同期する標準的なノード。ジェネシスブロック(または信頼できるチェックポイント)から全ブロックをダウンロードして自己検証を行い、独立した正典チェーンの判断を下す。Bitcoin Core・Ethereum の geth/Reth/Besu 等がフルノード実装。2025 年時点で Bitcoin フルノードのデータサイズは約 600 GB 超、Ethereum のフルノード(snap sync 後)は約 1 TB 規模。

ライトノード / SPV ノード: ブロックヘッダのみ(または一部)をダウンロードし、Merkle proof によって自分のトランザクションのみ検証する。モバイルウォレット・ブラウザウォレットが実質的な SPV 動作をする。フルノードほどの安全性はないが、資源消費が少ない。

アーカイブノード(Archive node): フルノードに加え、過去すべてのブロック高での world state のスナップショットを保持する。特定の過去ブロック高での残高照会・eth_call 等の歴史的クエリに対応するためデータサイズが膨大(Ethereum は 2025 年時点で数十 TB)。ブロックエクスプローラや DeFi 分析ツールが利用する。

バリデータ / マイナー: コンセンサスに積極的に参加するノード。PoW ではマイニングハードウェアを持つマイナーノード、PoS ではステークをロックしたバリデータノード。アテステーション署名や新ブロック提案を行うためフルノード相当の検証能力が必要だ。

ブートノード(Boot node): ネットワーク探索(peer discovery)のみを担い、トランザクション / ブロックのフル処理はしない補助ノード。Ethereum の公式 boot node 等が例。

メンプール — Tx プール・手数料市場・RBF

メンプール(Mempool / Memory Pool): ブロックに取り込まれていない未確認トランザクションを一時保管するノード内のバッファだ。トランザクションがネットワークにブロードキャストされると、ノードごとのメンプールに蓄積され、マイナー / バリデータがブロック構築時にここからトランザクションを選択する。

手数料市場: マイナー / バリデータはより高い手数料を提示するトランザクションを優先してブロックに含める。

  • Bitcoin: sat/vB(Satoshi per virtual byte)で計算。ブロックが混雑するほど手数料競争が激化する。
  • Ethereum(EIP-1559): base fee(プロトコルが自動設定・バーン)と priority fee(チップ、ユーザが指定)に分離。base fee は前ブロックの充填率に応じて 12.5% ずつ増減し、手数料の予測可能性が向上した。

RBF(Replace-by-Fee): Bitcoin の BIP-125 で導入。まだ未確認のトランザクションを、同一 UTXO を使いながらより高い手数料のトランザクションに差し替える仕組み。手数料の後出し調整を可能にするが、受信者に対して一定のゼロ確認リスクをもたらす。

メンプールの上限と伝播: 各ノードはメンプールサイズに上限を設け(Bitcoin Core デフォルト 300 MB)、超過時に低手数料の Tx を evict(排除)する。Tx はゴシップで伝播するが、各ノードが独立したメンプールを持つため「メンプール同期」は厳密ではなく、ノードによって保有する Tx が異なる。

同期方式 — Full / Fast / Snap / State / Checkpoint Sync

ノードが初期起動からブロックチェーンの最新状態に追いつく方法(Initial Block Download / IBD)はいくつかある。

Full sync(フル同期): ジェネシスブロックから全ブロックを順に取得・検証する最も安全な方法。Ethereum で数週間を要するため実用上は他の方法が使われる。

Fast sync(Ethereum 旧方式): ブロックヘッダのみダウンロードして PoW / PoS を検証し、特定ブロック高でのフル状態(world state)を受け取ってから最新ブロックに追いつく。Snap sync に置き換えられた。

Snap sync(Ethereum 現行デフォルト): geth 1.10 で導入(2021)。世界状態を「フラットなスナップショット」として圧縮取得することで fast sync より高速・低メモリ。2025 年時点で Ethereum の標準同期方式。

State sync / Warp sync: Polkadot / Substrate や以前の geth が採用した、信頼できるピアから world state のダンプを丸ごと受け取る方式。速いが信頼するピアを適切に選ぶ必要がある。

Checkpoint sync(Ethereum コンセンサス層): Ethereum の Beacon Chain(コンセンサス層)で採用。Weak Subjectivity チェックポイントから同期を始めることで、長距離攻撃のリスクを排除しつつ数分〜数時間で同期を完了できる。Ethereum 財団や各クライアントが定期的にチェックポイントを公表している。

ネットワーク層の脅威 — Eclipse 攻撃・Sybil のネットワーク面

Eclipse 攻撃(日食攻撃): 攻撃者が標的ノードの全接続ピアを乗っ取り、標的を正しいネットワークから切り離す攻撃。標的は偽のブロックチェーンを正しいと信じさせられ、二重支払い攻撃や 51% 攻撃の補助として使われる可能性がある。対策: ランダムなピア選択・接続上限の分散・アウトバウンド接続比率の調整。

Sybil 攻撃のネットワーク面: コンセンサス層の Sybil 耐性(PoW / PoS が担保)とは別に、ネットワーク層でも攻撃者が多数の偽ノードを立ててピア探索を汚染し、正当なノードが自分の偽ノードとしか接続しない状況を作り出せる。peer discovery への署名・PoW や認証要素の追加が対策として用いられる。

オーファンブロック(Stale block): 二つのノードがほぼ同時に有効なブロックを伝播した場合、ネットワークは一時的にフォークする。ノードが受け取った順序によって正典チェーンの選択が分かれ、負けたブロックが「オーファン」となる。ブロックサイズが大きいほど伝播に時間がかかるためオーファン率が上昇し、ネットワーク分散性とのトレードオフが生じる。Bitcoin のオーファン率は通常 0.1% 未満、Ethereum は 12 秒のブロック間隔と GHOST フォーク選択則により以前から低水準を維持している。

Local graph