I've seen this option discussed, but I don't have a clear understanding of what is going on. Since this setting appears to reduce node bandwidth by as much as 88%, I assume it somehow communicates to other nodes that this traffic is unwelcome, but I don't understand the mechanism. Can someone elaborate?
This allows the bitcoin node to operate similar to a SPV client. These nodes advertise their capabilities to other nodes as they peer with them. A node running in blocksonly mode will indicate that it does not want to receive inv messages from any other peers. Nodes can supply a bloom filter if they are interested in messages for specific address(es), this is also using the same mechanisms that were designed for SPV nodes.
I've just read the complete description of the messages in Bitcoin Core, and it seems to me that there is no special announcement the node performs to tell its peers that it doesn't wish to be informed about transactions. I thought that it might announce its disinterest in transactions in the
version message, but the service announcements don't seem to include such a flag.
Therefore, it seems to me that the node would just not follow up on
inv messages announcing transactions, but only on
inv messages announcing blocks. Especially, it doesn't supply any data on receiving a
mempool message, but it does seem to serve