Compact Blocksとは何ですか?
Compact Blocksは、Bitcoinノードが新しいブロックを情報を失わずにずっと少ないバイト数で共有する方法です。すべてのトランザクションを丸ごと送る代わりに、ノードは小さな要約を交換し、相手が既に持っているものからブロックを再構築できます。既に楽曲をダウンロードしている友人にプレイリスト名だけを送るようなイメージです。
「Compact Blocksはブロックのサイズを変える。」違います。チェーン上のブロック自体は変わりません。これはネットワーク上でピアがより短時間で、より少ない負荷で同期する方法に関するものです。
Compact Blocksの仕組み
採掘者が有効なブロックを見つけ、あなたのノードが今すぐそれを欲しがっている状況を想像してください。全体を丸ごと送る代わりに、近隣ノードが小さなキットを送り、ローカルで再構築できるようにします。
- ステップ 1: ノードは新しいブロックを、ブロックヘッダーといくつかのヒントを送って通知します。
- ステップ 2: ヘッダーと一緒に、送信側があなたのメンプールに既にあると考えるトランザクションの短いIDを含めます。
- ステップ 3: あなたのノードはそれらの短いIDをメンプールのエントリに照合し、ブロックの大部分をローカルで再構築します。
- ステップ 4: 不足があれば、ノードは不足している特定のトランザクションだけを要求します。
- ステップ 5: 再構築したブロックを検証して処理を続けます。理想的には数百ミリ秒ほど速くなります。
小さなメッセージで同期が速くなり、セキュリティはそのまま。そういう仕組みです。
Compact Blocksが重要な理由
時間と帯域幅はコストなので、ノードは両方を節約したいと考えます。
- 利点: ブロックあたりの送信データが少ないと、帯域幅使用量の削減とネットワーク全体での伝播速度向上につながります。
- 効果: 伝播が速くなると古いブロックが生じる可能性が下がり、実用的に全体の拡張性を高めます。
- 関連性: 自宅やクラウドでノードを運用している場合、混雑時でも同期が安定している理由の一つです。
Bitcoinノードを運用するなら、メンプールを適度に保ち、ピア接続を良好にしてください。重複が多いほどCompact Blocksの効果は高まります。
Compact Blocksの主な特徴
この概念を特徴づける主要な点を簡潔に示します。読みやすく、要点を押さえてください:
- 軽量: 可能な場合はトランザクション全文の代わりに識別子を送ります。
- 高速: メッセージが短くなることでノード間の伝播が速くなります。
- 選択的: 不足しているトランザクションだけを取得し、ブロック全体を再送しません。
- 互換性: 通常のブロック検証やメンプールのロジックと連携します。
バリエーション
異なるプロトコルが同じ目的を追い、それぞれ異なる手法を持ちます。
- Compact: BIP 152を通じてBitcoinの標準で、実用的に広く展開されています。
- Graphene: 集合の照合(set reconciliation)と効率的な符号化を用いる研究提案です。
- Xthin: 一部のフォークで使われた以前の手法で、薄いブロック伝送に焦点を当てていました。
- Erlay: トランザクション中継のオーバーヘッドを削減する提案で、Compact Blocksの考え方と相性が良いです。
Compact Blocksはピア間でデータを共有する方法を変えるものであり、ブロックの構築や検証方法は変わりません。セキュリティチェックは従来どおりです。
例
採掘者が新しいブロックを見つけ、あなたのノードはヘッダーと短いIDを受け取り、メンプールから大部分を埋め、不足している2件のトランザクションを取得してから検証し、リレーします。
豆知識
Compact BlocksはBIP 152としてBitcoinに導入され、2016年に展開されました。混雑したメンプールのピーク時に帯域幅の使用量を大幅に削減しました。
まとめ
一言で言えばこうです。Compact Blocksはブロックの正当性を保ちながら、ダウンロードを近道のように短く感じさせます。
