Shadow Arena #017: Velodrome/Aerodrome Slipstream
You built Uniswap V3 from scratch: the concentrated-liquidity pool, the swap loop, the tick bitmap, the fee-growth accumulators. Velodrome Slipstream (Optimism) and its Aerodrome twin (Base) are that exact v3-core, forked line-for-line, with one thing bolted on: CL positions become NFTs you stake into a per-pool CLGauge to earn VELO/AERO emissions. That single addition introduces staked-vs-unstaked liquidity per tick, an unstakedFee, and epoch-based reward notification, and that is where most of the bugs live. This is a two-layer entry: canonical v3-core findings you could have shipped in your own pool, plus fork-delta findings that exist only in the gauge and reward layer. 8 representative findings (7 H + 1 M).
Scope (1848 SLOC)
| File | SLOC |
|---|---|
| contracts/core/CLPool.sol | 760 |
| contracts/core/libraries/SwapMath.sol | 63 |
| contracts/core/libraries/TransferHelper.sol | 9 |
| contracts/core/libraries/Tick.sol | 151 |
| contracts/gauge/CLGauge.sol | 266 |
| contracts/gauge/CLGaugeFactory.sol | 86 |
| contracts/periphery/SwapRouter.sol | 184 |
| contracts/periphery/NonfungiblePositionManager.sol | 329 |
Documentation
Part of the Uniswap V3 Path
This shadow audit connects to the Uniswap V3 Build module. Students who built the concentrated-liquidity pool have an advantage because they understand tick accounting, the swap loop, fee growth, the observation oracle, and callback-based payment.
View Build Module