Компактный блок — транспортное кодирование, не меньший консенсусный блок. Full Node должен восстановить точные транзакции в правильном порядке и проверить весь блок.
Короткий ID имеет 48 бит после усечения SipHash-2-4. Ключи выводятся из заголовка и переданного 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 выводит ID из wtxid вместо txid и передаёт данные witness по BIP 144. Версия компактного протокола не является версией самого блока. [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.