JIT Liquidity Attacks on Uniswap V3: How Just-in-Time MEV Works
Just-in-time (JIT) liquidity is one of the most sophisticated MEV extraction strategies operating on Ethereum today. Unlike brute-force sandwich attacks, JIT liquidity exploits the core design of Uniswap V3's concentrated liquidity model to siphon swap fees from passive liquidity providers. In this guide, we break down exactly how JIT attacks work, why Uniswap V3 made them possible, and how JaredFromSubway combines JIT with sandwich strategies to extract maximum value from every block.
What is JIT Liquidity?
Just-in-time (JIT) liquidity is a MEV extraction technique where a bot detects a large pending swap in the mempool, mints a highly concentrated liquidity position around the current price tick immediately before the swap executes, earns the majority of the swap fees as the trade routes through the bot's liquidity, and then burns the position immediately after the swap completes. All three transactions — mint, victim swap, and burn — execute atomically within the same block, often within the same Flashbots bundle. The JIT provider never holds inventory risk because the position exists for only a single transaction. This strategy is only possible on AMMs that support concentrated liquidity ranges, most notably Uniswap V3.
JIT liquidity represents a fundamentally different approach to MEV compared to sandwich attacks. While a sandwich attack manipulates price to extract value from the trader's slippage, JIT liquidity extracts value from existing liquidity providers by diluting their fee share. The trader actually benefits from JIT liquidity through better execution prices, but passive LPs see their returns decimated. JaredFromSubway was among the first to deploy JIT liquidity at scale on Ethereum, recognizing its potential as a lower-risk complement to traditional sandwich strategies.
Why Uniswap V3's Concentrated Liquidity Enables JIT Attacks
Uniswap V2 distributed liquidity uniformly across the entire price curve from zero to infinity. Every LP received fees proportional to their share of the total pool, regardless of where trading actually occurred. This design was simple but capital-inefficient — most liquidity sat at price ranges that were never touched.
Uniswap V3 introduced concentrated liquidity, allowing LPs to specify a price range for their capital. By concentrating liquidity around the current market price, LPs could earn the same fees with far less capital. A position concentrated in a narrow tick range earns fees as if it were a much larger position spread across the full curve. You can learn more about AMM mechanics in our guide on how AMMs work.
This design, while brilliant for capital efficiency, created a critical vulnerability: fee distribution is proportional to active liquidity at the exact price tick where a swap occurs. If a bot can add an overwhelming amount of liquidity at precisely the right tick for a single transaction, it captures the vast majority of the fees from that swap. Passive LPs who had their capital deployed across wider ranges get almost nothing.
The concentrated liquidity model essentially turned fee distribution into a winner-take-most game, and JIT bots like JaredFromSubway have the speed and infrastructure to win consistently.
Step-by-Step: How a JIT Liquidity Attack Works
Step 1: Mempool Detection
The JIT bot monitors the Ethereum mempool for large pending swaps on Uniswap V3 pools. It decodes each transaction's calldata to identify the pool address, token pair, swap direction, and amount. Only swaps above a profitability threshold (accounting for gas costs and the mint/burn overhead) are targeted.
Step 2: Mint — Add Concentrated Liquidity
The bot mints a new liquidity position concentrated in the tightest possible tick range around the current price. On Uniswap V3, tick spacing determines the minimum range width (for a 0.3% fee tier pool, the minimum tick spacing is 60, corresponding to roughly a 0.6% price range). By concentrating a large amount of capital in this narrow band, the bot's position dominates the active liquidity at the price where the swap will execute.
Step 3: Victim Swap Executes
The target swap executes in the same block, immediately after the mint. As the swap routes through the pool, it pays fees proportional to the liquidity at each tick it crosses. Because the JIT bot's position now represents the overwhelming majority of liquidity at the active tick, the bot captures the corresponding share of the swap fee.
Step 4: Burn — Remove Liquidity and Collect Fees
Immediately after the swap (still in the same block), the bot burns its liquidity position and collects the accrued fees. The bot receives back its original capital plus the earned fees, minus any impermanent loss from the single-tick price movement during the swap. The entire lifecycle — mint, swap, burn — happens atomically, eliminating any exposure to price risk between blocks.
Numerical Example: How JIT Dilutes Passive LPs
Consider a USDC/ETH 0.3% fee tier pool on Uniswap V3. A trader submits a $100,000 swap, which will generate $300 in fees (0.3% of $100,000). The existing passive LPs have $1,000 worth of active liquidity concentrated at the current tick.
A JIT bot detects this pending swap and mints $9,000 of concentrated liquidity at the same tick range. Now the total active liquidity at the current price is $10,000 — of which $9,000 (90%) belongs to the JIT bot and $1,000 (10%) belongs to passive LPs.
- JIT bot earns: 90% of $300 = $270
- Passive LPs earn: 10% of $300 = $30
- Without JIT: Passive LPs would have earned the full $300
The passive LPs lost 90% of their expected fee revenue to the JIT bot. The bot deployed capital for a single block, captured $270 in fees, and withdrew immediately. Research shows that across all JIT activity on Uniswap V3, passive LPs experience an average dilution of approximately 85% on swaps targeted by JIT bots. This means for every dollar in fees a passive LP expected to earn, they receive only 15 cents when a JIT bot is present.
The Trader's Perspective: JIT is Actually Beneficial
Unlike sandwich attacks, JIT liquidity is genuinely good for the trader being targeted. When the JIT bot floods the active tick with concentrated liquidity, it dramatically increases the pool's depth at the current price. A deeper pool means less price impact (slippage) for the same swap size.
Empirical data shows that swaps targeted by JIT bots receive execution prices that are on average 0.139% better than they would have received without the JIT liquidity. On a $100,000 swap, that translates to roughly $139 in savings for the trader. The value extracted by JIT comes entirely at the expense of passive LPs, not the trader.
This creates an interesting dynamic where JIT liquidity is simultaneously beneficial for traders and devastating for passive liquidity providers. It is one reason why the MEV landscape on Uniswap V3 is far more nuanced than simple front-running narratives suggest, and why sophisticated operators like JaredFromSubway see JIT as a sustainable long-term strategy.
JIT + Sandwich Combo: JaredFromSubway's Swap-JIT Technique
While JIT liquidity and sandwich attacks are powerful individually, JaredFromSubway pioneered a combined technique that extracts value from both vectors simultaneously. The Swap-JIT technique layers a sandwich attack on top of a JIT position within a single atomic Flashbots bundle.
Here is how JaredFromSubway executes a Swap-JIT combo:
- Front-run swap: JaredFromSubway buys the target token, pushing the price up slightly
- JIT mint: Mint concentrated liquidity at the new (post-front-run) price tick
- Victim swap executes: The target trade routes through JaredFromSubway's JIT liquidity, paying fees to the bot
- JIT burn: Remove the liquidity position and collect accrued fees
- Back-run swap: Sell the tokens from the front-run at the elevated price
This five-transaction bundle captures sandwich profit from the price manipulation and JIT profit from the fee dilution. The combination is more profitable than either strategy alone because the front-run swap positions the price tick exactly where JaredFromSubway wants to mint, giving precise control over the JIT position's placement.
JaredFromSubway has been running this Swap-JIT combo since mid-2023, and it accounts for a significant portion of the bot's total MEV extraction. The technique requires deep understanding of Uniswap V3's tick math, precise gas estimation for five-transaction bundles, and robust simulation infrastructure to ensure profitability before submission.
JIT Attack Statistics: Scale and Profitability
On-chain analysis reveals the massive scale of JIT liquidity extraction on Ethereum. Over a 20-month observation period, researchers identified 36,671 JIT liquidity attacks on Uniswap V3 pools, generating a combined profit of approximately 7,498 ETH (worth tens of millions of dollars depending on ETH price).
JaredFromSubway has been one of the most prolific JIT operators throughout this period. The bot's infrastructure allows it to evaluate hundreds of pending swaps per block, simulate the full mint-swap-burn cycle in milliseconds, and submit optimized bundles to multiple block builders simultaneously. This industrial-scale operation is what separates JaredFromSubway from smaller MEV operators who may only capture a fraction of available JIT opportunities.
The profitability of individual JIT attacks varies widely. Large swaps in deep pools can yield hundreds of dollars in fees per attack, while smaller swaps may net only a few dollars after gas costs. The key to profitability is volume — executing thousands of JIT attacks per month with consistent positive expected value.
Direct Pool Interaction: Bypassing NonfungiblePositionManager
Most Uniswap V3 liquidity providers interact with the protocol through the NonfungiblePositionManager contract, which wraps each liquidity position as an ERC-721 NFT. This adds convenience (tracking positions, collecting fees via a single interface) but also adds gas overhead from the NFT minting, metadata storage, and additional contract calls.
JIT bots like JaredFromSubway bypass the NonfungiblePositionManager entirely. Instead, they interact directly with the Uniswap V3 pool contract's low-level mint() and burn() functions. This saves significant gas because no NFT is created, no position metadata is stored, and no approval flows are needed. For a strategy where positions exist for a single block, the NFT wrapper is pure overhead.
Direct pool interaction also gives JaredFromSubway finer control over tick range selection, callback handling, and fee collection. The bot's custom smart contracts implement the uniswapV3MintCallback function to supply tokens to the pool during minting, and call collect() immediately after burning to retrieve tokens and fees in a single transaction flow. This optimization reduces gas costs by 30-40% compared to using the NonfungiblePositionManager, directly improving the profitability threshold for JIT attacks.
Run JIT Liquidity Strategies with JaredFromSubway
JaredFromSubway provides automated JIT liquidity extraction with Flashbots integration, direct pool interaction, and Swap-JIT combo execution. Access the same infrastructure used to extract thousands of ETH from Uniswap V3.
Get StartedFrequently Asked Questions
Is JIT liquidity legal?
JIT liquidity operates within the rules of the Uniswap V3 protocol. There is no exploit or vulnerability involved — the bot simply adds and removes liquidity within a single block, which is a permitted action. However, the regulatory landscape around MEV is evolving, and different jurisdictions may develop different interpretations. JIT is generally considered less harmful than sandwich attacks because it benefits traders through better execution prices, even though it reduces returns for passive LPs.
Can Uniswap V3 prevent JIT attacks?
Uniswap V3's core contracts do not include any mechanism to prevent single-block liquidity provision. Some proposals have suggested adding a minimum holding period for liquidity positions or implementing time-weighted fee distribution, but these would fundamentally change the protocol's composability and have not been adopted. Uniswap V4's hook system may allow individual pool deployers to implement anti-JIT logic at the pool level.
How much capital is needed for JIT attacks?
JIT attacks require substantial capital to be effective. The bot needs enough liquidity to dominate the active tick range — typically 5-10x the existing liquidity at the target price. For major pools like USDC/ETH, this can mean deploying hundreds of thousands of dollars per attack. However, since the capital is only deployed for a single block (roughly 12 seconds), the same capital can be recycled across hundreds of attacks per day. JaredFromSubway operates with a multi-million dollar capital base to maximize fee capture across all viable pools.
Does JIT liquidity work on other DEXs besides Uniswap V3?
JIT liquidity is possible on any AMM that supports concentrated liquidity ranges. This includes Uniswap V3 forks like PancakeSwap V3 on BNB Chain, SushiSwap V3, and other protocols that adopted the concentrated liquidity model. However, profitability depends on trading volume, gas costs, and competition from other JIT bots on each chain. Ethereum remains the most profitable chain for JIT due to its high DEX volume and the maturity of its Flashbots infrastructure. JaredFromSubway primarily operates on Ethereum mainnet where the combination of volume and bundle reliability produces the highest risk-adjusted returns.
Start Extracting MEV with Professional Infrastructure
Access JaredFromSubway's battle-tested JIT liquidity, sandwich, and combo strategies. Flashbots integration, real-time mempool monitoring, and optimized gas execution included.
Get Started