Featured

Benchmarking Solana Transaction Speeds and Landing Rates

By Eyal Markovich

bloXroute Team
bloXroute
5 min readDec 18, 2024

--

In the past two months, Solana has significantly improved the performance and reliability of landing transactions. Notably, transactions with sufficiently high priority fees are no longer being dropped unless they encounter issues like invalid block hashes or insufficient funds to cover the priority fee. Transactions sent to Jito only may be dropped because of revert protection, which is the expected behaviour.

Building on these network improvements, bloXroute has focused on two areas: enhancing the speed of landing transactions and reducing the likelihood of sandwich attacks without compromising performance. This blog post details our latest benchmarks comparing the bloXroute Trader API’s modes — swQoS and FastBestEffort — with other endpoints. Note to bloXroute users: swQoS is accessed via the “useStakedRPCs” flag.

Benchmark Overview

To evaluate performance, we sent five identical Raydium swap transactions concurrently to each endpoint. Each transaction included a 0.001 SOL tip and a high priority fee (identical for each endpoint). The following endpoints were tested:

  • bloXroute swQoS
  • Temporal / Nozomi
  • NextBlock
  • bloXroute FastBestEffort
  • Jito Direct

For the bloXroute options, swQoS prioritizes quality of service with low-latency execution. FastBestEffort provides robust MEV protection via whitelisted leaders and Jito.

Results Summary

The bloXroute Trader API demonstrated the best performance, landing transactions faster than other configurations. Both bloXroute swQoS and FastBestEffort modes delivered transactions with a P90 latency of under 1.5 seconds and a consistent slot landing efficiency of +3 slots.

Performance Details

bloXroute swQoS

  • P90 Latency: 1.414 seconds
  • Landed Transactions: 100/100
  • Slots at P90: +3
  • Observations: 75% of transactions landed within 1 second, showcasing reliability and speed.
================ CONTEXT ================
LABEL: bloxrouteUseStaked
TARGET: https://ny.solana.dex.blxrbdn.com/api/v1/trade/submit
N TXS: 100
INTERVAL: 5s
TX TYPE: swap
TIP: 1000000
================ RESULT =================
TXS SENT: 100
TXS LANDED: 100
TXS EXPIRED: 0
TXS ERRORED: 0
================ LANDED =================
P10: 0.494s P25: 0.617s P50: 0.775s P75: 0.993s P90: 1.414s
<1s: 75 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
1s-2s: 21 ▉▉▉▉▉▉▉▉▉▉▉
2s-3s: 3 ▉▍
3s-4s: 0
4s-5s: 0
5s-6s: 0
6s-7s: 0
================ SLOTS ==================
P10: +0 P25: +1 P50: +1 P75: +2 P90: +3
same: 10 ▉▉▉▉▉▉▉▉
next: 49 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+2: 28 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▍
+3: 8 ▉▉▉▉▉▉▍
+4: 3 ▉▉
+5: 0

Temporal / Nozomi

  • P90 Latency: 1.875 seconds
  • Landed Transactions: 99/100
  • Slots at P90: +4
  • Observations: Effective for swQoS, but slower compared to bloXroute.
================ CONTEXT ================
LABEL: Temporal
TARGET: http://nozomi-preview-pit.temporal.xyz/?XXX
N TXS: 100
INTERVAL: 5s
TX TYPE: swap
TIP: 1000000
================ RESULT =================
TXS SENT: 100
TXS LANDED: 99
TXS EXPIRED: 1
TXS ERRORED: 0 UT
================ LANDED =================
P10: 0.640s P25: 0.780s P50: 1.017s P75: 1.372s P90: 1.875s
<1s: 48 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
1s-2s: 44 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▍
2s-3s: 6 ▉▉▉▉▉
3s-4s: 1 ▍
4s-5s: 0
5s-6s: 0
================ SLOTS ==================
P10: +1 P25: +1 P50: +2 P75: +3 P90: +4
same: 9 ▉▉▉▉▉▉▉▉▉
next: 29 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+2: 33 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+3: 17 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+4: 6 ▉▉▉▉▉▉
+5: 3 ▉▉▉
+6: 1 ▉
+7: 1 ▉

NextBlock

  • P90 Latency: 3.024 seconds
  • Landed Transactions: 99/100
  • Slots at P90: +6
  • Observations: Notably slower, with significant variance in slot landing.
================ CONTEXT ================
LABEL: nextBlockUseStakedRPCs
TARGET: nextblock
N TXS: 100
INTERVAL: 5s
TX TYPE: swap
TIP: 1000000
================ RESULT =================
TXS SENT: 100
TXS LANDED: 99
TXS EXPIRED: 1
TXS ERRORED: 0
================ LANDED =================
P10: 0.785s P25: 1.002s P50: 1.651s P75: 2.350s P90: 3.024s
<1s: 23 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
1s-2s: 38 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
2s-3s: 27 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
3s-4s: 5 ▉▉▉▉▉
4s-5s: 4 ▉▉▉▉
5s-6s: 0
6s-7s: 0
7s-8s: 0
8s-9s: 0
9s-10s: 0
10s>: 2 ▉▉
================ SLOTS ==================
P10: +1 P25: +2 P50: +3 P75: +5 P90: +6
same: 2 ▉▉
next: 21 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+2: 19 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+3: 16 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+4: 15 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+5: 15 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+6: 3 ▉▉▉
+7: 3 ▉▉▉
+8: 1 ▉
+9: 2 ▉▉
+10>: 2 ▉▉

bloXroute FastBestEffort

  • P90 Latency: 1.490 seconds
  • Landed Transactions: 100/100
  • Slots at P90: +3
  • Observations: Combines MEV protection with outstanding transaction speed, outperforming Jito Direct in latency.
================ CONTEXT ================
LABEL: bloxrouteFastBestEffort
TARGET: https://ny.solana.dex.blxrbdn.com/api/v1/trade/submit
N TXS: 100
INTERVAL: 5s
TX TYPE: swap
TIP: 1000000
================ RESULT =================
TXS SENT: 100
TXS LANDED: 100
TXS EXPIRED: 0
TXS ERRORED: 0
================ LANDED =================
P10: 0.555s P25: 0.635s P50: 0.778s P75: 1.149s P90: 1.490s
<1s: 66 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
1s-2s: 29 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▍
2s-3s: 3 ▉▍
3s-4s: 0
4s-5s: 0
5s-6s: 1 ▍
6s-7s: 0
7s-8s: 0
8s-9s: 0
9s-10s: 0
10s>: 1 ▍
================ SLOTS ==================
P10: +1 P25: +1 P50: +1 P75: +2 P90: +3
same: 4 ▉▉▍
next: 57 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+2: 21 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▍
+3: 9 ▉▉▉▉▉▉
+4: 5 ▉▉▉▍
+5: 1 ▍
+6: 1 ▍
+7: 0
+8: 0
+9: 0
+10>: 2 ▉

Jito Direct

  • P90 Latency: 2.136 seconds
  • Landed Transactions: 98/100
  • Slots at P90: +4
  • Observations: Consistent with MEV protection but lags behind bloXroute FastBestEffort in speed.
================ CONTEXT ================
LABEL: jitoRaydiumSwapDirect
TARGET: jito direct
N TXS: 100
INTERVAL: 5s
TX TYPE: swap
TIP: 1000000
================ RESULT =================
TXS SENT: 100
TXS LANDED: 98
TXS EXPIRED: 2
TXS ERRORED: 0
================ LANDED =================
P10: 0.793s P25: 0.903s P50: 1.125s P75: 1.455s P90: 2.136s
<1s: 37 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
1s-2s: 49 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
2s-3s: 7 ▉▉▉▉▉▍
3s-4s: 2 ▉▍
4s-5s: 2 ▉▍
5s-6s: 0
6s-7s: 0
7s-8s: 0
8s-9s: 0
9s-10s: 1 ▍
10s>: 0
================ SLOTS ==================
P10: +1 P25: +1 P50: +1 P75: +2 P90: +4
same: 5 ▉▉▉▍
next: 55 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+2: 24 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉
+3: 3 ▉▉
+4: 5 ▉▉▉▍
+5: 4 ▉▉▍
+6: 0
+7: 0
+8: 0
+9: 1 ▍
+10>: 1 ▍

Conclusion

bloXroute’s Trader API delivers exceptional performance and reliability, reinforcing its position as the go-to solution for Solana traders seeking speed and MEV protection. The swQoS mode is ideal for low-latency execution, while FastBestEffort offers unparalleled MEV protection without sacrificing speed.

To level up your Solana trading strategy with bloXroute’s Trader API, create a free account today or schedule a demo with our team.

--

--

bloXroute
bloXroute

Published in bloXroute

High-performance networking solutions to win DeFi trading.

bloXroute Team
bloXroute Team

Written by bloXroute Team

Scaling blockchains to thousands of on-chain transactions per second. Today.

Responses (1)