A brand new block is being relayed from node A to B to C utilizing BIP152 compact block’s high-bandwidth mode, which permits relaying a block after solely validating its header proof-of-work. When node B receives the compact block, it is lacking some transactions, so node B cannot reconstruct the block instantly. It has to request the lacking transactions from node A.
Earlier than B has acquired the lacking transactions, is it doable for it to announce the block to node C?
My understanding is that that is not possible. The compact block that node B receives solely references the lacking transactions by their BIP152 shortid
, which is generated from every transaction’s txid in a approach that’s particular to every connection (stopping third events from rising collision danger). Since node B is lacking the transactions, it additionally does not know their txids, so it’s unable to create shortids for them for sending a compact block to node C.
Which means, even when node C has the transactions that node B is lacking, it is not going to obtain a compact block announcement till node B‘s transaction request has accomplished its spherical journey. (In fact, this assumes that node C solely receives new blocks from node B.) That appears to suggest that the propagation latency discount of high-bandwidth mode skipping full validation earlier than relay is basically misplaced when a block contains transactions that aren’t extensively accessible.