Solana Transaction Senders Compared
There are three main ways to submit transactions to the Solana network. Each has different tradeoffs in latency, landing rate, and complexity.
Overview
| Method | Latency | Landing rate | Complexity | Cost |
|---|---|---|---|---|
sendTransaction (RPC) | Low | Medium-High | Low | Priority fee |
| Jito Bundles | Low | High (for MEV) | Medium | Priority fee + tip |
| TPU Client (direct) | Lowest | Varies | High | Priority fee |
sendTransaction via RPC
The standard approach. You send a signed transaction to your RPC provider, which forwards it to the current leader validator via QUIC.
import { createSolanaRpc, getBase64EncodedWireTransaction } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
const signature = await rpc.sendTransaction(
getBase64EncodedWireTransaction(signedTransaction),
{
encoding: "base64",
skipPreflight: true,
maxRetries: 0n,
}
).send();
Pros:
- Simple API, well-documented
- Works with any RPC provider
- Staked connections through providers improve landing rate via SWQoS
Cons:
- One extra hop (client → RPC → leader) vs direct TPU
- Landing rate depends heavily on provider’s staked connections
- No ordering guarantees between your transactions
Best for: Most applications, dApps, standard trading bots.
Jito Bundles
Jito allows you to submit bundles of 1-5 transactions that execute atomically and in order. Bundles are auctioned to Jito-connected validators, who include them in exchange for a tip.
Pros:
- Atomic execution: all-or-nothing for multi-transaction strategies
- Ordering guarantees within a bundle
- Front-running protection: bundle contents are private until execution
- High landing rate for winning bids
Cons:
- Extra cost (Jito tip on top of priority fees)
- Only works when Jito-connected validators are leaders (~90%+ of slots)
- Auction latency: bundles are batched and auctioned every 200ms
- More complex API
Best for: MEV strategies, arbitrage, liquidations, any transaction where ordering matters.
TPU Client (direct connection)
Connect directly to the leader validator’s Transaction Processing Unit (TPU) via QUIC, bypassing the RPC layer entirely.
Pros:
- Lowest possible latency (no RPC hop)
- Full control over connection management
- Can send to multiple leaders simultaneously
Cons:
- Complex to implement: must track leader schedule, manage QUIC connections
- No staked connection benefit unless your client identity is staked
- Connection instability: leaders rotate every ~1.6 seconds
- Must handle QUIC protocol directly
Best for: Ultra-low-latency trading, high-frequency bots with dedicated infrastructure.
Decision guide
I am building a dApp or wallet.
Use sendTransaction via a quality RPC provider with staked connections. Add priority fees and implement a retry loop. This covers 95% of use cases.
I am building an arbitrage or liquidation bot.
Use Jito bundles for transactions where ordering or atomicity matters. Use sendTransaction with staked connections for standard transactions.
I need the absolute lowest latency. Build a TPU client. This requires significant infrastructure work and is only worth it for high-frequency strategies where microseconds matter.
I want maximum landing rate without complexity.
Use sendTransaction through multiple RPC providers simultaneously, each with staked connections. Fan out to 2-3 endpoints for redundancy.
FAQ
Can I combine these approaches?
Yes. A common pattern is to send via Jito when ordering matters and via sendTransaction for everything else. Some bots send the same transaction through both paths simultaneously.
Does skipPreflight affect landing rate?
Setting skipPreflight: true saves one round-trip to the RPC node (the simulation step). This reduces latency but means you will not catch errors before sending. For bots that simulate independently, always set it to true.
How much does a Jito tip cost? Tips are auction-based. Minimum tips start at 1,000 lamports. Competitive tips for valuable MEV opportunities can reach millions of lamports. For simple front-running protection without priority, a small tip is sufficient.
Is the TPU client approach stable? The QUIC-based TPU is Solana’s production protocol. However, maintaining direct connections to rotating leaders requires careful engineering. Leader schedule changes every epoch, and connections must be established proactively.
Updated: