In the "How are expected missing transactions chosen to immediately forward?" section of https://bitcoincore.org/en/2016/06/07/compact-blocks-faq/ it states that "To reduce the number of things that need to be reviewed in the initial implementation, only the coinbase transaction will be pre-emptively sent."

I found https://github.com/bitcoin/bitcoin/blob/master/src/blockencodings.cpp#L23 which still lists pre-filling more than the coinbase as a TODO. I was wondering if that was in fact correct or whether it was an erroneous TODO. If not, is anyone working on that functionality or is there a reason it was never implemented?


Adding more advanced prediction of what transactions are useful to prefill was probably intended as a TODO when Compact Blocks were implemented, but to the best of my knowledge, nobody has worked on it since.

It is worth pointing out that Compact Blocks in practice (and in non-adverserial situations) works extremely well. On my own long-running node, as of right now, out of the last 1000 blocks (~1 week), 944 were reconstructed without asking for any additional transactions. Out of the 56 where this wasn't the case, only 5 had more than 3 transactions missing.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.