All articles
Solana·December 19, 2025·6 min read

Solana Private Mempool via Jito Block Engine: Bundle Submission Deep Dive

Unlike Ethereum, Solana has no public mempool, but Jito's block engine creates a private pre-confirmation ordering layer where bundles compete for inclusion during a specific validator's leader slot. This deep dive explains how the searcher API works, how bundles are ordered within a slot, and how to structure multi-transaction atomic sequences for snipe-then-dump patterns.

Solana has no public mempool — transactions are streamed directly to the current leader via the Gulf Stream forwarding protocol, which means the traditional mempool-watching approach that works on Ethereum simply does not exist here. Jito's block engine fills that gap by creating a private pre-confirmation ordering layer: validators running the Jito-Solana client accept bundles from registered searchers and order them within a slot before block production, giving you atomic execution guarantees that raw transaction submission cannot provide. If you are building latency-sensitive strategies on Solana — snipes, liquidations, arbitrage — understanding this infrastructure at the protocol level is not optional.

How the Jito Block Engine Actually Works

Jito operates a block engine that sits between searchers and Jito-enabled validators. When a validator running the Jito-Solana fork enters its leader slot, it opens a window to receive bundles from the block engine. The block engine itself is a centralized relay — Jito Labs runs regional endpoints (currently amsterdam.mainnet.block-engine.jito.wtf, ny.mainnet.block-engine.jito.wtf, tokyo.mainnet.block-engine.jito.wtf, and slc.mainnet.block-engine.jito.wtf) — and you connect to whichever is lowest latency from your colos.

Bundles enter the block engine via gRPC using the SearcherService protobuf definition. Authentication is a keypair-signed challenge; your searcher identity keypair must be pre-registered with Jito. The engine runs a continuous simulation against the current bank state, filtering out bundles that would fail, then forwards the surviving set to the leader. Approximately 50-60% of Solana stake weight runs Jito clients at any given time, so bundle submission is not universal — you need to track the leader schedule and only bother submitting bundles when the upcoming leader is a Jito validator.

Bundle Anatomy and Ordering Mechanics

A bundle is an ordered list of 1 to 5 transactions that execute atomically: either all succeed or all fail, no partial fills. This is the critical property that separates bundles from sequentially submitted transactions. Within a single slot the block engine orders competing bundles by their tip per compute unit, paid to a Jito tip account (there are eight canonical tip accounts; you pick one and include a transfer instruction in one of your bundle transactions).

Tip dynamics are competitive. During high-activity periods — new token launches, large liquidation cascades — the effective floor tip spikes significantly. Monitoring the getTipAccounts endpoint and watching on-chain tip transaction history gives you a real-time sense of the current competitive landscape. A useful heuristic: if your expected profit on a single snipe is under 0.05 SOL, you are frequently bidding into a range where tip optimization consumes most of the margin.

Transaction ordering within your bundle is deterministic and index-based: transaction at index 0 executes first, index 4 last. This matters enormously for snipe-then-dump patterns, where your setup transaction (e.g., compute budget instruction, token account initialization) must precede your buy, which must precede any secondary hedge or dump leg. Get the ordering wrong and the bundle either fails simulation or reverts on-chain.

Structuring a Snipe-then-Dump Bundle

For a standard new-token snipe pattern, a two-transaction bundle usually covers the full sequence:

  • Transaction 0: Set compute budget (SetComputeUnitLimit, SetComputeUnitPrice) and execute the buy swap through the target AMM (Raydium CLMM, Pump.fun bonding curve, Meteora DLMM — pick the right program for the launch venue). Include the Jito tip transfer here or in a separate instruction.
  • Transaction 1: The conditional sell or hedge leg, if your strategy requires immediate partial exit. More commonly this is left for a follow-up submission once price action is observed.

For arbitrage across two AMMs the bundle stays atomic: swap on pool A in transaction 0, swap on pool B in transaction 1. If pool B does not have the liquidity you simulated against, both transactions revert and you pay no swap fees — only the compute cost of simulation, which Jito absorbs on their end.

One practical detail that trips up implementors: all accounts in a bundle's transaction set that are writable must not conflict across transactions in a way that violates Solana's parallel execution model within a single slot. The block engine serializes bundle transactions sequentially, but the validator's transaction scheduling still enforces account locking rules. Structure your bundles so downstream transactions explicitly depend on upstream account state changes — this is usually natural if you are passing intermediate token balances, but it becomes subtle when sharing fee payer accounts across transactions.

Latency Budget and Infrastructure Requirements

Round-trip latency to the block engine endpoint is the dominant variable in competitive bundle submission. The leader slot is 400ms; the block engine typically closes bundle acceptance roughly 100-150ms before slot start to allow forwarding time. That leaves you a narrow window from the moment you detect your trigger signal to the moment your bundle must be in the engine's queue.

Practical latency targets from production deployments:

  • Signal detection to bundle construction: under 20ms (Rust-native transaction building, no serialization overhead from interpreted languages)
  • Bundle construction to gRPC send: under 5ms
  • gRPC send to block engine acknowledgment: under 30ms for same-region colos

Running your searcher process in the same cloud region as the Jito endpoint you are targeting is not optional at this latency budget. AWS us-east-1 for the NY endpoint, AWS ap-northeast-1 for Tokyo. Cross-region submission at 80-100ms RTT puts you behind every co-located competitor.

Failure Modes and What They Cost You

Failed bundles are silent — the block engine does not surface detailed failure reasons by default. You get a SendBundleResponse with a bundle ID, and then you either see your transactions on-chain or you do not. Implement your own simulation loop using simulateBundle (a Jito-specific RPC method, not available on standard Solana RPC nodes) before submission to catch obvious failures. Common failure modes include: stale blockhash (use getLatestBlockhash with processed commitment immediately before bundle construction), account state drift between your simulation snapshot and actual chain state, and tip account selection errors.

The cost of a failed bundle is the opportunity cost of the slot you missed plus the latency of retrying in the next available Jito leader slot. For high-frequency snipe strategies this can be the difference between a profitable operation and a breakeven grind. Tracking your bundle landing rate — bundles confirmed on-chain divided by bundles sent — is the single most important operational metric for a Jito-based searcher. Anything below 40% in non-congested conditions indicates a structural problem in your construction pipeline, not market competition.

Serious searcher infrastructure on Solana requires deep integration with our trading bot services across the full stack, from signal generation through execution and position management.


If you are building or scaling a Jito bundle searcher and want a team that has production deployments across Solana, Hyperliquid, and Polymarket, reach out via our contact page — we scope and ship these systems end to end.

Need a bot like this built?

We design, build and run trading bots on Solana, Hyperliquid and Polymarket.

Start a project
#Solana#Jito#MEV#bundle submission#block engine#trading bots#mempool#searcher API