Discover more from Wisdom of DeFi by EigenPhi
Benchmarking BNB Chain Mempool Transaction Signal Discovery Latency: A Quick Inspection
Find out the winner competing on Mempool Coverage and Latency.
Today, we release our BNB Chain Mempool Transaction benchmarking research.
We have 2 objectives regarding this research.
Rapid identification of mempool transactions is crucial for DeFi traders to stay ahead of the game and capitalize on potential trading opportunities before their competitors.
This survey gives DeFi traders an authentic and objective evaluation of mempool latency performance across major service providers. It allows traders to make informed decisions and choose the most efficient and reliable platforms for their trading needs.
There are only two major BNB Chain mempool data service providers in the market: bloXroute and QuickNode.
Mempool Coverage: Our test apparatus receives more transactions from bloXroute than QuickNode (exhibited in the visibleTxCount data).
Latency for all mempool transactions: In most cases, EigenPhi receives transactions from bloXroute faster than from QuickNode, shown in the Received Time Difference charts and firstSeen data.
Latency for confirmed transactions: Out of all the pending transactions from bloXroute and Quicknode that eventually landed on the chain, bloXroute receives the transactions first 96.44% of the time.
Quick Node - Scale Tier: the fastest paid tier available
bloXroute - Enterprise Tier: mid-tier with faster plans available
Start time: random
Duration: 25 hours with the data from the first hour omitted.
txHash: transaction hash received by the geth client.
timestamp: transaction timestamp (Unix time in milliseconds) received by the geth client.
Quicknode: websocket (gRPC not available)
bloXroute: websocket (gRPC available - potentially faster than websocket)
Mempool feed methods:
bloXroute: pendingTxs (bloXroute states its newTxs stream is significantly faster than pendingTxs)
All transactions landed on-chain within the test time frame
All mempool transactions from bloXroute within the test time frame
All mempool transactions from Quicknode within the test time frame
receivedTx: for a transaction that was eventually included on-chain, EigenPhi's receiver received this transaction from a provider, regardless of whether it was before or after the corresponding block timestamp. This metric can be used to identify transactions broadcast through the public mempool.
firstSeenTx: for a transaction that was eventually included on-chain, EigenPhi's receiver first received this transaction from a specific provider before the corresponding block timestamp.
firstSeenTxShare: Fraction of firstSeen transactions by a specific provider relative to the union of firstSeen transactions from all providers.
visibleTx: for a transaction that was eventually included on-chain, EigenPhi's receiver received this transaction from at least one tested provider before the corresponding block timestamp.
TotalTxCount: TotalTxCount refers to the total number of transactions included on-chain within the observed time range, whether EigenPhi’s detector has received it.
notLandedTxCount: refers to transactions received by EigenPhi from a tested provider that were not included on-chain within the observation time range.
receivedTxCount%: receivedTxCount/(receivedTxCount + notLandedTxCount)
received time difference: = received ts of bloXroute - received ts of QuickNode (in milliseconds)
When calculating the received time difference, we only include cases where EigenPhi's receiver received the same visibleTx from both providers. And the sample set removes extreme values in the top 5% by absolute value.
The Violin Plots below show the received time difference distribution by hour. Negative values indicate instances where EigenPhi's detector received a visibleTx from bloXroute earlier than from QuickNode, and positive values indicate the reverse.
It should be noted that hours without a violin plot correspond to cases where EigenPhi's receiver was disconnected from the provider. In such cases, we only receive mempool txs from one provider and thus cannot compare time differences.
Without further ado, here are the results.
BNB Mempool Transaction Comparison Result
Time range: UTC 2023-08-19 00:00:00, 2023-08-20 00:00:00
Overlapping Transactions Between Quicknode & bloXroute
Received Time Difference
The violin plot illustrates the time-series distribution of the received time difference. It shows that EigenPhi receives visibleTxs from bloXroute in most cases faster than from QuickNode.
The white dot in the centered thin box is the median point for each hour. The box’s upper end is the third quartile data point, and the lower end is the first quartile. Please refer to the N.B. section for how to read the violin plot.
The median data point across the testing time range shows that bloXroute is faster by around 400 to 500ms. In 25% of cases, which is the lower end of the box, bloXroute is faster by over 500ms, with the lower adjacent value, which is the lower end of the violin, showing it can be as fast as 700ms. In most cases, bloXroute is faster than QuickNode, with the upper adjacent value only slightly larger than 0.
The table below shows the aggregated percentile statistics of two scenarios: bloXroute is faster, and QuickNode is faster. It tells us that:
When bloXroute is faster, the mean time difference is 350 milliseconds. On the other hand, when QuickNode is faster, the mean time difference is 92 milliseconds.
On the 25% percentile, when bloXroute is faster, 75% of the testing time difference equals or exceeds 81 milliseconds. For QuickNote, it’s 27 milliseconds.
Take a look at the 50% percentile. When bloXroute is faster, 50% of the testing time difference equals or exceeds 455 milliseconds. When QuickNode is faster, the mean time difference equals or exceeds 59 milliseconds.
At the level of 75% percentile, when bloXroute is faster, 25% of the testing time difference is equal to or exceeds 527 milliseconds. For QuickNote, it’s 85 milliseconds.
Follow us via these to dig more hidden wisdom of DeFi: