I've coded
mempoolcp https://github.com/dev7ba/mempoolcpWhat is mempoolcp?Mempoolpc is a command-line program to copy the mempool from one bitcoin node to another.
How does it works?Through bitcoin nodes rpc interface, this program uses getrawmempool(verbose), getmempoolentry, getrawtransaction and sendrawtransaction rpc calls to copy the mempool between nodes.
Mempoolpc takes into account the dependencies between transactions and the fact that you can't send a child tx before a parent tx, or a parent tx before a grandparent tx... because otherwise, the sent transactions could be denied by the receiving node.
Mempoolcp is fast, as fast as rust serde is. Also, mempoolcp use multithreading when possible.
It has two modes of operation: a faster one using more memory and a normal one using less. The faster uses getrawmempool_verbose (a heavy call that uses a lot of memory if there are many txs). and then getrawtransaction + sendrawTransaction for each transaction. The normal mode uses getrawmempool (without verbose), then getmempoolentry + getrawtransaction + sendrawTransaction for each transaction.
Configuration is done via the command line or via mempoolcp.conf in a file (to avoid using passwords in the shell). It can actively ask for the user and password if needed.
It has an option to choose network (ports): mainnet, testnet, regtest...
It is compatible with any limitancestorcount value in bitcoin.conf
Currently only support user/password authorization.
Which problems solves?At least 3 questions in bitcoin stack exchange:
https://bitcoin.stackexchange.com/questions/63675/synchronize-mempool-between-3-nodeshttps://bitcoin.stackexchange.com/questions/53638/are-there-any-ways-to-sync-mempool-from-another-nodes-fasterhttps://bitcoin.stackexchange.com/questions/93231/how-to-achieve-fast-mempool-synchronization-at-startup