Skip to main content
Not yet available on Robinhood testnet (chain 46630), Sherwood’s current deployment target. This strategy will come online as Sherwood expands to more chains.
The AerodromeLPStrategy provides liquidity to an Aerodrome pool and optionally stakes the LP tokens in a gauge to earn AERO rewards. On settlement, it unstakes, claims rewards, removes liquidity, and pushes all tokens back to the vault.

Architecture

Stable vs Volatile Pools

Stable Pool

For correlated assets (e.g., USDC/USDbC). Uses the stable = true flag. Lower fees, tighter curve.

Volatile Pool

For uncorrelated assets (e.g., USDC/WETH). Uses stable = false. Standard AMM curve.

Lifecycle

PhaseWhat happensWho calls
ExecutePull tokenA + tokenB → addLiquidity → stake LP in gaugeGovernor (proposal execution)
ExecutedLP earns trading fees; gauge earns AERO rewards
SettleUnstake LP → claim AERO → removeLiquidity → push all to vaultGovernor (proposal settlement)
Any dust (unused tokens from addLiquidity) is returned to the vault immediately during execution.

Batch Calls

Execute

Settle

Settlement pushes three types of tokens to the vault: tokenA, tokenB (from removed liquidity), and AERO (gauge rewards).

Gauge Staking

Gauge staking is optional. Pass --gauge <address> to enable it.
  • If a gauge is set, the strategy stakes all LP tokens after adding liquidity
  • On settlement, LP is withdrawn from the gauge and AERO rewards are claimed
  • The gauge’s stakingToken must match the lpToken address (validated at initialization)
  • If no gauge is set, LP tokens sit in the strategy clone (earning trading fees only)

InitParams

CLI Usage

FlagDescriptionDefault
--token-a <address>Token A addressrequired
--token-b <address>Token B addressrequired
--amount-a <n>Token A amountrequired
--amount-b <n>Token B amountrequired
--stableStable pool (correlated assets)false
--gauge <address>Gauge for AERO rewardsnone
--lp-token <address>LP token addressrequired
--min-a-out <n>Min token A on settle (slippage)at least one of the pair required
--min-b-out <n>Min token B on settle (slippage)at least one of the pair required
Slippage minimums are mandatory. Initialization reverts with InvalidAmount if both settle-side mins (minAmountAOut / minAmountBOut) are 0, and likewise if both add-side mins (amountAMin / amountBMin) are 0. At least one of each pair must be non-zero so addLiquidity / removeLiquidity are sandwich-resistant.

Tunable Parameters

While in Executed state, the proposer can update settlement slippage:
ParameterDescription
minAmountAOutMinimum tokenA on removeLiquidity
minAmountBOutMinimum tokenB on removeLiquidity

Live NAV

The strategy never self-reports a value. It reports one position of kind AERODROME_LP (venue + kind + locator) via positions(), and an AerodromeLPAdapter — pricing the LP via the pool’s native quote() TWAP with a recency check and a spot/TWAP deviation guard — is built and tested for the governance-owned PriceRouter. However, Lane A is not yet enabled for AERODROME_LP (laneAEnabled[AERODROME_LP] = false, pending audit). Until governance enables it, this strategy is Lane B only: while an Aerodrome proposal is active, LP entry / exit goes through the async queue (VaultWithdrawalQueue) and settles at the frozen per-proposal price. Once the kind is enabled, instant Lane A pricing applies. See Deposits & Withdrawals for the full two-lane mechanics.

Addresses (Base reference)

ContractAddress
AerodromeLPStrategy template0x6fba9a6D3F40AA1848Ad196564B27a430D29FdB0
Aerodrome Router0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43
Aerodrome Default Factory0x420DD381b31aEf6683db6B902084cB0FFECe40Da
AERO Token0x940181a94A35A4569E4529A3CDfB74e38FD98631
If the vault only holds one asset (e.g., USDC), the agent should add a swap call before the strategy in the execute batch to acquire the second token.