A new block is being relayed from node A to B to C using BIP152 compact block's high-bandwidth mode, which allows relaying a block after only validating its header proof-of-work. When node B receives the compact block, it's missing some transactions, so node B can't reconstruct the block immediately. It has to request the missing transactions from node A.
Before B has received the missing transactions, is it possible for it to announce the block to node C?
My understanding is that this is impossible. The compact block that node B receives only references the missing transactions by their BIP152 shortid
, which is generated from each transaction's txid in a way that is specific to each connection (preventing third parties from increasing collision risk). Since node B is missing the transactions, it also doesn't know their txids, so it is unable to create shortids for them for sending a compact block to node C.
That means, even if node C has the transactions that node B is missing, it will not receive a compact block announcement until node B's transaction request has completed its round trip. (Of course, this assumes that node C only receives new blocks from node B.) That seems to imply that the propagation latency reduction of high-bandwidth mode skipping full validation before relay is largely lost when a block includes transactions that are not widely available.