← Protocols
Jito
Lending / Yield·Solana

Jito

01Description

Solana MEV infrastructure (Block Engine + Jito-Solana validator client) and the jitoSOL liquid-staking token. Apps use Jito for priority bundle submission (atomic, all-or-nothing tx groups with tips) and to stake SOL into a high-MEV-yield LST.

02Best for
  • 01atomic Solana transaction bundles (sandwich-protected fills, multi-step DeFi)
  • 02low-latency tx send with tip-based prioritization
  • 03minting / redeeming jitoSOL
  • 04MEV-aware Solana trading bots
  • 05front-running protection for retail swaps
03Install
  • pnpm add jito-ts @solana/web3.js bs58
04Environment variables
VariableScopeDescription
JITO_BLOCK_ENGINE_URLServerJito Block Engine endpoint, e.g. `https://mainnet.block-engine.jito.wtf`. Choose the region nearest your server (ny, frankfurt, amsterdam, tokyo, slc).
JITO_AUTH_KEYPAIRServerOptional Solana keypair (base58) registered with Jito for higher rate limits on `sendBundle`. Server-side only.
05Prompt snippet
For bundles, use `jito-ts`: `const client = searcherClient(blockEngineUrl, jitoKeypair)`. Build a `Bundle` of up to 5 `VersionedTransaction`s, append a tip transfer to one of Jito's tip accounts (fetch via `getTipAccounts()`), and submit with `client.sendBundle(bundle)`. For low-latency single-tx send without bundling, POST to `https://mainnet.block-engine.jito.wtf/api/v1/transactions` (or use `sendTransaction` with the Jito RPC). For jitoSOL, deposit SOL via the SPL stake-pool program at `Jito4APyf642JPZPx3hGc6WWJ8zPKtRbRs4P815Awbb`'s deposit-sol instruction (or, simpler, swap SOL→jitoSOL through Jupiter).
06Gotchas
  • Jito bundles are ATOMIC: if any tx in the bundle reverts, the whole bundle is dropped — and unlike normal txs, dropped bundles don't surface a tx-level error, you must poll `getInflightBundleStatuses` or you'll silently lose the user's intent.
  • Bundle tips go to Jito tip accounts (NOT the validator) and must be a SystemProgram transfer in one of the bundle's txs — too low a tip (< median) means the bundle is rejected. Read live tip floor from `https://bundles.jito.wtf/api/v1/bundles/tip_floor`.
  • Max 5 transactions per bundle and max ~1.4M CU per tx — exceed either and the bundle is rejected.
  • jitoSOL exchange rate is updated once per epoch (~2 days) — same epoch-staleness gotcha as other Solana LSTs. Fast unstake requires the swap path (Jupiter / Sanctum), not the stake-pool withdraw path.
  • Jito-Solana validator client adoption shifts MEV economics — apps depending on bundle inclusion should monitor the percentage of slots run by Jito-enabled validators (current ~70%+, varies).
  • Block Engine is region-specific — pick the endpoint closest to your server; cross-region latency can push you outside the bundle inclusion window.
  • Bundles do NOT receive priority fees the way normal txs do; the tip is the only signal — adding a high `microLamports` priority fee inside a bundled tx is wasted lamports.
07Alternatives