The write-up
Goals:
- Create a unified view of mempool transactions across multiple nodes and determine if a global mempool has a substantially more “global" view of pending transactions in the network.
- Determine if the raw number of transactions are consistently larger over time with a global pool versus a singular pool. We can also see how fast popular transactions, say from a DEX like MagicEden, land in a global mempool vs a singular mempool.
- Questions to consider
- Are some nodes consistently lagging?
- How quickly do transactions propagate globally?
- Does the union pool improve coverage significantly or marginally?
- What percentage of transactions are “orphaned” (seen by one node only)?
Deliverables:
- Provide a mempool proxy RPC that can be a drop-in replacement for a standard node RPC as it pertains to mempool transaction queries.
- Expand upon the getblocktemplate RPC call to return blocks for N number of blocks instead of just 1 using the same or similar algorithm in the existing RPC function in Core.
- Maintain a continuously refreshed database that tracks the following: unified transactions across the nodes, transactions details for each transaction coming from each node, transaction families (if possible) and interconnected node states.
- Determine the optimal algorithm for syncing and maintaining a valid global view. How should this unified view be continuously and efficiently sorted?
- Bonus: some kind of clean dashboard with visualization showing global sync.