<p>Full nodes have absolutely no use for the <code>mempool</code> message, it is vestigial from bip35 and has had a history of causing privacy leaks due to its poor implementation. It has previously been used to bypass transaction trickling, or just cause an enormous amount of waste data transfer. Modern versions of Bitcoin Core do not ship with <code>bip37</code> enabled, which means they will not respond to the message without configuration changes.</p>
<p>It would not be a good solution for attempting to estimate fees regardless, as you would cause potentially gigabytes of transfer of transactions you have absolutely no way of verifying. Estimating fees, by and large, needs to be delegated and there are many APIs for doing so.</p>

CC BY-SA 4.0
2021-08-22T16:24:18.377Z
The mempool message was actually introduced in BIP35, which predates the BIP37 Bloom filtering. However, later it was changed to only be permitted when combined with BIP37 filtering, to prevent the worst problems with it. Even later, BIP37 was made optional and defaulting to off, so in general, no, most modern Bitcoin Core nodes will not respond to it anymore, unless specifically configured to allow it.
Pieter Wuille
CC BY-SA 4.0
2021-08-22T16:26:46.433Z
@PieterWuille Corrected, my memory of where it came from was wrong. Thank you.
Claris
CC BY-SA 4.0
2021-08-25T11:02:53.427Z
I believe there are several ways to configure bitcoind to support `mempool` requests: (1) the "-peerbloomfilters" config option - this allows BIP37 bloom filters for all peers, and by extension also adds support for `mempool` requests. (2) the "-whitebind=bloomfilter" setting to allow BIP37 bloom filters and `mempool` requests on all inbound connections to a specified local IP address. (3) the "-whitelist=bloomfilter" setting to allow BIP37 bloom filters and `mempool` requests for a specified remote IP address (4) the "-whitebind=mempool" or "-whitelist=mempool" for just `mempool` permissions
jnewbery
CC BY-SA 4.0
2021-08-22T16:20:19.380Z
2021-08-22T16:24:46.380Z
2021-08-22T16:24:46.380Z
Claris
<p>According to <a href="https://github.com/bitcoin/bitcoin/blob/master/src/net_processing.cpp#L3775-L3801" rel="noreferrer">https://github.com/bitcoin/bitcoin/blob/master/src/net_processing.cpp#L3775-L3801</a>, it seems like the mempool message is only responded to in certain cases. Can someone help understand how this works and why a full node would not always respond to this message? Is it being deprecated?</p>
<p>I'm looking for ways to estimate fees through the p2p layer, and getting the mempool content seems like the best option so far, if nodes reliably reply to the message.</p>

<mempool><p2p>
Is the `mempool` message reliable?
cloudhead
# Is the `mempool` message reliable?

(Asked by: username_0 on 2021-08-22)

According to <https://github.com/bitcoin/bitcoin/blob/master/src/net_processing.cpp#L3775-L3801>, it seems like the mempool message is only responded to in certain cases. Can someone help understand how this works and why a full node would not always respond to this message? Is it being deprecated?

I'm looking for ways to estimate fees through the p2p layer, and getting the mempool content seems like the best option so far, if nodes reliably reply to the message.

**Tags:** mempool, p2p


---

## 1 answers

### Answer by username_1 on 2021-08-22. Score: 7 | Accepted answer

Full nodes have absolutely no use for the `mempool` message, it is vestigial from bip35 and has had a history of causing privacy leaks due to its poor implementation. It has previously been used to bypass transaction trickling, or just cause an enormous amount of waste data transfer. Modern versions of Bitcoin Core do not ship with `bip37` enabled, which means they will not respond to the message without configuration changes.

It would not be a good solution for attempting to estimate fees regardless, as you would cause potentially gigabytes of transfer of transactions you have absolutely no way of verifying. Estimating fees, by and large, needs to be delegated and there are many APIs for doing so.

> **Comments:**
> **username_2**: The mempool message was actually introduced in BIP35, which predates the BIP37 Bloom filtering. However, later it was changed to only be permitted when combined with BIP37 filtering, to prevent the worst problems with it. Even later, BIP37 was made optional and defaulting to off, so in general, no, most modern Bitcoin Core nodes will not respond to it anymore, unless specifically configured to allow it.  
> **username_1**: @username_2 Corrected, my memory of where it came from was wrong. Thank you.  
> **username_3**: I believe there are several ways to configure bitcoind to support `mempool` requests: (1) the "-peerbloomfilters" config option - this allows BIP37 bloom filters for all peers, and by extension also adds support for `mempool` requests. (2) the "-whitebind=bloomfilter" setting to allow BIP37 bloom filters and `mempool` requests on all inbound connections to a specified local IP address. (3) the "-whitelist=bloomfilter" setting to allow BIP37 bloom filters and `mempool` requests for a specified remote IP address (4) the "-whitebind=mempool" or "-whitelist=mempool" for just `mempool` permissions  

---

