<p>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.</p>
<p>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.</p>

CC BY-SA 4.0
2021-05-31T03:30:56.557Z
2021-05-31T03:30:56.557Z
Pieter Wuille
<p>In the &quot;How are expected missing transactions chosen to immediately forward?&quot; section of <a href="https://bitcoincore.org/en/2016/06/07/compact-blocks-faq/" rel="nofollow noreferrer">https://bitcoincore.org/en/2016/06/07/compact-blocks-faq/</a> it states that &quot;To reduce the number of things that need to be reviewed in the initial implementation, only the coinbase transaction will be pre-emptively sent.&quot;</p>
<p>I found <a href="https://github.com/bitcoin/bitcoin/blob/master/src/blockencodings.cpp#L23" rel="nofollow noreferrer">https://github.com/bitcoin/bitcoin/blob/master/src/blockencodings.cpp#L23</a> 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?</p>

<bitcoin-core><network><p2p><transaction-propagation><compact-blocks>
In Bitcoin Core, are compact blocks pre-filled with more than just the coinbase?
Jake Rawsthorne
# In Bitcoin Core, are compact blocks pre-filled with more than just the coinbase?

(Asked by: username_0 on 2021-05-25)

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?

**Tags:** bitcoin-core, network, p2p, transaction-propagation, compact-blocks


---

## 1 answers

### Answer by username_1 on 2021-05-31. Score: 3 | Accepted answer

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.


---

