This skill should be used when the user asks about "Aerodrome", "ve(3,3)", "Solidly", "Velodrome", "protocol overview", or needs to understand Aerodrome's architecture and tokenomics.
Aerodrome is a ve(3,3) AMM on Base, inspired by Solidly. It combines vote-escrowed tokenomics with an automated market maker to align incentives between liquidity providers, voters, and token holders.
┌──────────────────────────────────────────────────────────────┐
│ AERODROME PROTOCOL │
├──────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ AERO │ │ VotingEscrow│ │ Voter │ │
│ │ Token │───►│ (veAERO) │───►│ │ │
│ └─────────────┘ └─────────────┘ └──────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Minter │ │ Rewards │ │ Gauges │ │
│ │ (Emissions) │ │ Distributor │ │ │ │
│ └─────────────┘ └─────────────┘ └──────┬──────┘ │
│ │ │
│ ┌───────────────────┤ │
│ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Pools │ │ Rewards │ │
│ │(sAMM/vAMM) │ │(Fees/Bribes)│ │
│ └─────────────┘ └─────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
| Contract | Description |
|---|---|
Aero.sol | ERC20 token - the native protocol token |
VotingEscrow.sol | Vote-escrowed NFT (veAERO) for locking AERO |
Voter.sol | Manages votes, gauge creation, emission distribution |
Pool.sol | AMM pools (stable and volatile) |
Router.sol | Swap and liquidity operations |
Gauge.sol | Distributes emissions to LP stakers |
Minter.sol | Controls emission schedule and rebases |
RewardsDistributor.sol | Distributes rebases to veNFT holders |
┌──────────────────────────────────────────────────────────────┐
│ ve(3,3) FLYWHEEL │
├──────────────────────────────────────────────────────────────┤
│ │
│ 1. Lock AERO ──► Receive veAERO NFT │
│ │ │
│ ▼ │
│ 2. Vote for Pools ──► Earn fees + bribes from those pools │
│ │ │
│ ▼ │
│ 3. Pools with votes ──► Receive emissions to their gauges │
│ │ │
│ ▼ │
│ 4. LPs stake in gauges ──► Earn AERO emissions │
│ │ │
│ ▼ │
│ 5. More LP activity ──► More fees for voters │
│ │ │
│ └──────────► Back to step 1 (positive feedback loop) │
│ │
└──────────────────────────────────────────────────────────────┘
Aerodrome operates on weekly epochs:
library ProtocolTimeLibrary {
uint256 internal constant WEEK = 7 days;
function epochStart(uint256 timestamp) internal pure returns (uint256) {
return (timestamp / WEEK) * WEEK;
}
function epochNext(uint256 timestamp) internal pure returns (uint256) {
return epochStart(timestamp) + WEEK;
}
}
Standard ERC20 token minted by the Minter contract:
contract Aero is IAero {
// Only Minter can mint new tokens
function mint(address account, uint256 amount) external {
if (msg.sender != minter) revert NotMinter();
_mint(account, amount);
}
}
┌──────────────────────────────────────────────────────────────┐
│ veNFT STATES │
├──────────────────────────────────────────────────────────────┤
│ │
│ NORMAL ────────────► Regular veNFT with decaying power │
│ │ Can: vote, merge, split, withdraw │
│ │ │
│ ▼ │
│ NORMAL_PERMANENT ──► Permanently locked, no decay │
│ │ Can: vote, delegate, split │
│ │ │
│ ▼ │
│ MANAGED ──────────► Special NFT for aggregated voting │
│ │ Created by governance, always permanent │
│ │ │
│ ▼ │
│ LOCKED ───────────► Normal NFT deposited into Managed │
│ Restricted functionality, earning │
│ rewards through the managed NFT │
│ │
└──────────────────────────────────────────────────────────────┘
| Type | Formula | Use Case |
|---|---|---|
| Volatile (vAMM) | x * y = k | Uncorrelated assets (ETH/USDC) |
| Stable (sAMM) | x³y + y³x = k | Correlated assets (USDC/DAI) |
function _k(uint256 x, uint256 y) internal view returns (uint256) {
if (stable) {
// Stable pool curve: x³y + y³x
uint256 _x = (x * 1e18) / decimals0;
uint256 _y = (y * 1e18) / decimals1;
uint256 _a = (_x * _y) / 1e18;
uint256 _b = ((_x * _x) / 1e18 + (_y * _y) / 1e18);
return (_a * _b) / 1e18;
} else {
// Volatile pool: x * y
return x * y;
}
}
┌──────────────────────────────────────────────────────────────┐
│ EMISSION SCHEDULE │
├──────────────────────────────────────────────────────────────┤
│ │
│ Phase 1 (First 14 epochs): │
│ • Weekly growth: 3% per epoch │
│ • Starting: 10M AERO/week │
│ │
│ Phase 2 (Epoch 15+): │
│ • Weekly decay: 1% per epoch │
│ • Continues until tail emissions │
│ │
│ Tail Emissions (when weekly < 8.97M): │
│ • Switch to % of total supply │
│ • Rate adjustable via EpochGovernor (0.01% - 1%) │
│ • Default: 0.67% of supply │
│ │
└──────────────────────────────────────────────────────────────┘
| Role | Permissions |
|---|---|
| Team | Set team rate, manage managed NFTs |
| Governor | Whitelist tokens, set max voting num |
| EpochGovernor | Nudge tail emission rate |
| EmergencyCouncil | Kill/revive gauges, modify pool names |
| Feature | Uniswap V2 | Aerodrome |
|---|---|---|
| Fees | Go to LPs | Go to voters (via gauges) |
| Incentives | None | AERO emissions to LPs |
| Governance | External | veAERO voting |
| Pool Types | Volatile only | Stable + Volatile |
| Bribes | None | External rewards for voters |
| Contract | Address |
|---|---|
| AERO | 0x940181a94A35A4569E4529A3CDfB74e38FD98631 |
| VotingEscrow | 0xeBf418Fe2512e7E6bd9b87a8F0f294aCDC67e6B4 |
| Voter | 0x16613524e02ad97eDfeF371bC883F2F5d6C480A5 |
| Router | 0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43 |
| PoolFactory | 0x420DD381b31aEf6683db6B902084cB0FFECe40Da |
| Minter | 0xeB018363F0a9Af8f91F06FEe6613a751b2A33FE5 |
| RewardsDistributor | 0x227f65131A261548b057215bB1D5Ab2997964C7d |
contracts/Aero.sol - Protocol tokencontracts/VotingEscrow.sol - Vote escrow NFTcontracts/Voter.sol - Voting and gauge managementcontracts/Pool.sol - AMM implementationcontracts/Router.sol - Swap and liquidity routercontracts/Minter.sol - Emission controllerSPECIFICATION.md - Full protocol specification