MEV on Layer 2s: LA Tech Week 2025 - Searcher Strategies & Sequencer Extraction

At LA Tech Week 2025’s “MEV on L2s” workshop, we analyzed a year of data. The conclusion: L2 MEV is fundamentally different from L1, and most searchers are leaving money on the table.

Here’s what’s actually happening with MEV on Optimism, Arbitrum, and Base.

MEV Landscape: L1 vs L2

Ethereum L1 MEV (Mature Market)

Monthly MEV extracted (Sept 2025): ~$50M

  • Sandwich attacks: 45%
  • Arbitrage: 35%
  • Liquidations: 15%
  • Other: 5%

Infrastructure:

  • Flashbots MEV-Boost (90%+ blocks)
  • Builders compete for block space
  • Searchers → Builders → Relays → Validators
  • Sophisticated tooling (MEV-Share, Order Flow Auctions)

L2 MEV (Nascent Market)

Monthly MEV across all L2s (Sept 2025): ~$8M

  • Optimism: $3.2M
  • Arbitrum: $2.8M
  • Base: $1.5M
  • Others: $0.5M

Key differences from L1:

  1. Centralized sequencers: Single entity orders transactions
  2. No MEV-Boost: Sequencer keeps all MEV
  3. Different mempool dynamics: Varies by L2
  4. Lower liquidity: Smaller MEV opportunities

Sequencer Extractable Value (SEV)

On L2s, the sequencer has TOTAL control over transaction ordering.

What Sequencers Can Extract

1. Front-running user swaps

User submits: Swap 1M USDC → ETH on Uniswap
Sequencer sees this, orders:
  1. Sequencer buy ETH (front-run)
  2. User swap (pushes price up)
  3. Sequencer sell ETH (back-run)
Sequencer profit: ~$500-2000

2. JIT (Just-In-Time) liquidity

User large swap coming → 1M USDC to ETH
Sequencer:
  1. Add 10M liquidity to pool (just before swap)
  2. User swap executes (sequencer earns LP fees)
  3. Remove liquidity (immediately after)
Sequencer profit: LP fees without IL risk

3. Liquidation priority

Sequencer monitors lending protocols
When position liquidatable:
  1. Sequencer's liquidation tx goes first
  2. Other searchers' txs fail
Sequencer profit: 100% of liquidation bonuses

Do Sequencers Actually Extract MEV?

Official stance: “We don’t front-run users”

Reality: Unclear. Sequencer operations are opaque.

Evidence from LA Tech Week analysis:

  • Optimism sequencer wallet profits: ~$50K/month from “operating costs”
  • Could be MEV, could be legitimate fees
  • No transparency into ordering logic

Proposed solution: Sequencer commitments (e.g., “first-come-first-serve” ordering)

Searcher Strategies on L2s

Strategy 1: Arbitrage (Cross-DEX)

Opportunity: Price differences between Uniswap, Velodrome, SushiSwap on Optimism.

Example:

Uniswap: 1 ETH = 2500 USDC
Velodrome: 1 ETH = 2505 USDC

Arbitrage:
1. Buy ETH on Uniswap (2500 USDC)
2. Sell ETH on Velodrome (2505 USDC)
Profit: $5 per ETH (minus gas)

L2 advantage: Gas costs 10-50x lower than L1.

Bot code (simplified):

import { ethers } from 'ethers';

const provider = new ethers.JsonRpcProvider('https://mainnet.optimism.io');
const wallet = new ethers.Wallet(PRIVATE_KEY, provider);

async function findArbitrage() {
  const uniswapPrice = await getPrice(UNISWAP_POOL, 'ETH', 'USDC');
  const velodromePrice = await getPrice(VELODROME_POOL, 'ETH', 'USDC');

  if (velodromePrice > uniswapPrice * 1.001) { // 0.1% profit threshold
    const profit = velodromePrice - uniswapPrice;
    console.log(`Arbitrage opportunity: ${profit} USDC per ETH`);

    // Execute atomic arbitrage via flash swap
    await executeArbitrage(uniswapPrice, velodromePrice);
  }
}

async function executeArbitrage(buyPrice: number, sellPrice: number) {
  // Use flash swap to avoid upfront capital
  const flashSwapContract = new ethers.Contract(FLASHSWAP_ADDRESS, ABI, wallet);

  await flashSwapContract.flashSwap(
    UNISWAP_POOL,      // Borrow from
    VELODROME_POOL,    // Repay to
    ethers.parseEther('10'), // Amount
    { gasLimit: 500000 }
  );
}

// Run every block
provider.on('block', findArbitrage);

Profitability (Oct 2025 data):

  • Average profit per trade: $8
  • Trades per day: 15-30
  • Monthly revenue: $3,600-7,200
  • Gas costs: ~$200/month (cheap on L2!)
  • Net profit: $3,400-7,000/month

Strategy 2: Sandwich Attacks (Ethical Debate)

How it works:

1. See user swap: 500K USDC → ETH
2. Front-run: Buy ETH (push price up)
3. User swap executes (worse price)
4. Back-run: Sell ETH (profit from price impact)

L2 challenge: Sequencer may reorder or censor sandwich attempts.

Current state: Some L2s (Base) have private RPCs to combat sandwiching.

Ethical question: Is sandwiching “value extraction” or “theft”?

Strategy 3: Liquidations on Lending Protocols

Target protocols: Aave on Optimism/Arbitrum

Monitoring:

import { ethers } from 'ethers';

const aave = new ethers.Contract(AAVE_POOL, ABI, provider);

async function monitorLiquidations() {
  // Get all user positions
  const users = await getUsersWithDebt();

  for (const user of users) {
    const healthFactor = await aave.getUserAccountData(user);

    // Health factor < 1 = liquidatable
    if (healthFactor.healthFactor < ethers.parseEther('1')) {
      console.log(`Liquidation opportunity: ${user}`);
      await liquidate(user);
    }
  }
}

async function liquidate(user: string) {
  // Liquidate up to 50% of user's debt
  const debtToCover = await calculateMaxLiquidation(user);

  await aave.liquidationCall(
    COLLATERAL_ASSET,  // e.g., ETH
    DEBT_ASSET,        // e.g., USDC
    user,
    debtToCover,
    true,              // Receive aToken
    { gasLimit: 1000000 }
  );
}

setInterval(monitorLiquidations, 12000); // Every block

Profitability:

  • Liquidation bonus: 5-10% of collateral
  • Average liquidation: $50K debt → $2,500-5,000 profit
  • Competition: Lower on L2s (fewer searchers)

Strategy 4: NFT Sniping

Opportunity: Buy underpriced NFTs the moment they’re listed.

L2 NFT markets: Optimism (Quix), Base (Coinbase NFT)

Bot:

const marketplace = new ethers.Contract(MARKETPLACE_ADDRESS, ABI, wallet);

marketplace.on('ItemListed', async (tokenId, price, seller) => {
  const floorPrice = await getFloorPrice(COLLECTION);

  // If listed 20% below floor, instant buy
  if (price < floorPrice * 0.8) {
    await marketplace.buyItem(tokenId, {
      value: price,
      gasLimit: 300000
    });

    console.log(`Sniped NFT ${tokenId} for ${ethers.formatEther(price)} ETH`);
  }
});

Results: Highly competitive, milliseconds matter.

Private Mempools on L2s

The Problem

Public mempool: Everyone sees pending transactions → MEV bots front-run users.

User pain: Swapping on Uniswap? Get sandwiched, lose 0.5-2%.

Solutions Emerging (2025)

1. Flashbots Protect for L2s (Experimental)

Flashbots expanding to Optimism:

  • Users send transactions to Flashbots RPC
  • Transactions forwarded privately to sequencer
  • Sequencer includes without revealing to public mempool

Status: Pilot on Optimism, not production yet.

2. Base Private RPC

Coinbase offers private transaction submission:

  • Submit to https://mainnet.base.org/private
  • Transaction goes directly to sequencer
  • Not visible in public mempool

Adoption: ~15% of Base transactions use private RPC (Oct 2025).

3. Encrypted Mempools (Shutter Network)

How it works:

  1. User encrypts transaction
  2. Sequencer commits to block order
  3. Transactions decrypted after ordering finalized
  4. No front-running possible

Status: Testnet on Gnosis Chain, exploring L2 deployment.

MEV-Boost for L2s? (Future)

Proposal: Allow external builders to compete for L2 block space.

How it would work:

Searchers → Builders → Sequencer
              ↓
        Builder pays sequencer for inclusion rights
              ↓
        MEV shared between searchers, builders, sequencer

Benefits:

  • More efficient MEV extraction
  • Revenue to L2 (not just sequencer)
  • Better UX (less user-extracted value)

Challenges:

  • Sequencer needs to give up control
  • Latency (builders need time to build blocks)
  • Complexity

Timeline: Research phase, 2-3 years to production.

Data: L2 MEV by Category (Sept 2025)

Arbitrage: $4.5M (56%)

  • Cross-DEX: $3.2M
  • Cross-chain: $1.3M

Liquidations: $2.1M (26%)

  • Aave: $1.5M
  • Compound: $0.6M

Sandwich attacks: $1.2M (15%)

  • Optimism: $0.6M
  • Arbitrum: $0.4M
  • Base: $0.2M (private RPC reducing sandwiches)

NFT sniping: $0.2M (3%)

Total: $8M/month (vs $50M on L1)

My Questions for the Community

  1. Should sequencers share MEV revenue with L2 users/token holders?

  2. Private mempools: Should all L2s offer private transaction submission by default?

  3. MEV-Boost for L2s: Would you trade 100ms latency for fairer MEV distribution?

  4. Ethical MEV: Is liquidation hunting “good MEV” and sandwiching “bad MEV”?

L2 MEV is the wild west. It’s less sophisticated than L1, which means more opportunity for builders.

Mike Johnson
Data Engineer & MEV Researcher


Resources:

Mike, excellent MEV analysis! Let me add the practical bot-building perspective. I’ve been running MEV bots on Optimism and Arbitrum for 6 months. Here’s what actually works.

My L2 Arbitrage Bot (Open Source)

Tech stack:

  • TypeScript + ethers.js v6
  • WebSocket for real-time price feeds
  • Flashbots-style bundle submission (when available)

Architecture:

class L2ArbitrageBot {
  private pools: Pool[] = [];
  private ws: WebSocket;

  async start() {
    // Load all DEX pools (Uniswap, Velodrome, Sushi)
    await this.loadPools();

    // Subscribe to new blocks
    this.provider.on('block', async (blockNumber) => {
      await this.scanForArbitrage(blockNumber);
    });

    // Subscribe to pending transactions (if available)
    this.ws.on('pending_tx', this.handlePendingTx);
  }

  async scanForArbitrage(blockNumber: number) {
    for (let i = 0; i < this.pools.length; i++) {
      for (let j = i + 1; j < this.pools.length; j++) {
        const poolA = this.pools[i];
        const poolB = this.pools[j];

        if (poolA.token0 === poolB.token0 && poolA.token1 === poolB.token1) {
          const profit = await this.calculateArbitrage(poolA, poolB);

          if (profit > MIN_PROFIT) {
            await this.executeArbitrage(poolA, poolB, profit);
          }
        }
      }
    }
  }
}

Results (6 months on Optimism):

  • Total profit: $28,400
  • Average per month: $4,733
  • Win rate: 87% (some trades fail due to sequencer reordering)
  • ROI: 320% annualized

Code: https://github.com/crypto-chris/l2-mev-bot

L2-Specific Optimizations

1. Gas profiling: L2 gas is cheap, but still matters.

2. Latency optimization: Use local Optimism/Arbitrum nodes (not public RPCs).

3. Transaction timing: On Base, private RPC reduces front-running risk.

MEV on L2s is accessible to solo developers. You don’t need a huge team like on L1.

Chris Anderson
Full-Stack Crypto Developer

Mike, Chris - great coverage! From a security perspective, centralized sequencers with MEV extraction power are a systemic risk.

The Sequencer MEV Problem

Current state: Optimism, Arbitrum, Base sequencers control ordering.

What could go wrong:

  1. Aggressive MEV extraction: Sequencer sandwiches EVERY trade.

    • Result: L2 becomes unusable for regular users
    • Reputation damage, users leave
  2. Sequencer censorship for MEV:

    • Sequencer sees liquidation opportunity
    • Censors competing searchers’ txs
    • Executes own liquidation
    • Pure profit maximization
  3. MEV-related downtime:

    • Sequencer optimizes for MEV over uptime
    • Result: Chain halts during reorgs or MEV opportunities

Solutions

1. Shared sequencers (Espresso, Astria): Multiple sequencers, no single point of MEV control.

2. Encrypted mempools (Shutter): Can’t extract MEV if you can’t see transactions until after ordering.

3. Based rollups (Taiko): L1 validators order L2 txs, inherit Ethereum’s MEV protections.

Sequencer MEV is the next major L2 challenge after scaling.

Brian Zhang
Protocol Architect @ LayerZero