Last week, we shared some research that answered the question:
What is the fastest way to get a transaction into the Ethereum mempool?
The answer led us to develop Eden Speed RPC; a set of public endpoints that exclusively optimize for transaction propagation speed. In other words, it's really fast!
For many Ethereum users, Eden Speed RPC is the fastest RPC available today.
But in the spirit of "don't trust, verify", we are pleased to launch a new open source tool that allows anyone to objectively measure the speed efficiency of any public RPC on Ethereum and some other EVM networks. Introducing the RPC Speed Test.
RPC Speed Test on Desktop
Why Speed is Important on a Network with 12 Second Slots
Each time a block is produced, it is sealed on a scheduled cadence (by default, every one second). As builders share sealed blocks with proposers, it becomes less likely that an existing sealed block will be replaced by a new one.
By using the fastest propagation RPC, a user is freerolling inclusion in the block before it normally would be.
How Does the RPC Speed Test Work?
The user first selects (or even inputs) the RPCs they wish to compare, then customizes the test by selecting the number of loops (transactions per RPC) for the comparison and the delay time between each loop.
Once the test metrics are selected and the user starts the speed test, burner wallets are created and perform self-transfer transactions using each RPC.
As every Ethereum node has a different view of the mempool, geographical location becomes an important factor in transaction propagation speed. For this reason, speed tests on Ethereum mainnet also measure the time a transaction is first seen in the mempool.
With help from our friends at zeromev.org, RPC Speed Test tracks how quickly a transaction was propagated across nodes in multiple geographies.
This was important to include within the architecture as it allows us to understand which RPC has more node connections, and subsequently, offers greater propagation speed.
But as there is always an element of luck with the location of the proposer, the first transaction to be seen in the mempool does not always result in better positioning in a block. However, as block builders generally use the 'received' timestamp as a sorting mechanism, it will yield better block positioning when compared to others over time.
For test results, RPCs are ranked according to how often they command the best block position in each loop.
Example RPC Speed Test Results
Each test setting holds individual importance and collectively improve overall test accuracy:
Selected RPCs: Allowing the user to select exactly which RPCs they wish to test offers flexibility if testing for a specific purpose e.g. geolocated RPCs, privacy RPCs or overall speed.
Loops: As most RPCs utilize multiple intermediary layers of processing during transaction propagation, any random transaction may be delayed for a multitude of reasons. By increasing the number of transactions per RPC for each test, the more likely we are to see the true performance of a specific endpoint.
Delay: Customizing the delay time between transactions offers more versatility in the type of test. For example, as Ethereum slots occur every 12 seconds, using the default 13 second delay setting will offer a more accurate result if testing for propagation speed from transaction creation to reaching a block builder.
However, if you wish to determine how often certain RPCs will still get included in the current block, a 5 second delay may be more suitable.
Burner wallets: As some builders may use transaction nonce as a tie-breaker for transactions arriving at the same time, we decided to create burner wallets for each test, to remove that potential aspect of randomness.
Self-transfer transactions: We used self-transfers as the transaction type as they're not only gas efficient, but are also identical to one another, removing any random chance, such as a transaction being included in a bundle and bypassing the mempool, or even being sandwiched.
Network Availability
The RPC Speed Test is in live beta on Ethereum, Arbitrum and Avalanche mainnets, and Polygon Mumbai testnet. Access the tool here and GitHub here.
If you have any feedback on the settings or functionality, we'd love to hear from you. Write to us on X/Twitter, or jump in our Discord to chat.