In a Sauce program, swap withAerodrome’s concentrated-liquidity pools (Uniswap V3-style, keyed by tick spacing rather than fee), on Base and, as Aero Lite, on Arc.@sauce/router’s function for the venue (uniswapV2,uniswapV3,uniswapV4,curve,balancerV2, …; Slipstream, PancakeSwap V3 and Algebra pools throughuniswapV3), with a minimum output and, where the pool takes one, a price limit (the@sauce/routerreference; several pools under one limit, the distributed swap).
Notes
- Base’s addresses are from the aerodrome-finance/slipstream README. Three generations are live there, and new gauges deploy from Gauges V3. Base has no Metarouter
- The
aerodromemodule carries Aerodrome’s basic (stable/volatile) pools on Base; this one carries only Slipstream. Velodrome’s Slipstream on Optimism and the Superchain is not in either - Aero publishes no address table for Arc. Each address here is Sourcify-verified from the dromos-labs/metadex-public codebase, and the position manager reports
factory() == CLFactory - No voter or gauges are deployed on Arc yet, so pools there earn swap fees only
- From a Pot program,
@sauce/router’suniswapV3(pool, tokenIn, tokenOut, amountIn, sqrtPriceLimitX96, minOut, recipient)swaps a Slipstream pool: it calls the Pot’s Router, which answers the pool’suniswapV3SwapCallbackfrom the Pot. Find the pool with a CLFactory’sgetPool(tokenA, tokenB, tickSpacing): on Arc the one factory,AerodromeSlipstream.CLFactory.getPool(...); on Base ask each CLFactory (above), such asAerodromeSlipstream.CLFactoryGaugesV3.getPool(...), which Arc does not have. The classic Aerodrome Router and its stable/volatile pools (aerodrome) are Base’s only - The Base roles are
clFactory/nonfungiblePositionManager(initial),clFactoryGaugeCaps/nonfungiblePositionManagerGaugeCapsandclFactoryGaugesV3/nonfungiblePositionManagerGaugesV3.
Its names in a program
On Arc,AerodromeSlipstream is a namespace: its contracts need no import.
Deployments
ABI
Where a line says what an address it returns is, a program that calls the function through its namespace calls that contract’s methods on the result directly:<Namespace>.<Contract>.<function>(...).<method>(...). A token’s methods are the ERC-20
functions, and its writes are SafeERC20.
AeroMetarouterABI
import AeroMetarouterABI from "./protocols/aerodrome-slipstream/AeroMetarouterABI.json"; Speaks for: metarouter.
execute(bytes _commands, bytes[] _inputs, uint256 _deadline) payable
AerodromeSlipstreamPoolABI
import AerodromeSlipstreamPoolABI from "./protocols/aerodrome-slipstream/AerodromeSlipstreamPoolABI.json";
slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, bool unlocked)liquidity() view returns (uint128)fee() view returns (uint24)tickSpacing() view returns (int24)token0() view returns (address): the address is a tokentoken1() view returns (address): the address is a token
SlipstreamCLFactoryABI
import SlipstreamCLFactoryABI from "./protocols/aerodrome-slipstream/SlipstreamCLFactoryABI.json"; Speaks for: clFactory, clFactoryGaugeCaps, clFactoryGaugesV3.
getPool(address tokenA, address tokenB, int24 tickSpacing) view returns (address): the address is aAerodromeSlipstream.PoolallPoolsLength() view returns (uint256)tickSpacingToFee(int24) view returns (uint24)
SlipstreamPositionManagerABI
import SlipstreamPositionManagerABI from "./protocols/aerodrome-slipstream/SlipstreamPositionManagerABI.json"; Speaks for: nonfungiblePositionManager, nonfungiblePositionManagerGaugeCaps, nonfungiblePositionManagerGaugesV3.
factory() view returns (address): the address is aAerodromeSlipstream.CLFactorypositions(uint256 tokenId) view returns (uint96 nonce, address operator, address token0, address token1, int24 tickSpacing, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)
Next steps
- Protocols: the other protocols, by what they do.
- Protocols and tokens: calling a contract by its namespace, or through its ABI.
- Glossary: the words these pages use, in plain terms.
