コンパクトブロックは転送形式であり、小さい合意ブロックではない。Full Nodeは正確な取引を正しい順序で復元し、全体を検証する必要がある。
短いIDはSipHash-2-4を切り詰めた48ビットである。鍵はヘッダーと付属nonceから導き、取引の全世界共通の識別子ではない。 [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation]
一部の取引は完全な形で事前に含まれ、通常はcoinbaseも含む。インデックスが復元ブロック内の位置を定める。 [BIP 152 — Compact Block Relay]
受信者は短いIDをメモリプールなどの既知取引と照合する。同じ短いIDだけでは取引の同一性を証明できない。 [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation]
不足や曖昧な項目はインデックスを指定してgetblocktxnで要求する。blocktxn応答が必要な取引を渡し、再構築を完成させる。 [BIP 152 — Compact Block Relay] [Bitcoin Developer Reference — P2P] [Bitcoin Core v29.0 — net processing]
再構築は正確な順序を保ち、ブロックの暗号学的な確約を検査する。Full Nodeは受理前に合意検証を行い、コンパクト中継も例外ではない。 [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation] [Bitcoin Core v29.0 — net processing]
sendcmpct交渉後、高帯域モードはcmpctblockで直接通知できる。指定の予備検査後は送信者の完全検証より先に送れるが、受信者の検証は省けない。 [BIP 152 — Compact Block Relay] [Bitcoin Core v29.0 — net processing]
省帯域モードは先に通常のinvやheadersで通知し、受信者がコンパクトブロックを要求する。直接通知より通信往復が多くなる場合がある。 [BIP 152 — Compact Block Relay] [Bitcoin Developer Reference — P2P]
短いIDの衝突は取引要求や再構築失敗後の完全ブロック取得を起こし得る。誤ったブロックを合意上有効として受け入れる理由にはならない。 [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation] [Bitcoin Optech — Compact block relay]
バージョン2はtxidの代わりにwtxidから短いIDを導き、BIP 144のwitnessデータを送る。コンパクトプロトコルの版はブロック自身の版番号ではない。 [BIP 152 — Compact Block Relay] [BIP 144 — SegWit peer services]
利点は既知取引の重複と通信条件に依存する。重複が少なければ追加要求が必要で、主目的は転送量の節約であり、固定サイズや遅延ゼロの保証ではない。 [BIP 152 — Compact Block Relay] [Bitcoin Optech — Compact block relay]
理解を深めるには、この項目とあわせて次もお読みください Block propagation, Initial block download, Eclipse attack, Virtual byte (vbyte). 次の項目からも参照されています Stale Block, Block propagation, Compact Block Filters, Compact Block Filters.