Skip to main content
← Back to blog
JITO Jito Bundles Explained MoonHydra · moonhydra.com/blog
Jito Technical Trading Bot

Jito Bundles Explained — How Solana Bots Use Them

· 9 min read · MoonHydra Research

Jito bundles are how serious bots win race conditions on Solana. Most traders use them daily without knowing it. This post explains what's happening between the moment you tap "buy" in Telegram and the moment your transaction lands on-chain — and why "Jito support" on a bot's feature list usually means less than you think.

What a Jito bundle actually is

A Jito bundle is an atomic group of up to 5 transactions submitted as a single unit to Jito's Block Engine. The Block Engine is a separate piece of infrastructure Jito operates alongside the Solana validator network — it runs at block-engine.jito.wtf and exposes a gRPC + HTTP API that bot operators call instead of (or in addition to) the public RPC.

Three properties make bundles useful:

  • All-or-nothing execution. Either every transaction in the bundle lands in the same block, or none of them land at all. There's no in-between state where 3 of 5 txs succeed and the rest fail.
  • Sequenced ordering. Transactions execute in the exact order you specified, with no other transactions sliced between them. No sandwich can fit between tx 2 and tx 3.
  • Off-mempool routing. Bundles never broadcast to the public mempool that other searchers monitor. The first time anyone outside Jito sees your transactions is when they land on-chain.

That third property is the one most retail explainers skip. It's also the reason bundles are the gold standard for MEV protection on Solana. You can't sandwich what you can't see.

Why bundles exist — the Solana leader-rotation problem

To understand why Jito built bundles, you have to understand what Solana doesn't have: a global mempool with clean ordering guarantees.

Validators rotate as block leaders every 4 slots (~1.6 seconds). Each leader sees transactions routed to it directly. There are roughly as many "mempools" as there are validators, and they don't fully agree on ordering. This creates two problems for traders:

  • You can't guarantee atomic ordering of related txs. If you want to buy a token and immediately set a take-profit, those are two separate transactions. On a regular RPC, anything can happen between them — another buy lands, price moves, your TP gets set at the wrong reference price.
  • You can't hide your intent. Even on a private-ish RPC, searchers with colocated nodes see your tx within ~50ms of submission. Plenty of time to sandwich on a 400ms block.

Jito's Block Engine solves both. It's a centralized auction layer on top of the validator network: operators submit bundles, Jito orders them by tip, packages them into a ShredStream the validator consumes, and the validator commits the whole bundle atomically as part of its block.

Anatomy of a bundle

A real bundle for a memecoin buy looks like this:

  1. Transaction 1: Compute budget instructions (set compute unit limit + priority fee). Boring but required — bundles still pay regular Solana fees on top of the Jito tip.
  2. Transaction 2: The actual swap (Jupiter route, Raydium AMM, or Pump.fun bonding curve buy).
  3. Transaction 3: A tip transaction that sends lamports to one of Jito's tip accounts. This is what pays the Block Engine for inclusion.

Three is the minimum for a useful trading bundle. Sniper bots typically run 4-5: compute budget, buy, immediate sell-back-test (optional anti-honeypot check), TP order placement, tip. The 5-tx cap is hard — you can't fit more.

The tip transaction is a regular SystemProgram transfer to one of eight tip accounts Jito publishes. Bots pick a random one per bundle (to spread load and avoid hot-account contention). The addresses change occasionally — bot operators fetch them from /api/v1/bundles/tip_accounts on the Block Engine rather than hardcoding.

Bundle accept/reject logic at the engine side is brutal:

  • Bundle simulation fails → reject (you never see it on-chain).
  • Tip too low for current auction → reject.
  • Any tx in the bundle is malformed or duplicates an in-flight bundle → reject.
  • All good + tip competitive → accepted, packaged into ShredStream, lands in next leader's block.

Rejection is silent from on-chain's perspective. Your bot needs to listen to the Block Engine's gRPC stream for accepted/rejected notifications, or it'll lose snipes without understanding why. This is one of the places "supports Jito" sloppy implementations fall apart — they fire-and-forget, never confirm, and you discover the snipe failed only when the price has already 3x'd.

How bots compose bundles for memecoin trades

Where bundles actually shine: multi-step trades that need atomic guarantees. A few real compositions used by serious bots:

Pump.fun snipe with slippage guard

  1. Compute budget tx.
  2. Buy the token via Pump.fun bonding curve, with a tight max-amount-out constraint.
  3. Optional: a second swap simulating a sell of 1% of position, to detect honeypots before committing the full position.
  4. Tip tx.

If the honeypot check fails, the buy in step 2 reverts because the bundle is all-or-nothing. You don't end up holding a token you can't sell. This is structurally impossible with regular txs — you'd have to buy first, then check, and by then your SOL is locked. See the sniper feature for how this plays out in production.

Buy + auto take-profit in one shot

  1. Compute budget.
  2. Buy.
  3. Place a TP limit order at +50% (using a limit-order program like Jupiter Limit or Phoenix).
  4. Tip.

Why bundle this? Because between step 2 and step 3, on a regular RPC, the price can move. Your TP gets set off the wrong reference. Bundling guarantees the TP is anchored to the exact block-state right after your buy. See auto-trading for the full flow.

Multi-wallet coordinated entry

For traders splitting capital across multiple wallets (a core MoonHydra workflow), bundling lets all wallets buy in the same block. Without bundles, wallet 2 buys after wallet 1 moved the price, paying a worse entry. With a bundle, all wallets (up to Jito's 5-tx-per-bundle limit) transact atomically, splitting the same price slippage instead of stacking it.

Jito tips — pricing, current floors, when to overpay

The tip is the only knob that materially affects whether your bundle gets included. Solana priority fees still matter for the individual txs inside the bundle (read the priority fee breakdown if you haven't), but Jito's auction is run on the tip alone.

Realistic tip floors as of mid-2026:

  • 1,000 lamports (0.000001 SOL ≈ $0.00015). Bare minimum, often accepted on quiet blocks for low-stakes trades — limit-order TPs, DCA slices, withdrawals. Enough when you're not racing anyone.
  • 5,000–10,000 lamports (~$0.0008–$0.0015). Standard for normal memecoin buys. Comfortable margin over the noise floor.
  • 50,000–250,000 lamports (~$0.0075–$0.04). Pump.fun snipes in the first 10 seconds, contested launches, exits during fast dumps. You're competing with other Jito-using bots.
  • 1,000,000+ lamports (~$0.15+). Only for very high-conviction snipes on tokens you expect to immediately 5x. The tip-to-trade ratio should still stay under 1%.

Jito publishes a tip floor stream — bots that take Jito seriously poll /api/v1/bundles/tip_floor every few seconds and adjust dynamically. The current p50 and p99 tips for the trailing minute are both there. Static tip configurations work fine for low-frequency trading; for snipes, dynamic is meaningfully better.

Important nuance: the tip is paid on every accepted bundle, including ones where your trade was unprofitable. Over 1,000 trades, tips compound into a real number. Don't over-tip on trades that don't need it.

Bundles vs regular transactions — when each wins

Bundles aren't free. The tip is an extra cost, the bundle simulation adds latency at the engine, and complexity goes up. For a lot of trades, a plain priority-fee'd transaction is the better choice.

Bundles win when:

  • You're competing for race conditions (snipes, exits on news).
  • You need atomic guarantees across multiple txs (buy + TP, multi-wallet entry, honeypot check + buy).
  • The trade is large enough that MEV extraction would be material (2-3% sandwich on 10 SOL = much worse than a 50k lamport tip).

Regular txs win when:

  • You're trading a quiet token where nobody's racing you.
  • You're placing a limit order that fires at your price (the trade can wait a block).
  • You're DCA-ing or withdrawing — no time pressure, no MEV surface, no atomicity requirement.

A good bot routes per-trade-type rather than slapping bundles on everything. If a tool says "100% of trades go through Jito," it's either lying or wasting your SOL.

How to verify your bot uses Jito properly

"Supports Jito" on a marketing page is one of the cheapest claims in Solana bot-land. Many tools forward a tip to a Jito tip account but submit the actual swap through a regular RPC — that isn't bundling, it's a confused fee transfer. The trade still hits the public mempool and is just as sandwich-able.

Signals a bot is actually using Jito's Block Engine:

  • Logs reference the bundle UUID returned by POST /api/v1/bundles. If the bot doesn't have a bundle ID to point at, it's not bundling.
  • Bundles confirmed via gRPC subscription to the Block Engine's confirmation stream — not just "tx confirmed" from a regular RPC. The bot should know bundle-accepted vs bundle-dropped, not just tx-landed vs tx-failed.
  • Tip account is one of Jito's published 8. You can grep your bot's source or transaction history for the destination of the tip transfer.
  • On-chain ordering matches bundle ordering. If you snipe with a bundle of 3 txs, on Solscan they should appear in consecutive transaction indexes inside the same block, with no foreign txs sliced between them. If you see another wallet's swap between your buy and your TP-set, your bot isn't actually bundling — it's just sending two regular txs.
  • Tip transactions only appear when bundles are accepted. If your bot tips Jito on every trade regardless of acceptance, it's burning SOL with no benefit on rejected ones.

Red flags:

  • No log line mentioning block-engine.jito.wtf or a bundle UUID anywhere.
  • "Jito tip" charged on every trade but no atomicity in the on-chain result.
  • The bot can't tell you whether a specific snipe was bundled vs sent as a regular tx.
  • "Jito support" toggled in settings but the toggle does nothing visible in the tx flow.

How MoonHydra uses Jito

Honest current state:

  • Snipes route through Jito by default. Pump.fun and Raydium-launch snipes compose 3-4 tx bundles (compute budget + buy + optional honeypot check + tip). Default tip is configurable per snipe via the /snipe menu; operator-level default sits at 5,000 lamports.
  • Manual buys and sells default to regular txs. If you're trading a quiet pool, paying for a bundle is wasted. You can opt into bundling per-trade for high-stakes manual buys.
  • Multi-wallet coordinated entries always bundle. When you fire a buy across multiple wallets at once, the only sane way to land them in the same block is a single bundle (capped by Jito's 5-tx-per-bundle limit). No exception.
  • TP/SL exits during fast moves auto-escalate to bundles. Detection: if a token is moving more than 5% per minute when a TP/SL fires, the exit gets bundled with a higher tip. Calm exits stay on regular txs.

What we don't do: charge Jito tips on every trade regardless of whether bundling helps. We default to "use Jito where it matters, regular RPC where it doesn't" and let you override per-trade. See the security page for how trades are signed and routed, and the MEV deep-dive for how all this fits together.

Closing

Jito bundles aren't magic. They're a centralized auction layer that hides your transactions from the public mempool, guarantees atomic ordering, and bills you a tiny tip per accepted bundle. For race-sensitive trades they're the difference between landing in block 1 and landing in block 4 — which on a memecoin launch is the difference between 1x entry and 5x entry. For everything else, they're overkill.

The pragmatic model: Jito is a tool, not a default setting. Bots that use it everywhere are either expensive or pretending. Bots that never use it lose snipes to bots that do. The interesting work is the routing logic in between — and that's where most "Jito support" claims fall apart.

Open the bot at @moonhydrabot or read the Pump.fun sniper guide for how bundles play out on fresh launches.


Ready to put this into practice?

MoonHydra is a multi-wallet Solana memecoin trading bot on Telegram. 1% per trade. AES-256-GCM encrypted. Non-custodial.

Open MoonHydra