Un bloc compact est un codage de transport, pas un bloc de consensus réduit. Un Full Node doit retrouver les transactions exactes dans l’ordre et valider le bloc entier.
Un identifiant court possède 48 bits issus de SipHash-2-4 tronqué. Les clés dérivent de l’en-tête et du nonce fourni ; ce n’est pas un identifiant global de transaction. [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation]
Certaines transactions arrivent entières comme éléments préremplis, normalement dont la coinbase. Leurs indices définissent leur position dans le bloc reconstruit. [BIP 152 — Compact Block Relay]
Le destinataire associe les identifiants courts aux transactions connues, par exemple dans son mempool. Un identifiant identique ne prouve pas seul l’identité des transactions. [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation]
Les éléments absents ou ambigus sont demandés par indice avec getblocktxn. La réponse blocktxn fournit les transactions demandées pour terminer la reconstruction. [BIP 152 — Compact Block Relay] [Bitcoin Developer Reference — P2P] [Bitcoin Core v29.0 — net processing]
La reconstruction conserve l’ordre exact et vérifie les engagements du bloc. Un Full Node valide toujours le consensus avant acceptation ; le relais compact n’est pas une exemption. [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation] [Bitcoin Core v29.0 — net processing]
Après négociation sendcmpct, le mode à bande passante élevée peut annoncer directement avec cmpctblock. Après les vérifications préliminaires prévues, il peut précéder la validation complète de l’émetteur sans supprimer celle du destinataire. [BIP 152 — Compact Block Relay] [Bitcoin Core v29.0 — net processing]
Le mode économe utilise d’abord inv ou headers, puis le destinataire demande le bloc compact. Il peut nécessiter davantage d’allers-retours qu’une annonce directe. [BIP 152 — Compact Block Relay] [Bitcoin Developer Reference — P2P]
Les collisions peuvent entraîner des demandes ou un échec de reconstruction suivi du téléchargement complet. Elles ne permettent pas d’accepter un bloc incorrect comme valide par consensus. [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation] [Bitcoin Optech — Compact block relay]
La version 2 dérive les identifiants de wtxid au lieu de txid et transmet les données witness selon BIP 144. La version du protocole compact n’est pas celle du bloc lui-même. [BIP 152 — Compact Block Relay] [BIP 144 — SegWit peer services]
Le gain dépend du recoupement des transactions et du réseau. Un faible recoupement ajoute des demandes ; l’objectif principal est l’économie de transfert, pas une taille garantie ou une latence nulle. [BIP 152 — Compact Block Relay] [Bitcoin Optech — Compact block relay]
Pour une vision complète, lisez aussi Block propagation, Initial block download, Eclipse attack, Virtual byte (vbyte). Cette entrée est également citée par Stale Block, Block propagation, Compact Block Filters, Compact Block Filters.