Hi everyone,
Recently I’ve been thinking about ways to improve transaction propagation protocol.
It turns out that straightforward flooding scales poorly in terms of bandwidth required to run a Bitcoin Node. In other words, increase in a number of full nodes in the network or in transaction rate will dramatically increase bandwidth requirements for the infrastructure (more precisely, for nodes which accept incoming connections). I can provide a more detailed summary of the problem on request.
I’ve been running a Bitcoin Node and measurements showed that there is a significant redundancy in messages I’m sending. More precisely, only 5% of inv messages I’ve sent got a get_data back.
So I had a couple of ideas to make transaction propagation protocol more efficient while preserving and potentially expanding current privacy guarantees, the robustness of the network and end-to-end throughput of the network.
One of my ideas is applying filters to links to send only a subset of transaction inv messages. At the time of a handshake, a joining node can set a filter, in accordance to which the second node will advertise transactions. A joining node allocates the space of transactions among its neighbors so that it still has a full blockchain.
A full version of the protocol will include partial redundancy, malicious behavior detection, rotation of filters, ....
What do you think of the idea?
Were there any related prior research/proposals in Bitcoin/blockchains space?