120 / 691CMPCT

Kompaktní přenos bloků

Kompaktní přenos bloků podle BIP 152 posílá hlavičku, krátká ID a vybrané celé transakce. Příjemce využije již známé transakce a doplní chybějící data.

Kompaktní blok je přenosové kódování, nikoli menší konsenzuální blok. Full Node musí obnovit přesné transakce ve správném pořadí a ověřit celý blok.

Krátké ID má 48 bitů a vzniká zkrácením SipHash-2-4. Klíče se odvozují z hlavičky a dodaného nonce; nejde o globální identifikátor transakce. [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation]

Některé transakce přicházejí celé jako předvyplněné položky, obvykle včetně coinbase. Jejich indexy určují pozici v rekonstruovaném bloku. [BIP 152 — Compact Block Relay]

Příjemce hledá shody krátkých ID mezi již známými transakcemi, například v mempoolu. Stejné ID není samo důkaz totožnosti transakcí. [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation]

Chybějící či nejednoznačné položky požaduje zprávou getblocktxn podle indexů. Odpověď blocktxn dodá požadované transakce pro dokončení rekonstrukce. [BIP 152 — Compact Block Relay] [Bitcoin Developer Reference — P2P] [Bitcoin Core v29.0 — net processing]

Rekonstrukce zachovává přesné pořadí transakcí a kontroluje závazky bloku. Full Node před přijetím stále provede konsensuální validaci; kompaktní přenos není výjimka z pravidel. [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation] [Bitcoin Core v29.0 — net processing]

Po dohodě zprávou sendcmpct může rychlý režim poslat cmpctblock přímo jako oznámení. Po určených předběžných kontrolách může předběhnout úplnou validaci odesílatele, nikoli zrušit validaci příjemce. [BIP 152 — Compact Block Relay] [Bitcoin Core v29.0 — net processing]

Úsporný režim nejprve používá obvyklé oznámení inv či headers a příjemce kompaktní blok vyžádá. Může tedy potřebovat více komunikačních kol než přímé oznámení. [BIP 152 — Compact Block Relay] [Bitcoin Developer Reference — P2P]

Kolize krátkých ID mohou vyvolat dožádání transakcí nebo selhání rekonstrukce a stažení úplného bloku. Neumožňují přijmout nesprávný blok jako konsensuálně platný. [BIP 152 — Compact Block Relay] [Bitcoin Core — BIP 152 implementation] [Bitcoin Optech — Compact block relay]

Verze 2 odvozuje krátká ID z wtxid místo txid a přenáší transakce včetně witness dat podle BIP 144. Verze kompaktního protokolu není číslem verze samotného bloku. [BIP 152 — Compact Block Relay] [BIP 144 — SegWit peer services]

Přínos závisí na překryvu dostupných transakcí a síťových podmínkách. Slabý překryv přidává dožádání; cílem je hlavně úspora přenosu, nikoli zaručená velikost zprávy nebo nulová latence. [BIP 152 — Compact Block Relay] [Bitcoin Optech — Compact block relay]

Pro nejúplnější obraz čtěte toto heslo společně s Šíření bloků, Počáteční stažení bloků, Eclipse útok, Virtuální bajt (vB). Opačným směrem na něj odkazují také Šíření bloků, Compact Block Filters, Compact Block Filters, Matt Corallo.

DOC · 001BIP 152 — Compact Block RelaySpecifikaceDOC · 002Bitcoin Core — BIP 152 implementationDokumentaceDOC · 003Bitcoin Developer Reference — P2PDokumentaceDOC · 004Bitcoin Core v29.0 — net processingDokumentaceDOC · 005Bitcoin Optech — Compact block relayDokumentaceDOC · 006BIP 144 — SegWit peer servicesSpecifikace
Primární zdroje · Nejde o investiční doporučení