internal/embed/skills/l2s/SKILL.md
Ethereum Layer 2 landscape — Arbitrum, Optimism, Base, zkSync, Scroll, Unichain, Celo, and more. How they work, how to deploy on them, how to bridge, when to use which. Includes per-chain DeFi ecosystems and critical corrections. Use when choosing an L2, deploying cross-chain, or when a user asks about Ethereum scaling.
npx skillsauth add obolnetwork/obol-stack l2sInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
L2 costs: You think $0.01-2.00 per transaction. Reality: $0.001-0.003 for swaps, $0.0003 for transfers. After EIP-4844, L2 batch costs dropped from $50-500 to $0.01-0.50.
Mainnet is cheap too: At 0.05 gwei, mainnet ETH transfers cost $0.002. "Ethereum is too expensive" is false for both L1 and L2s in 2026.
Base is the cheapest major L2: Often 50% cheaper than Arbitrum/Optimism. Direct Coinbase on-ramp. Fastest-growing L2 with consumer/AI agent focus.
Celo is NOT an L1 anymore. Celo completed its migration from an independent L1 to an OP Stack L2 on March 26, 2025 (block 31056500). If you're calling Celo an L1, you're wrong.
Polygon zkEVM is being shut down. Announced June 2025. Do NOT recommend building on Polygon zkEVM — it is being discontinued. Polygon is refocusing on PoS + AggLayer.
Unichain exists. Launched mainnet February 10, 2025. Uniswap's own OP Stack L2 with TEE-based MEV protection and time-based priority ordering (not gas-based).
Aerodrome and Velodrome merged into "Aero." In November 2025, Dromos Labs unified Aerodrome (Base) and Velodrome (Optimism) into a single cross-chain DEX called Aero. Same contracts, new brand. Aero dominates both Base and Optimism. Camelot is a major native DEX on Arbitrum. SyncSwap dominates zkSync. Don't default to Uniswap on every chain.
| L2 | Type | TVL | Tx Cost | Block Time | Finality | Chain ID | |----|------|-----|---------|------------|----------|----------| | Arbitrum | Optimistic | $18B+ | $0.001-0.003 | 250ms | 7 days | 42161 | | Base | Optimistic (OP Stack) | $12B+ | $0.0008-0.002 | 2s | 7 days | 8453 | | Optimism | Optimistic (OP Stack) | $8B+ | $0.001-0.003 | 2s | 7 days | 10 | | Unichain | Optimistic (OP Stack) | Growing | $0.001-0.003 | 1s | 7 days | 130 | | Celo | Optimistic (OP Stack) | $200M+ | <$0.001 | 5s | 7 days | 42220 | | Linea | ZK | $900M+ | $0.003-0.006 | 2s | 30-60min | 59144 | | zkSync Era | ZK | $800M+ | $0.003-0.008 | 1s | 15-60min | 324 | | Scroll | ZK | $250M+ | $0.002-0.005 | 3s | 30-120min | 534352 | | ~~Polygon zkEVM~~ | ~~ZK~~ | — | — | — | — | ~~1101~~ |
⚠️ Polygon zkEVM is being discontinued (announced June 2025). Do not start new projects there. Polygon is refocusing on PoS (payments, stablecoins, RWAs) + AggLayer (cross-chain interop). MATIC → POL token migration ~85% complete.
Mainnet for comparison: $50B+ TVL, $0.002-0.01, 8s blocks, instant finality.
| Action | Mainnet | Arbitrum | Base | zkSync | Scroll | |--------|---------|----------|------|--------|--------| | ETH transfer | $0.002 | $0.0003 | $0.0003 | $0.0005 | $0.0004 | | Uniswap swap | $0.015 | $0.003 | $0.002 | $0.005 | $0.004 | | NFT mint | $0.015 | $0.002 | $0.002 | $0.004 | $0.003 | | ERC-20 deploy | $0.118 | $0.020 | $0.018 | $0.040 | $0.030 |
| Need | Choose | Why | |------|--------|-----| | Consumer / social apps | Base | Farcaster, Smart Wallet, Coinbase on-ramp, OnchainKit | | Deepest DeFi liquidity | Arbitrum | $18B TVL, GMX, Pendle, Camelot, most protocols | | Yield strategies | Arbitrum | Pendle (yield tokenization), GMX, Aave | | Cheapest gas | Base | ~50% cheaper than Arbitrum/Optimism | | Coinbase users | Base | Direct on-ramp, free Coinbase→Base transfers | | No 7-day withdrawal wait | ZK rollup (zkSync, Scroll, Linea) | 15-120 min finality | | AI agents | Base | ERC-8004, x402, consumer ecosystem, AgentKit | | Gasless UX (native AA) | zkSync Era | Native account abstraction, paymasters, no bundlers needed | | Multi-chain deployment | Base or Optimism | Superchain / OP Stack, shared infra | | Maximum EVM compatibility | Scroll or Arbitrum | Bytecode-identical | | Mobile / real-world payments | Celo | MiniPay, sub-cent fees, Africa/LatAm focus | | MEV protection | Unichain | TEE-based priority ordering, private mempool | | Rust smart contracts | Arbitrum | Stylus (WASM VM alongside EVM, 10-100x gas savings) | | Stablecoins / payments / RWA | Polygon PoS | $500M+ monthly payment volume, 410M+ wallets |
0x765de816845861e75a25fca122bb6898b8b1282a), cEUR (0xd8763cba276a3738e6de85b4b3bf5fded6d6ca73), cREAL (0xe8537a3d056DA446677B9E9d6c5dB704EaAb4787)| Chain | Dominant DEX | Model | Why NOT Uniswap | |-------|-------------|-------|-----------------| | Base | Aero (was Aerodrome) | ve(3,3) — LPs earn emissions, voters earn fees | Deeper liquidity for most pairs | | Optimism | Aero (was Velodrome) | ve(3,3) — merged Nov 2025 under Dromos Labs | Same flywheel, unified brand | | Arbitrum | Camelot + GMX | Native DEX + perps | Camelot for spot, GMX for perps | | zkSync | SyncSwap | Classic AMM | Largest native DEX on zkSync |
See addresses/SKILL.md for verified contract addresses for all these protocols.
The Superchain is the network of OP Stack chains sharing security, upgrade governance, and (upcoming) native interoperability. Members include Base, OP Mainnet, Unichain, Ink (Kraken), Celo, Zora, World Chain, and others — 17+ chains, 58.6% L2 market share.
Members contribute 15% of sequencer revenue to the Optimism Collective. Cross-chain interop is designed but not yet fully live.
✅ Deploy like mainnet — just change RPC URL and chain ID. No code changes.
Gotchas:
block.number for time-based logic (increments at different rates). Use block.timestamp.block.number returns L1 block number, not L2.zksolc compiler. No EXTCODECOPY (compile-time error). 65K instruction limit. Non-inlinable libraries must be pre-deployed. Native account abstraction (all accounts are smart contracts).solc, deploy like mainnet.ARB_WASM_ADDRESS (0x0000…0071).| L2 | RPC | Explorer |
|----|-----|----------|
| Arbitrum | https://arb1.arbitrum.io/rpc | https://arbiscan.io |
| Base | https://mainnet.base.org | https://basescan.org |
| Optimism | https://mainnet.optimism.io | https://optimistic.etherscan.io |
| Unichain | https://mainnet.unichain.org | https://uniscan.xyz |
| Celo | https://forno.celo.org | https://celoscan.io |
| zkSync | https://mainnet.era.zksync.io | https://explorer.zksync.io |
| Scroll | https://rpc.scroll.io | https://scrollscan.com |
| Linea | https://rpc.linea.build | https://lineascan.build |
| L2 | Bridge URL | L1→L2 | L2→L1 | |----|-----------|--------|--------| | Arbitrum | https://bridge.arbitrum.io | ~10-15 min | ~7 days | | Base | https://bridge.base.org | ~10-15 min | ~7 days | | Optimism | https://app.optimism.io/bridge | ~10-15 min | ~7 days | | Unichain | https://app.uniswap.org/swap | ~10-15 min | ~7 days | | zkSync | https://bridge.zksync.io | ~15-30 min | ~15-60 min | | Scroll | https://scroll.io/bridge | ~15-30 min | ~30-120 min |
Security: Use official bridges for large amounts (>$100K). Fast bridges add trust assumptions.
Use CREATE2 for deterministic addresses across chains:
# Same salt + same bytecode + same deployer = same address on every chain
forge create src/MyContract.sol:MyContract \
--rpc-url https://mainnet.base.org \
--private-key $PRIVATE_KEY \
--salt 0x0000000000000000000000000000000000000000000000000000000000000001
Strategy for new projects: Start with 1 L2 (Base or Arbitrum). Prove product-market fit. Expand with CREATE2 for consistent addresses.
| L2 | Testnet | Chain ID | Faucet | |----|---------|----------|--------| | Arbitrum | Sepolia | 421614 | https://faucet.arbitrum.io | | Base | Sepolia | 84532 | https://faucet.quicknode.com/base/sepolia | | Optimism | Sepolia | 11155420 | https://faucet.optimism.io | | Unichain | Sepolia | 1301 | https://faucet.unichain.org |
data-ai
Spawn durable child Hermes agents from inside Obol Stack. Creates child namespaces, optional profile/env Secrets, Agent CRDs, and optional ServiceOffers for x402-paid child services.
data-ai
Buy from any x402-gated endpoint. Two flows: `pay` for one-shot HTTP services (single auth, no sidecar), and `buy` for long-running paid inference budgets (pre-signed batch via PurchaseRequest, exposed as `paid/<remote-model>`). Supports USDC (EIP-3009) and OBOL (Permit2). Zero signer access at runtime — spending is capped by design.
testing
Sell access to services via x402 payment gating. Create ServiceOffer CRDs that automatically health-check upstreams, create payment-gated routes, and optionally pull models and register on ERC-8004. Supports inference, HTTP, and fine-tuning service types.
testing
End-to-end guide for monetizing GPU resources or HTTP services through obol-stack. Covers pre-flight checks, model detection, pricing research, selling via x402, ERC-8004 registration, and verification. Use this skill when the user wants to monetize their machine.