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.
Share this project:

Updates