ビットコインセキュリティ 入門

ノード (Node) — ビットコインの主権的検証

ノード (Node) はビットコインブロックチェーンの完全なコピーを保存し、すべてのトランザクションとブロックの有効性を独立して検証するソフトウェアです。

· 1分

**ノード (Node)**はビットコインブロックチェーンの完全なコピーを保存し、すべてのトランザクションとブロックの有効性を独立して検証するソフトウェアです。ノードはビットコインネットワークの免疫システムであり、ルールの執行者です。マイナー、取引所、開発者の誰であっても、ノード運営者の合意なしにプロトコルルールを変更することはできません。

ノードの種類

ビットコインネットワークには複数のノードタイプが存在し、それぞれ異なる役割とリソース要件を持ちます。

フルノード (Full Node) はジェネシスブロックから現在まですべてのブロックとトランザクションを独立して検証します。すべてのコンセンサスルールを完全に適用し、他のノードにブロックとトランザクションを中継できます。Bitcoin Coreが代表的なフルノード実装です。

SPVノード (Simplified Payment Verification) はブロックヘッダーのみをダウンロードし、マークル証明を用いて特定のトランザクションがブロックに含まれているかを確認します。モバイルウォレットなどで使用されますが、すべてのコンセンサスルールを検証しないため、フルノードに依存する信頼モデルを持ちます。サトシ・ナカモトのホワイトペーパー第8節で初めて記述されました。

プルーニングノード (Pruned Node) はフルノードと同様にすべてのブロックを検証しますが、検証完了後に古いブロックデータをディスクから削除します。現在のUTXOセットと最近のブロックのみを保持するため、数GBのストレージで運営が可能です。検証レベルはフルノードと同一ですが、過去のブロックを他のノードに提供できないという制限があります。

アーカイバルノード (Archival Node) はすべてのブロックデータを永続的に保管し、他のノードのIBD (Initial Block Download) をサポートします。ネットワークの歴史的記録を保存する役割を担い、現在600GB以上のストレージが必要です。

P2Pゴシッププロトコル

ビットコインノードは中央サーバーなしにP2Pゴシッププロトコルを通じて通信します。新しいトランザクションやブロックが発見されると、まずinvメッセージで接続されたピアに通知し、ピアがgetdataでリクエストすると実際のデータを送信します。このメカニズムにより、情報は数秒以内にネットワーク全体に拡散されます。

各ノードはデフォルトで8つのアウトバウンド接続と最大125のインバウンド接続を維持します。DNSシードを通じて初期ピアを発見し、その後addrメッセージを通じて新しいピアアドレスを学習します。エクリプス攻撃を防ぐため、多様なIP帯域のピアに接続する戦略が適用されています。

IBD (Initial Block Download) プロセス

新しいノードが初めてネットワークに参加する際、IBDプロセスを経ます。ジェネシスブロックから最新ブロックまですべてのブロックをダウンロードし、各ブロックのプルーフ・オブ・ワーク、トランザクション署名、UTXOルールなどすべてのコンセンサスルールを一つ一つ検証します。このプロセスでUTXOセットをゼロから再構築します。

Bitcoin Core 0.10で導入された「headers-first」同期方式は、まずすべてのブロックヘッダーをダウンロードして最長の有効チェーンを確認した後、ブロック本体を並列でダウンロードします。assumevalidオプションは特定のブロック高さまでの署名検証をスキップして同期速度を向上させますが、ブロック構造とUTXOルールは引き続き完全に検証されます。IBDはハードウェアによって数時間から数日かかる場合があります。

UASFとコンセンサス紛争におけるノードの役割

2017年のセグウィット有効化プロセスは、ノードの政治的権限を劇的に示しました。マイナーの多数がセグウィット有効化に消極的であったため、ユーザーたちはBIP148 (User Activated Soft Fork) を通じて「特定の日付以降、セグウィットをサポートしないブロックを拒否する」と宣言しました。これはノード運営者がマイナーにルール変更を強制できることを証明した歴史的な出来事でした。

この事件はビットコインガバナンスの核心原理を確認させました。マイナーはブロックを生成しますが、どのブロックが有効かを判断するのはノードです。経済的多数のノードが特定のルールを執行すれば、そのルールに従わないマイナーはマイニング報酬を失うことになります。これがビットコインにおいて「コードが法」である理由であり、同時にそのコードを実行する主体がノード運営者であることを意味します。

ノード運営の実質的な要件

フルノードを運営するための最低要件は比較的低めです。CPUは一般的なデスクトップレベルで十分であり、メモリは2GB以上、ストレージはプルーニングモードで約10GB、アーカイバルモードで600GB以上が必要です。インターネット帯域幅は初期同期時に数百GBのダウンロードが必要で、以降は1日約200MB程度の消費となります。他のノードにブロックを提供するリスニングノードとして運営する場合、月に数十GBのアップロード帯域幅が追加で必要です。

ラズベリーパイ、古いノートパソコン、クラウドサーバーなど、さまざまな環境でノードを運営できます。Umbrel、RaspiBlitz、Start9などのプロジェクトはワンクリックでのノードインストールをサポートし、技術的参入障壁を下げています。この低い運営コストが世界中に数万のノード分布を可能にし、ビットコインの分散化を実質的に支えています。

「信頼するな、検証せよ」の技術的意味

この原則は単なるスローガンではなく、ビットコインのセキュリティモデルそのものです。自分のノードを運営するということは、21,000,000 BTCの供給上限、ブロック報酬スケジュール、トランザクション署名の有効性、二重支払い防止など、すべてのコンセンサスルールを自ら検証することを意味します。取引所やブロックエクスプローラー、サードパーティAPIに依存すると、相手方が偽の情報を提供できる攻撃表面が生じます。

自己主権的検証は、特に大量のビットコインを保有する者や支払いを受け取る商人にとって不可欠です。相手方が送信したトランザクションが実際に有効なブロックに含まれているかを自分のノードで直接確認すること、これがビットコインが第三者への信頼なしに貨幣システムを実現する根本的な仕組みです。

関連する概念

関連記事