AgentSkillsCN

Aerodrome Architecture

当用户询问“Aerodrome”“ve(3,3)”“Solidly”“Velodrome”“协议概览”,或需要了解 Aerodrome 的架构与代币经济学时,应使用此技能。

SKILL.md
--- frontmatter
name: Aerodrome Architecture
description: 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.
version: 0.1.0

Aerodrome Architecture

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.

Overview

code
┌──────────────────────────────────────────────────────────────┐
│                   AERODROME PROTOCOL                         │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐       │
│  │   AERO      │    │ VotingEscrow│    │   Voter     │       │
│  │   Token     │───►│  (veAERO)   │───►│             │       │
│  └─────────────┘    └─────────────┘    └──────┬──────┘       │
│        │                  │                   │              │
│        ▼                  ▼                   ▼              │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐       │
│  │   Minter    │    │  Rewards    │    │   Gauges    │       │
│  │ (Emissions) │    │ Distributor │    │             │       │
│  └─────────────┘    └─────────────┘    └──────┬──────┘       │
│                                               │              │
│                           ┌───────────────────┤              │
│                           ▼                   ▼              │
│                    ┌─────────────┐    ┌─────────────┐        │
│                    │   Pools     │    │  Rewards    │        │
│                    │(sAMM/vAMM)  │    │(Fees/Bribes)│        │
│                    └─────────────┘    └─────────────┘        │
│                                                              │
└──────────────────────────────────────────────────────────────┘

Core Contracts

ContractDescription
Aero.solERC20 token - the native protocol token
VotingEscrow.solVote-escrowed NFT (veAERO) for locking AERO
Voter.solManages votes, gauge creation, emission distribution
Pool.solAMM pools (stable and volatile)
Router.solSwap and liquidity operations
Gauge.solDistributes emissions to LP stakers
Minter.solControls emission schedule and rebases
RewardsDistributor.solDistributes rebases to veNFT holders

The ve(3,3) Model

code
┌──────────────────────────────────────────────────────────────┐
│                    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)  │
│                                                              │
└──────────────────────────────────────────────────────────────┘

Epochs

Aerodrome operates on weekly epochs:

  • Epoch Start: Thursday 00:00 UTC
  • Vote Window: First hour after epoch start is blocked (distribution)
  • Vote End: Last hour before epoch end is restricted (only whitelisted NFTs)
  • Duration: 7 days
solidity
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;
    }
}

Token Types

AERO Token

Standard ERC20 token minted by the Minter contract:

solidity
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);
    }
}

veAERO NFT States

code
┌──────────────────────────────────────────────────────────────┐
│                    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        │
│                                                              │
└──────────────────────────────────────────────────────────────┘

Pool Types

TypeFormulaUse Case
Volatile (vAMM)x * y = kUncorrelated assets (ETH/USDC)
Stable (sAMM)x³y + y³x = kCorrelated assets (USDC/DAI)
solidity
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

code
┌──────────────────────────────────────────────────────────────┐
│                 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                                  │
│                                                              │
└──────────────────────────────────────────────────────────────┘

Governance Roles

RolePermissions
TeamSet team rate, manage managed NFTs
GovernorWhitelist tokens, set max voting num
EpochGovernorNudge tail emission rate
EmergencyCouncilKill/revive gauges, modify pool names

Key Differences from Uniswap V2

FeatureUniswap V2Aerodrome
FeesGo to LPsGo to voters (via gauges)
IncentivesNoneAERO emissions to LPs
GovernanceExternalveAERO voting
Pool TypesVolatile onlyStable + Volatile
BribesNoneExternal rewards for voters

Deployed Addresses (Base)

ContractAddress
AERO0x940181a94A35A4569E4529A3CDfB74e38FD98631
VotingEscrow0xeBf418Fe2512e7E6bd9b87a8F0f294aCDC67e6B4
Voter0x16613524e02ad97eDfeF371bC883F2F5d6C480A5
Router0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43
PoolFactory0x420DD381b31aEf6683db6B902084cB0FFECe40Da
Minter0xeB018363F0a9Af8f91F06FEe6613a751b2A33FE5
RewardsDistributor0x227f65131A261548b057215bB1D5Ab2997964C7d

Reference Files

  • contracts/Aero.sol - Protocol token
  • contracts/VotingEscrow.sol - Vote escrow NFT
  • contracts/Voter.sol - Voting and gauge management
  • contracts/Pool.sol - AMM implementation
  • contracts/Router.sol - Swap and liquidity router
  • contracts/Minter.sol - Emission controller
  • SPECIFICATION.md - Full protocol specification