Base's principal ve(3,3) DEX. Combines Solidly-style stable+volatile pools with Slipstream concentrated-liquidity (Uniswap-v3-fork) pools, all directed by veAERO gauge votes that route emissions to whichever pools voters bribe.
- 01Base-native token swaps
- 02stable/volatile AMM LPing
- 03Slipstream concentrated liquidity
- 04veAERO voting and bribe markets
- 05protocol liquidity bootstrapping on Base
- pnpm add viem wagmi
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_BASE_RPC_URL | Client | Base mainnet RPC URL used to read Aerodrome pool/router state. |
Use Aerodrome for swaps and LPing on Base. For swaps, call the Aerodrome `Router` at `0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43` using `getAmountsOut(amountIn, routes[])` to quote and `swapExactTokensForTokens(amountIn, amountOutMin, routes[], to, deadline)` to execute, where each `Route` is `{from, to, stable, factory}` (set `stable: true` for sAMM correlated pairs, `false` for vAMM volatile). For concentrated liquidity, use Slipstream's `CLPool` (Uniswap v3 fork) and the Slipstream `NonfungiblePositionManager`. Locking AERO mints a `veAERO` NFT used to vote on `Voter` gauges weekly to direct emissions; bribes are claimed from each pool's `BribeVotingReward`.
- ⚑Picking the wrong `stable` flag in a Route silently routes through the wrong pool — sAMM and vAMM with the same token pair are distinct pools with very different curves and slippage.
- ⚑veAERO voting is epoch-based (Thursday 00:00 UTC); votes cast in an epoch only count for that epoch's emissions, and rebases/bribes must be claimed before voting again or they roll forward.
- ⚑Slipstream uses a tick-based concentrated-liquidity model, so out-of-range positions earn no fees and require active management — IL on volatile pairs can dwarf emissions if you don't rebalance.
- ⚑Gauge wars: emissions follow votes, so a pool with no votes earns zero AERO regardless of TVL; protocols often pay bribes (via `Voter.notifyRewardAmount` on the BribeVotingReward) to attract veAERO voters.
- ⚑Some pools have no gauge (killed or never added) — check `Voter.gauges(pool)` is non-zero before assuming emissions, otherwise LP earns only swap fees.
- ⚑The token is `AERO` at `0x940181a94A35A4569E4529A3CDfB74e38FD98631` on Base only — there is no canonical Ethereum AERO; bridged variants are not the same asset.