defirisk.co
rubric v1.7.0

Aerodrome Finance

ve(3,3) AMM DEX on Base, with two codebases: Aerodrome Pools (Velodrome v2 / Solidly fork) and Aerodrome Slipstream (Uniswap v3 fork concentrated liquidity). Native AERO token; veAERO governance allocates emissions to gauges weekly via Voter contract. Operated by the Velodrome team. No timelock; team multisig + emergency council administer. Base-native, no bridge surface.

Sector evm_dex
TVL $591.3M
Reviewed May 12, 2026
Factors 184
Categories 13
Risk score 17.9
DeploymentsBase · $591.3M
01

Risk profile at a glance

0 red · 5 yellow · 7 green
02

Categories & evidence

184 factors · 13 categories
Code & audits Green 18 25 of 25
RD-F-183 red Bug bounty scope gap on highest-TVL contracts Velodrome Immunefi program scope page lists 12 Optimism-chain Velodrome contracts: GaugeFactory, FactoryRegistry, Minter, PoolFactory, Router, etc. No Aerodrome Base-chain contracts (Voter, VotingEscrow, AERO token, Slipstream PoolFactory) are named in scope. Slipstream README states 'Velodrome has a live bug bounty hosted on Immunefi' implying coverage but scope page does not enumerate Aerodrome Base-chain addresses. Aerodrome's highest-TVL contracts ($133.9M TVL on Base) appear out of or absent from explicit bug bounty scope. RD-F-001 yellow Audit scope mismatch Dual codebase. Aerodrome Pools inherits Spearbit audit of Velodrome v2 (Feb–Jun 2023) — no Aerodrome-specific commit SHA match confirmed. Slipstream: ABDK and ToB PDFs confirmed in repo but binary-only (commit SHAs inside unreadable). No signed release tags in either repo. All BaseScan-verified contracts show exact-match verification (solc 0.8.19+commit.7dd6d404), confirming source is live, but audit-to-bytecode SHA linkage unverifiable without local git log. RD-F-002 yellow Audit recency Aerodrome Pools: Spearbit Velodrome v2 audit Feb–Jun 2023, approximately 35 months old — exceeds 730-day red threshold. However, Slipstream: ABDK and ToB audits pre-launch April 2024, approximately 12–13 months ago — within green range. Composite yellow: one codebase within green, one exceeds red threshold. RD-F-003 yellow Resolved-without-proof findings Spearbit Velodrome v2: 1 critical + 8 high all fixed per web search summary. Inherited fixes apply to Aerodrome fork. Slipstream-specific ABDK and ToB PDFs binary-only — finding resolution status unverifiable. Conservative composite: yellow (inherited audit clean; Slipstream-specific finding resolution unconfirmed). RD-F-006 yellow Audit-to-deploy gap Aerodrome Pools: Spearbit Velodrome v2 audit Jun 2023 → Aerodrome deploy Aug 28 2023 = ~60–90 day gap (borderline green/yellow for inherited upstream audit). Slipstream: ABDK/ToB audits conducted pre-launch April 2024 → Slipstream launched April 22 2024 = likely <60 day gap (green). Composite yellow due to Aerodrome Pools borderline. RD-F-007 yellow Bug bounty presence & max payout Velodrome Immunefi program active with $100K max payout. However, the scope page lists 12 Optimism-chain Velodrome contracts only — no Aerodrome Base-chain contracts explicitly named in scope. Slipstream README references the Velodrome Immunefi program but does not enumerate Aerodrome addresses in scope. Payout $100K is within yellow range; scope ambiguity for Aerodrome-specific contracts keeps this yellow. RD-F-009 yellow Formal verification coverage Trail of Bits verified three Uniswap v3 core mathematical invariants (BitMath.mostSignificantBit, BitMath.leastSignificantBit, LiquidityMath.addDelta) using Echidna property tests and Manticore symbolic execution for Slipstream. No Certora Prover specifications found. No formal declaration of protocol-wide Aerodrome-specific critical invariants found. Coverage estimated <20% of declared critical invariants formally verified. RD-F-023 yellow Constructor calls _disableInitializers() Pool.sol constructor: constructor() ERC20("", "") ERC20Permit("") {} — no _disableInitializers() call. CLPool.sol: no _disableInitializers() in constructor per source inspection. The master implementation Pool contract is not re-initializable once the factory lock is set on first clone-init call, but the implementation itself has no formal _disableInitializers() guard. Yellow (absent in implementation constructor; no live proxied TVL directly at risk from re-init of master, but hygiene gap). RD-F-024 yellow Code complexity vs audit coverage Dual codebase (~30+ files in contracts; ~20+ in slipstream). ≥3 distinct audit engagements across codebases. Uniswap v3 core is a well-studied system. LOC/audit-day ratio not formally computed (Slither complexity metrics not run; audit PDF page counts not accessible). Borderline adequate but cannot confirm formally. RD-F-010 gray Static-analyzer high-severity count No published Slither/Mythril JSON output found. Source IS verified on BaseScan (tool run is feasible). Audit firms conducted their own static/dynamic analysis but raw tool output not published. Cannot confirm current deployed source has 0 high-severity findings without running tool. [?] needs tool run. RD-F-011 gray SELFDESTRUCT reachable from non-admin path No SELFDESTRUCT finding in any audit summary. Clone pattern (EIP-1167) cannot contain SELFDESTRUCT in delegate logic by construction. Cannot confirm without Slither run. [?] needs tool run. RD-F-012 gray delegatecall with user-controlled target EIP-1167 clone proxies delegate to fixed implementation — no user-controlled delegatecall by construction. Slipstream CLPool inherits Uniswap v3 which has no user-controlled delegatecall. No audit finding on this pattern. Cannot confirm without Slither run. [?] needs tool run. RD-F-013 gray Arbitrary call with user-controlled target No arbitrary-call finding in any referenced audit. Router.sol handles swap routing. Cannot confirm without Slither run. [?] needs tool run. RD-F-021 n/a UUPS _authorizeUpgrade correctly permissioned Aerodrome does not use UUPS pattern. Pool contracts use EIP-1167 minimal proxies (immutable implementation pointer). VotingEscrow and Voter are deployed as direct implementations (non-upgradeable). UUPS _authorizeUpgrade assessment is not applicable.
RD-F-004 green Audit count Slipstream definitively: ABDK (Tier-2) and Trail of Bits (Tier-1) confirmed via audits directory — 2 distinct firms. Aerodrome Pools: Spearbit (Tier-1) via Velodrome v2 inherited audit. Across both codebases, 3 distinct audit firms (Spearbit + ABDK + Trail of Bits) — exceeds ≥2 distinct firms threshold.
RD-F-005 green Audit firm tier Spearbit (Tier-1) and Trail of Bits (Tier-1) both confirmed as auditors. At least one Tier-1 firm per codebase: Spearbit/Velodrome v2 for Aerodrome Pools; Trail of Bits for Slipstream. ABDK is Tier-2 (specialized numerical verification firm).
RD-F-008 green Ignored bounty disclosure No evidence of any ignored pre-exploit disclosure. All three Aerodrome incidents (Nov 2023, late 2023, Nov 2025) are frontend/DNS attacks, not smart contract exploits. Rekt DB (data cache) shows incidents: []. No smart contract vulnerability was disclosed and ignored prior to exploit.
RD-F-014 green Reentrancy guard on external-calling functions Spearbit found and fixed all critical/high findings in Velodrome v2 (reentrancy not among unresolved). Uniswap v3 (Slipstream upstream) uses lock modifier for reentrancy protection — well-established design. No unresolved reentrancy finding in any referenced audit.
RD-F-015 green ERC-777/1155/721 hook without reentrancy guard VotingEscrow uses ERC-721 (veNFT). Standard AMM swap/liquidity operations do not invoke ERC-721 hooks. No unguarded ERC-721/1155/777 hook finding in Spearbit or ToB audits.
RD-F-016 green Divide-before-multiply pattern AMM pricing uses multiply-then-divide patterns. ABDK Consulting specializes in numerical precision and reviewed Slipstream math. No divide-before-multiply finding in any referenced audit. Fuzz testing with 5000 runs (Slipstream) provides additional confidence.
RD-F-017 green Mixed-decimals math without explicit scaling Stable pools in Velodrome v2/Aerodrome architecture handle different-decimal tokens with scaling factors (Solidly design). Spearbit audit covered decimal-handling. No unscaled cross-decimal arithmetic finding in any referenced audit.
RD-F-018 green Signed/unsigned arithmetic confusion Slipstream uses int24 tick arithmetic (Uniswap v3 pattern), extensively reviewed by ABDK. No signed/unsigned confusion finding in any referenced audit.
RD-F-019 green ecrecover zero-address return unchecked OZ 4.8.0 ERC20Permit guards ecrecover results by construction. VotingEscrow uses OZ EIP-712 pattern. No unguarded ecrecover finding in any referenced audit.
RD-F-020 green EIP-712 domain separator missing chainId AERO token and VotingEscrow use OZ 4.8.0 EIP-712 which includes chainId in domain separator by construction (EIP-712 §2.1 compliance). Confirmed via BaseScan source for AERO token.
RD-F-022 green Public initialize() without initializer modifier Pool.sol initialize() uses require(factory == address(0)) guard instead of OZ initializer modifier, and CLPool.sol uses require(factory == address(0) && _factory != address(0)). Both are deployed atomically by factory: Clones.cloneDeterministic() + IPool.initialize() in single transaction — no front-run window. Factory-lock pattern is the Uniswap v2/v3/Solidly standard design; architecturally equivalent to initializer modifier for this deployment pattern. No exploit vector exists for a freshly deployed clone. Spearbit and ABDK reviewed these patterns.
Governance & admin Yellow 21 24 of 24
RD-F-032 red Timelock duration on upgrades No timelock on any admin action. Zero-hour delay on all privileged functions including setGovernor, setMinter, setTeamRate, approve/unapprove factories, killGauge, and ProtocolGovernor parameter changes. Governance design explicitly does not include a TimelockController. RD-F-033 red Timelock on sensitive actions No sensitive action has a timelock: setGovernor(), setEpochGovernor(), setMinter(), setTeamRate(), setPauser(), setFee(), killGauge(), FactoryRegistry.approve()/unapprove(), VotingEscrow team functions. All execute immediately upon multisig approval. Data cache confirms timelock_address: null. RD-F-028 yellow Low-threshold multisig vs TVL Team multisig threshold is 3-of-7 (43%) for a protocol with $134M TVL. Peer norm for protocols >$100M TVL is 5/8 or higher. Controls include AERO mint access chain, FactoryRegistry ownership, and ProtocolGovernor Vetoer role. Below best practice but not flagrantly low. RD-F-031 yellow Signer rotation recency Emergency Council Safe created 2025-10-08 — more than 2 years after protocol launch (2023-08-28). This is a significant signer-set addition event occurring late in the protocol's life. Team multisig (nonce=2350) has been active since launch. No threshold-reduction events detected. RD-F-034 yellow Guardian/pause-keeper distinct from upgrader Pauser role on PoolFactory is separately assignable (distinct from team multisig owner of FeeManager). Emergency Council (3-of-5) is a distinct multisig from team (3-of-7) for gauge kill/revive. Some role separation exists. However, all roles trace back to team multisig as root authority for initial assignment. RD-F-035 yellow Role separation: upgrade ≠ fee ≠ oracle No oracle role (DEX, not lending). Fee management (PoolFactory feeManager) and governance (team multisig) are distinct logical roles. However all roads lead back to team multisig as root authority. No upgrade path on core contracts (immutable). Role separation is partial. RD-F-039 yellow delegatecall/call in proposal execution without allowlist Two governor contracts: (1) EpochGovernor (GovernorSimple) has strict minter-only allowlist — can only call IMinter.nudge(); low risk. (2) ProtocolGovernor (VetoGovernor) uses regular call() — not delegatecall — with no target allowlist; arbitrary external calls possible on successful proposals. Vetoer (team multisig) can cancel malicious proposals pre-execution. No delegatecall storage collision risk. Moderate arbitrary-call risk via ProtocolGovernor. RD-F-042 yellow Admin has mint() with unlimited max AERO token mint() has no supply cap. However, mint() is callable ONLY by the designated Minter contract (NotMinter check) — not directly by the team multisig. Minter is a verified, audited contract with decay math. Team controls minter role indirectly via team rate and setTeam(). No hard supply ceiling on the token contract itself, but practical constraints exist via Minter architecture. RD-F-029 gray Multisig signers co-hosted Seven signer addresses enumerated from Safe API. No publicly-attested identities found. Co-hosting status cannot be determined without on-chain behavioral analysis or off-chain OSINT beyond time budget. RD-F-030 gray Hot-wallet signer flag On-chain hot-wallet heuristics for signer addresses not assessed within time budget. Deferred to dev-identity-analyst. RD-F-044 gray Admin wallet interacts with flagged addresses Admin wallet interaction with flagged addresses not assessed. Requires Cat 7 on-chain forensics beyond governance-admin-analyst scope. RD-F-045 gray Constructor args match governance proposal No governance forum found (aerodrome.finance/docs returned 403 at profile time; no Discourse or Commonwealth forum located). No governance proposals with constructor-arg verification available. Cannot assess. RD-F-047 gray Governance token concentration (Gini) veAERO voting power distribution Gini coefficient not assessable without full holder distribution data (Dune queries return 403). ve(3,3) systems historically concentrate voting power with large early lockers and team veNFTs. Profile notes 5% emission stream to team. Qualitative concentration risk present but not quantified.
RD-F-025 green Admin key custody type Core contract upgrade authority: NON-UPGRADEABLE (strongest GREEN tier per PD-047 2026-05-21). Core AMM contracts (VotingEscrow, Voter, Minter, PoolFactory, GaugeFactory, FactoryRegistry, Pool implementation) are deployed as immutable bytecode with no proxy pattern; no Past Implementations history on any core contract. Code replacement is structurally impossible regardless of how the admin key is held. The 3-of-7 team Gnosis Safe and 3-of-5 Emergency Council control fee parameters and gauge weights only — captured in RD-F-026/032/033/034; they cannot upgrade or replace core logic. RD-F-021/022/143 are not_applicable for the core contracts.
RD-F-026 green Upgrade multisig signer configuration (M/N) Team multisig: 3-of-7 (confirmed). Emergency Council: 3-of-5 (confirmed). Both are Gnosis Safe L2 v1.3.0 contracts on Base.
RD-F-027 green Single admin EOA Admin is not a single EOA. Both privileged roles (team admin, emergency council) are Gnosis Safe multisigs confirmed via Safe API. Team: 3-of-7. Emergency Council: 3-of-5.
RD-F-036 green Flash-loanable voting weight veAERO is a locked NFT (ERC-721). Voting power requires AERO to be locked for up to 4 years. Timestamp-based checkpoints (EIP-6372). Flash-loan attack is impossible by construction — veAERO cannot be acquired and returned within a single transaction.
RD-F-037 green Quorum achievable via single-entity flash loan Not applicable — veAERO cannot be flash-loaned (locked NFT). Flash-loan quorum attack is impossible by construction. Same evidence as RD-F-036.
RD-F-038 green Proposal execution delay < 24h ProtocolGovernor: voting delay 15 min + voting period 1 week. Effective delay before execution is approximately 1 week (well above 24h). EpochGovernor: epoch-based, proposal executable only in epoch n+1 (~1-week delay). No proposal execution within 24h is possible.
RD-F-040 green Emergency-veto multisig present Vetoer role held by team multisig at deployment (ProtocolGovernor) — can veto/cancel malicious proposals pre-execution. Emergency Council (3-of-5) exists for gauge kill/revive. Both provide emergency pause capability. Vetoer planned for eventual renouncement but not yet executed.
RD-F-041 green Rescue/emergencyWithdraw without timelock No rescue(), emergencyWithdraw(), or admin sweep functions exist on core contracts. Gauge withdraw() is user-initiated only. killGauge() in Voter redirects claimable rewards (not user principal) to Minter. No admin drain path confirmed across Voter.sol, VotingEscrow.sol, Gauge source, and Minter.sol.
RD-F-043 green Admin = deployer EOA after 7 days Team multisig (0xE6A41fE61E7a1996B59d508661e3f524d6A32075) was created 2023-08-22, six days before protocol launch (2023-08-28). Admin transferred to multisig at or before launch. Deployer EOA did not retain permanent admin beyond launch period.
RD-F-046 green Contract unverified on Etherscan/Sourcify All core contracts verified on BaseScan with full source code, ABI, and compiler settings publicly accessible. AERO token: verified (Solidity 0.8.19, 200 runs, GPL-3.0). VotingEscrow, Voter, Minter, PoolFactory, GaugeFactory, FactoryRegistry, Router: all verified at launch.
RD-F-167 green Deprecated contract paused but pause reversible by live admin No deprecated contracts with live admin pause identified. Core protocol contracts are first-generation and active. PoolFactory pauser role exists on the live (non-deprecated) contract. No evidence of sunset surfaces with reversible admin pause.
Oracle & external dependencies Green 0 17 of 17
RD-F-049 n/a Oracle role per asset Aerodrome does not consume external oracles for any asset. No primary/secondary/fallback oracle role classification is possible or required. Price discovery is entirely internal to AMM pool reserves. RD-F-051 n/a Fallback behavior on oracle failure No external oracle is consumed; therefore no oracle fallback logic exists or is needed. Core swap operations use reserve math and do not call any external feed. Absence of oracle consumption means absence of oracle failure path — this is a positive structural characteristic of a DEX. RD-F-054 n/a TWAP window duration Aerodrome does not consume a DEX-TWAP oracle from any external source. The internal Pool.sol 30-minute TWAP accumulator (periodSize = 1800) is a producer-side mechanism for downstream integrators, not consumed by Aerodrome internally for pricing decisions. RD-F-055 n/a Oracle pool depth (USD) Not applicable — Aerodrome does not consume a DEX-TWAP oracle from any external pool. Oracle pool depth is a concern for downstream protocols using Aerodrome as a price oracle source, not for Aerodrome's own operations. RD-F-056 n/a Single-pool oracle (no medianization) Not applicable — no external pool oracle consumed. Medianization is irrelevant when no oracle is read. RD-F-057 n/a Circuit breaker on price deviation Not applicable — no external oracle is consumed, so no circuit breaker on oracle price deviation is needed or present. Slippage protection for DEX swaps is user-supplied via amountOutMin parameter in Router.sol — this is not an oracle circuit breaker. RD-F-058 n/a Max-deviation threshold (bps) Not applicable — no circuit breaker exists on oracle price (no oracle consumed). See RD-F-057. RD-F-059 n/a Oracle staleness check present Not applicable — no external oracle consumed, so no oracle staleness check is needed. Pool reserves update on every swap transaction; there is no timestamped oracle value to check for staleness. RD-F-060 n/a Chainlink aggregator min/max bound misconfig Not applicable — Aerodrome does not consume any Chainlink aggregator. The 16 Chainlink feeds in the data cache are Base-deployed infrastructure feeds used by other protocols. Source inspection of all core Aerodrome contracts confirms no AggregatorV3Interface import and no latestAnswer()/latestRoundData() calls. RD-F-180 n/a Immutable oracle address [★ CANDIDATE per PD-017 — flagged for orchestrator T-14 tracking] NOT_APPLICABLE. F180 targets lending protocols with oracle addresses hardcoded as immutable with no admin-replaceable wrapper. Aerodrome is a DEX. No collateral oracle address is stored in any Aerodrome contract. VotingEscrow.sol has three immutable addresses (forwarder, token, factoryRegistry) — none are oracle feeds. Router.sol has four immutable addresses (factoryRegistry, defaultFactory, voter, weth) — none are oracle feeds. No oracle feed address is stored as immutable because no oracle feed is consumed. Structurally N/A for DEX protocols regardless of F180 critical promotion status. RD-F-181 n/a Permissionless-pool lending oracle NOT_APPLICABLE. F181 targets lending protocols that accept spot prices from permissionlessly-created DEX pools. Aerodrome is a DEX, not a lending protocol. No borrow/lend market exists; no collateral oracle acceptance logic exists. N/A by construction for DEX protocols.
RD-F-048 green Oracle providers used Aerodrome consumes no external oracle provider. Pool.sol uses internal reserve-based pricing (constant product / stable curve math). CLPool.sol uses its own internal observation array (Uniswap v3 pattern). No Chainlink, Pyth, RedStone, or external TWAP source is imported or called in any core contract. The 16 Chainlink feed addresses in the data cache are Base-chain infrastructure feeds used by other protocols — not by Aerodrome. Data cache field oracle: null is consistent.
RD-F-050 green Dependency graph (protocols depended upon) All runtime external dependencies are Aerodrome-internal contracts (VotingEscrow, Voter, Minter, Gauge, RewardsDistributor) plus statically-linked OpenZeppelin v4.8.0 libraries. No external protocol dependency (Aave, Uniswap router for pricing, Chainlink, etc.) exists in the core swap or emission path. WETH is the only non-Aerodrome token contract dependency, and only in Router's ETH-wrapping path. Protocol does not depend on any third-party protocol's availability for core DEX functionality.
RD-F-052 green Breakage analysis per dependency Breakage analysis: (1) WETH failure breaks ETH-wrapping swap paths in Router; pure ERC20 swaps unaffected. (2) VotingEscrow compromise affects gauge reward claims. (3) Minter failure halts epoch reward distribution. None involve an oracle dependency. No oracle-failure breakage path exists by design for a DEX.
RD-F-053 green Oracle source = spot DEX pool (no TWAP) GREEN — no ★ risk triggered. Aerodrome is a DEX and does not consume any spot DEX price from an external pool. Pool.sol uses internal reserve math (constant product xy>=k and stable curve x3y+y3x>=k). CLPool.sol emits TWAP oracle data (observe(), slot0) for downstream consumer use only — Aerodrome's own swap logic uses internal sqrtPriceX96 state. No getReserves() or slot0 from an external pool is consumed by any Aerodrome contract for internal pricing. OracleLibrary.sol in Slipstream periphery is a helper for external integrators, not used internally by Aerodrome core.
RD-F-061 green LP token balanceOf used for pricing Pool.sol uses getReserves() state variables (reserve0/reserve1 tracked in storage) for swap math, not balanceOf(). VotingEscrow uses balanceOf for veAERO NFT voting power — this is governance/voting, not collateral pricing. No lending market exists to exploit a balanceOf-based price manipulation. Risk is not applicable in meaningful form.
RD-F-062 green External keeper/relayer not redundant Aerodrome core operations are permissionless. Epoch-boundary operations (Minter.updatePeriod, Voter.distribute) are callable by any external address — not gated to a single keeper/relayer. The protocol does not use Gelato, Chainlink Automation, or any proprietary keeper service for core functions. No single keeper failure can halt swaps or withdrawals.
Economic risk Yellow 22 13 of 13
RD-F-063 yellow TVL (current + 30d trend) Combined TVL $591M (Aerodrome Pools $377.4M + Slipstream $213.9M) as of 2026-05-04 per DeFiLlama API. 30-day trend on Pools slug: -67.1% per live API. Peak was ~$1.1B in Sept 2024 — combined TVL is ~46% below peak. Absolute scale meets v1 coverage threshold; sharp negative 30-day trend drives yellow. 100% Base chain. AERO token price reflexivity (AERO ~$0.45 vs peak ~$2.50) contributes to TVL decline beyond pure LP withdrawal. RD-F-064 yellow TVL concentration (top-10 wallet share) TVL depositor concentration not quantifiable (Dune Analytics 403; no on-chain wallet enumeration accessible). veAERO whale concentration is structurally confirmed: Hypersphere Ventures deployed ~1.76M AERO over 7 days (documented 2026); ve(3,3) gauge-voting flywheel means large veAERO holders direct emissions to self-serving pools, creating LP concentration incentive. Yellow scored on structural plausibility rather than confirmed data; the gauge-vote flywheel is a well-documented mechanism for concentration. Data gap flagged for production pipeline. RD-F-066 n/a Utilization rate (lending protocols) Aerodrome is a DEX. No lending markets, no borrowing, no utilization rate. DeFiLlama data cache confirms borrow.present: false. RD-F-067 n/a Historical bad-debt events No lending mechanics; no bad-debt events possible in an AMM DEX. LP impermanent loss is borne individually, not socialized. DeFiLlama borrow.present: false. RD-F-068 n/a Collateralization under stress No collateral or debt mechanics. AMM DEX design confirmed by SPECIFICATION.md. Collateralization ratio concept does not apply. RD-F-069 n/a Algorithmic / under-collateralized stablecoin Aerodrome does not issue a stablecoin. AERO is a governance and emission token with a floating price; it is not pegged and not classified as algorithmic or under-collateralized stablecoin. Confirmed by SPECIFICATION.md and DeFiLlama oracle field (null — no stablecoin product). RD-F-070 n/a Empty cToken-style market (zero supply/borrow) NOT APPLICABLE — DEX, not a Compound V2 fork. Aerodrome is a ve(3,3) AMM (fork of Velodrome v2/Solidly) and a concentrated-liquidity AMM (fork of Uniswap v3 via Slipstream). No cToken-style lending markets, no totalSupply/totalBorrow accounting, no donation-attack vector. Critical ★ flag does not apply per taxonomy PD-024: 'Compound-fork-only: N/A for non-Compound-fork protocols.' RD-F-071 n/a Seed-deposit requirement for new market listing No lending market listings. Pool creation on Aerodrome via PoolFactory is permissionless for token pairs (subject to FactoryRegistry-approved factory combinations). The seed-deposit-for-market-listing concept is specific to cToken-style lending. Not applicable. RD-F-072 n/a Market-listing governance threshold No lending market listing governance threshold. Pool creation permissionless on Aerodrome; gauge listing (which allocates AERO emissions) requires ProtocolGovernor whitelisting via veAERO governance. Gauge governance is a Cat 2 concern, not Cat 4 market-listing threshold. RD-F-073 n/a Oracle-manipulation-proof borrow cap No borrowing; no per-asset borrow caps. Aerodrome core does not consume external price oracles (uses reserve ratios for AMM pricing; Slipstream emits TWAP but does not consume one for borrow enforcement). DeFiLlama API: oracle field null. RD-F-074 n/a ERC-4626 virtual-share offset (OZ ≥4.9) Aerodrome does not use ERC-4626 vault architecture. Aerodrome Pools LP positions are ERC-20 tokens (constant-product Solidly-style AMM); Slipstream positions are NFT-based (Uniswap v3-style). Neither is an ERC-4626 vault. The share-inflation attack this factor targets is not applicable. OZ version is 4.8.0 (per data cache) but ERC-4626 is not used. RD-F-075 n/a First-depositor / share-inflation guard Not applicable: first-depositor share-inflation attack requires fungible vault shares. Aerodrome Pools AMM uses standard MINIMUM_LIQUIDITY burn to address(0) on first LP mint (Solidly/Uniswap v2 pattern) — this is a structural guard by construction. Slipstream uses NFT positions (Uniswap v3-style), not fungible shares — inflation attack does not apply.
RD-F-065 green Liquidity depth per major asset Aerodrome is itself the liquidity venue; ~$387M of pool-side TVL on Base (DefiLlama API, May 2026 live read) is the depth. Primary pairs WETH/USDC, USDC/AERO, and major stablecoin pairs dominate the reserves. At this TVL scale on a single chain, 2% slippage depth for the dominant assets remains structurally ensured -- pool reserves are the protocol's own assets. Slipstream concentrated liquidity reduces effective depth at out-of-range ticks, but aggregate depth across tick ranges remains substantial. Exact 2%/5% slippage numbers not programmatically derived (Dune 403).
Operational history Yellow 24 15 of 15
RD-F-089 red Insurance coverage active No protocol-level insurance coverage confirmed. Nexus Mutual offers a 'Base DeFi Pass' that includes Aerodrome as a covered protocol — but this is user-purchased cover, not protocol-purchased protection. No Sherlock contest or coverage listing found. No Unslashed coverage found. Red = no active protocol-level coverage. RD-F-077 yellow Prior exploit count 3 distinct frontend/DNS incidents: 2023-11-28 (~$40K-$100K, Porkbun registrar), 2023-12-02 (same Porkbun attack class, second event), 2025-11-21 (~$700K, NameSilo insider). No smart-contract exploits. Yellow: multiple incidents with no full user recovery (2023 = no refund; 2025 = grant program announced, unconfirmed disbursement). Red requires ≥2 or any unrecovered loss — threshold met on count, but frontend-only nature with partial 2025 remediation lands yellow. RD-F-078 yellow Chronic-exploit flag (≥3 incidents) Incident count = 3 (2023-11-28, 2023-12-02, 2025-11-21), meeting the ≥3 chronic-count threshold. However, PD-022 CHRONIC badge requires ≥2 post-disclosure same-root recurrences — only 1 confirmed post-awareness recurrence (2025). Factor F078 scores yellow on count threshold being met; the rubric-level CHRONIC badge does not fire. RD-F-079 yellow Same-root-cause repeat exploit All 3 incidents share root-cause cluster 'DNS/domain hijack via registrar attack'. 2023 events used Porkbun social engineering; 2025 used NameSilo insider — same attack class. Yellow (not red) because: incidents are frontend-only with no protocol-layer SC compromise; team made partial mitigations between events (ENS mirrors, registrar migration). Green threshold (no repeat root cause) is not met. RD-F-080 yellow Days since last exploit Most recent incident: 2025-11-21. Days since as of 2026-05-04: 164 days. Yellow band: 90–365 days since last incident. RD-F-081 yellow Post-exploit response score 2025-11-21 incident response scored ~3/5: compensation = 2/5 (grant program, no direct refund, no confirmed disbursement); transparency = 3/5 (named root cause and attack mechanism); root-cause depth = 3/5 (insider named, mechanism described, limited forensics); recovery speed = 4/5 (wallet warnings in 2 min, full containment in 4h). Composite ~3/5 = yellow. RD-F-082 yellow Post-mortem published within 30 days 2025-11-21 (most recent): post-mortem report published by Aerodrome/Velodrome within ~30 days of incident (referenced in late-Nov/early-Dec coverage). Exact primary-source publish date not independently confirmed; summary available via incrypted.com. 2023 incidents: no post-mortem published. Yellow: most recent incident has a post-mortem (basic standard met) but timing unconfirmed at primary level; 2023 post-mortems absent. RD-F-084 yellow TVL stability (CoV over 90d) Estimated 90-day CoV ~0.18 (18%) from DeFiLlama API data. Current TVL $133.9M; 30-day trend +13.49%. Broader 18-month decline from $1B+ peak to ~$134M reflects significant TVL erosion, but the 90-day window shows moderate stability. CoV 0.15–0.35 = yellow. Medium confidence — daily series API returned cached data from earlier period; estimate derived from available data points. RD-F-083 gray Auditor re-engaged after last exploit All 3 incidents are frontend/DNS compromises — no smart contract code was exploited. Auditor re-engagement post-exploit is not applicable for infrastructure-layer attacks. No SC audit was warranted or conducted post-incident. FTI Consulting cited as containment partner for 2025 incident, not a formal SC auditor engagement. Gray = SC re-audit not applicable for this incident class.
RD-F-076 green Protocol age (days) Protocol launched 2023-08-28 (AERO token + VotingEscrow + Voter on Base). As of 2026-05-04, age = 613 days (~20.4 months). Green threshold: ≥365 days live.
RD-F-085 green Incident response time (minutes) 2025-11-21: MetaMask and Coinbase Wallet displayed phishing warnings within 2 minutes of first known malicious transaction. Team public alerts issued ~10:30 PM ET on Nov 21. Full containment within 4 hours. Green threshold: ≤60 minutes for most critical user-protective action (wallet warnings at 2 min).
RD-F-086 green Pause activations (trailing 12 months) No deliberate smart contract pause activations found in trailing 12 months. EmergencyCouncil (created 2025-10-08) holds gauge kill/revive powers per PERMISSIONS.md but no documented gauge emergency kills were identified. Swap pause function exists per PERMISSIONS.md but no Paused events reported. Green = 0 pause activations.
RD-F-087 green Pause > 7 consecutive days No pause events identified in trailing 12 months. No consecutive-pause-duration concern arises. Green = no pause >7 consecutive days in last 12 months.
RD-F-088 green Re-deployed to new addresses in last year No protocol-wide redeployment to new contract addresses in last 12 months. Slipstream launched April 2024 (outside 12-month window). Core Aerodrome Pools v1 contracts stable at original August 2023 addresses. Green = no redeployment in last 12 months.
RD-F-166 green Deprecated contracts still holding value No deprecated contracts identified. The data cache flag has_legacy_v1=true refers to AMM v1 (Aerodrome Pools) coexisting with Slipstream v3 CL — both are live active products, not deprecated surfaces. PERMISSIONS.md does not flag any contract as deprecated. No protocol announcements declaring contract deprecations were found. Green = deprecated contracts hold $0 / none identified.
Real-time signals Green 13 22 of 22
RD-F-105 yellow DNS/CDN/frontend hash drift 6B exploit-in-progress: DNS/CDN/frontend hash drift. Phase-2 signal; external monitoring stack not deployed. POSTURE IS HIGH RISK: three documented frontend/DNS compromises in ~21 months (2023 ×2, 2025-11-21). The 2025-11-21 NameSilo insider-threat attack involved DNSSEC removal and domain redirect to phishing site; ~$700K–$1M lost; 4-hour remediation window. ENS mirrors (aero.drome.eth.limo, aero.drome.eth.link) established as safer alternatives. Primary domain aerodrome.finance remains active and carries ongoing DNS attack surface. If monitoring were live, the Nov 2025 incident would have fired tier-A instantly. Scored yellow (not red) because signal is not actively firing today — but posture is red-adjacent and this is the highest-priority Cat 6 signal for this protocol. RD-F-109 yellow Social-media impersonation scam spike 6B exploit-in-progress: social-media impersonation scam spike. 'Claim Aerodrome Rewards' drainer documented by pcrisk.com — an active typosquat-promoted drainer targeting Aerodrome users via mistyped URLs. This is at minimum 1-2 impersonation accounts/sites (yellow tier per methodology). Social monitoring feed not formally configured; no evidence of a coordinated 5+ account campaign (which would trigger red). Scored yellow based on confirmed typosquat drainer evidence. RD-F-090 gray Mixer withdrawal → protocol interaction 6A precursor: mixer→protocol interaction. CTI feed (Chainalysis/TRM) not publicly accessible for dry-run. Deployer funded via Synapse Bridge (clean). No public reporting of mixer-funded wallet interactions with Aerodrome core contracts. Signal requires CTI feed configured; not available at dry-run. RD-F-091 gray Partial-drain test transactions 6A precursor: partial-drain test transactions. Pattern matcher not deployed. No public documentation of pre-strike test-transaction patterns against Aerodrome core contracts. Historical attacks were frontend/DNS social engineering, not on-chain pre-strike probes. RD-F-092 gray Unusual mempool pattern from deployer wallet 6A precursor: unusual mempool pattern from deployer wallet. Deployer 0xe83f922c... shows deploy activity at launch (Aug 2023) and Slipstream launch (Apr 2024). No post-launch unusual activity documented. Deployer wallet not registered in monitoring config for dry-run. RD-F-093 gray Abnormal gas-price willingness from attacker wallet 6A precursor: abnormal gas-price willingness from attacker wallet. Mempool monitoring not configured. No specific high-gas-priority-fee attacker wallet interactions with Aerodrome documented. Base chain gas prices are generally low. No evidence of MEV race activity against Aerodrome. RD-F-094 gray New contract with similar bytecode to exploit template 6A precursor: new contract with similar bytecode to exploit template. Bytecode similarity index not maintained for dry-run. No public reports of exploit-template contracts deployed targeting Aerodrome (Solidly/Uniswap v3 class). On-chain new-deploy sweep not executed. RD-F-095 gray Known-exploit function-selector replay 6A precursor: known-exploit function-selector replay. Selector pattern index not maintained. No public reports of selector-replay attacks on Aerodrome. Both Solidly and Uniswap v3 exploit patterns are known but no replay attempt documented for this protocol. RD-F-096 gray New ERC-20 approval to unverified contract from whale 6A precursor: new ERC-20 approval to unverified contract from whale. Whale list and approval monitoring not configured. No specific public reports. DEX-native approvals to router contracts are routine and would require careful filtering. RD-F-097 gray Sybil surge of identical-pattern transactions 6A precursor: sybil surge of identical-pattern transactions. Sybil clustering not deployed. veAERO lock requirement (tokens must be locked to vote) reduces flash-loan governance sybil risk. Gauge vote manipulation via sybil is a theoretical ve(3,3) risk but no documented instance for Aerodrome found. Signal not configured. RD-F-099 n/a Oracle price deviation >X% from secondary 6B exploit-in-progress: oracle price deviation. Not applicable — Aerodrome does not consume external price oracles (Chainlink/Pyth) for core operations. Aerodrome Slipstream emits TWAP data as a provider; it does not ingest external price feeds. The 16 Chainlink feeds in data cache are Base-chain feeds associated with protocols that use Aerodrome as a liquidity source, not Aerodrome itself consuming them. Per profile §7: oracle role is provider only. RD-F-101 gray Large governance proposal queued 6B exploit-in-progress: large governance proposal queued. ProtocolGovernor (OZ Governor) exists by design per PERMISSIONS.md but deployed contract address not located (data cache governance.governor_address: null). No Snapshot space (snapshot_space: null). Signal cannot be configured without governor address. Governance event monitoring not possible. RD-F-102 gray Admin/upgrade transaction in mempool 6B exploit-in-progress: admin/upgrade tx in mempool. Phase-2 signal; mempool listener not deployed at v1 launch. Team multisig 0xE6A41fE61E7a1996B59d508661e3f524d6A32075 executed tx at block 45357516 (2026-04-29). No timelock exists (timelock_address: null in data cache), which means admin actions always appear as 'unexpected' mempool transactions — elevated expected FP rate when this signal goes live. RD-F-103 n/a Bridge signer-set change proposed/executed 6B exploit-in-progress: bridge signer-set change. Not applicable — Aerodrome has no bridge surface. Protocol is Base-native only (layerzero.present: false; has_bridge_surface: false per data cache and profile §7). No cross-chain validator or signer set exists. RD-F-106 n/a Cross-chain bridge unverified mint pattern 6B exploit-in-progress: cross-chain bridge unverified mint pattern. Not applicable — no bridge surface. Aerodrome is Base-native only; no cross-chain message contracts exist. RD-F-107 gray Admin EOA signing from new geography/device 6B exploit-in-progress: admin EOA signing from new geography/device. Requires team opt-in signing telemetry — practically always gray per methodology template. No team integration exists for Aerodrome. Off-chain telemetry not available. RD-F-108 gray GitHub force-push to sensitive branch 6B exploit-in-progress: GitHub force-push to sensitive branch. GitHub monitoring not configured for dry-run. Aerodrome has public GitHub repos (aerodrome-finance/contracts, aerodrome-finance/slipstream). Last commit 2025-12-18 (data cache). No public reports of unauthorized pushes to main/production branches. RD-F-110 gray Unusual pending/executed proposal ratio 6B exploit-in-progress: unusual pending/executed proposal ratio. ProtocolGovernor deployed address not located (data cache governance.governor_address: null). Governor event monitoring cannot be configured. No on-chain governor address available to subscribe to ProposalCreated/ProposalQueued events. RD-F-182 gray Security-Council threshold reduction (RT) 6B exploit-in-progress (F182 batch-24): Security-Council threshold reduction (RT). Emergency Council multisig 0x99249b10593fCa1Ae9DAE6D4819F1A6dae5C013D and team multisig 0xE6A41fE61E7a1996B59d508661e3f524d6A32075 exist. Signer counts and thresholds unknown (Safe API 403, data cache safe_multisigs: []). Baseline M/N cannot be established without this data. Emergency Council created 2025-10-08 (207 days ago) — this was a new multisig creation event, but it predates this assessment window and is not flagged in public reporting as suspicious. ChangedThreshold/AddedOwner/RemovedOwner event monitoring not configured for dry-run.
RD-F-098 green TVL anomaly — % drop in <1h 6B exploit-in-progress: TVL anomaly. TVL at $133.9M, +1.13% 1d / +13.49% 30d (data cache 2026-05-04). No drop anomaly in progress. T-09 threshold: >30% TVL drop vs 30d median in 60-min window. Current state stable and growing. Signal not firing.
RD-F-100 green Flash loan >$10M targeting protocol tokens 6B exploit-in-progress: flash loan >$10M targeting protocol tokens. Signal not firing. Flash-loan governance attack blocked by veAERO lock mechanism (spot balance does not confer voting power). Flash-loan AMM arbitrage is routine and suppressed by T-09 spec (clean round-trip arb rule). No documented flash-loan exploit against Aerodrome. Slipstream has no lending markets or oracle-consumption role for flash-loan attackers to exploit.
RD-F-104 green Stablecoin depeg >2% on shared-LP venue 6B exploit-in-progress: stablecoin depeg on shared-LP venue. Signal not firing. Aerodrome holds stablecoin LP pairs (USDC/WETH, USDC/USDbC etc). No major stablecoin depeg active as of 2026-05-04; USDC and USDT within heartbeat tolerances per Chainlink feed data. Threshold: >2% depeg sustained >30 min AND protocol exposure ≥5% TVL.
Dev identity & insider risk Green 17 16 of 16
RD-F-111 yellow Team doxx status Team is 'consistent-pseudonym-with-track-record' evolving to partially real-name. CEO Alex Cutler publicly identified since Nov 2025 with conference appearances, podcast interviews, and IQ.wiki profile. Stas partially identified via GitHub commit metadata (stas@nerd.ro). Jack Dishman publicly identified as Clanker CEO. 'Zoomer' (ethzoomer) remains pseudonymous. Protocol operated fully pseudonymously 2022 through Nov 2025. RD-F-112 yellow Team public accountability surface Alex Cutler has high accountability surface: multiple podcast appearances (Messari, Thinking Crypto, Bankless), EthCC keynote video, Blockworks speaker page, IQ.wiki. Stas: GitHub history + commit metadata only. Jack Dishman: Clanker CEO public role. Zoomer/ethzoomer: pseudonym only. Overall: CEO-anchored; remainder pseudonymous-with-track-record. RD-F-113 yellow Team other-protocol involvement history Core team: Velodrome Finance (Optimism 2022) → Aerodrome Finance (Base 2023). Same team, same codebase lineage, no prior rug launches for current members. Notable: ex-team-member Gabagool stole $350K from Velodrome operational wallet in Aug 2022, swapped to ETH via Tornado Cash, funds recovered. Gabagool is NOT on current Aerodrome team. Jack Dishman launched Clanker post-Velodrome. RD-F-115 yellow Prior rug/exit-scam affiliation Ex-Velodrome team member Gabagool (not on current Aerodrome team) committed insider theft of $350K from Velodrome's operational wallet in August 2022, swapping funds to ETH and sending to Tornado Cash. Funds were recovered after confrontation. Gabagool departed; identity later exposed at a NYC Clanker event in May 2025. Current core team (Alex Cutler, Stas, Jack Dishman, Zoomer) has no verified prior rug or exit-scam affiliation. RD-F-117 yellow ENS/NameStone identity bound to deployer Deployer 0xe83f922c34a1962e9ae9f52b59e18239764f2818 has NO ENS reverse record bound. ENS API lookup returns name: null. No NameStone binding found either. Protocol uses aerodrome.finance domain (primary) and ENS-based aliases (aero.drome.eth.limo, aero.drome.eth.link) for frontend safety, but these are not bound to the deployer EOA itself. RD-F-121 yellow Contributor OSINT depth score Curator OSINT depth scores: Alex Cutler 4/5 (IQ.wiki, Blockworks, multiple podcasts, conference talks). Stas 2/5 (GitHub history, commit metadata, incident report byline). Jack Dishman 3/5 (Clanker CEO public role, event exposure). Zoomer/ethzoomer 1/5 (GitHub handle only). Overall team OSINT depth: moderate, anchored by CEO. RD-F-123 yellow Sudden admin-rescue/ACL change without discussion Emergency Council multisig 0x99249b10593fCa1Ae9DAE6D4819F1A6dae5C013D created 2025-10-08, 26 months post-launch. New privileged role: kill/revive gauges, activate/deactivate managed NFTs, set pool name/symbol. No GitHub issue, PR, Snapshot proposal, governance forum post, or public announcement found preceding this creation within ±14 days. Mitigating factors: (1) Emergency Council is documented in PERMISSIONS.md and SPECIFICATION.md as planned architectural feature; (2) Aerodrome has no public governance forum (structural absence); (3) no timelock removal or threshold reduction accompanied the event (Drift-class precursor pattern absent); (4) role is scoped to gauge/NFT lifecycle, not full admin-rescue or token mint. YELLOW not RED: pre-described planned role, not sudden unannounced security-council downgrade. RD-F-122 n/a Contributor paid to DPRK-cluster wallet Cannot be assessed at OSINT tier. Team compensation is off-chain (no visible on-chain salary/payment streams beyond team multisig). The team multisig 0xE6A41fE61E7a1996B59d508661e3f524d6A32075 shows no DPRK-labeled interactions in visible BaseScan history, but contributor-wallet-level DPRK routing requires paid Chainalysis cluster feed. Structural data gap per process-learnings F122 note. RD-F-184 gray Real-capital social-engineering persona No curator flag for a real-capital social-engineering persona (>=USD 1M deposits to build credibility) by any team contributor or external integrator for Aerodrome. Reference comparator: Drift Protocol UNC4736 (DPRK) 6-month conference/in-person build-up + Solana durable-nonce pre-signing. No analogous pattern identified for Aerodrome contributors. Per process-learnings: mark GRAY + note Drift comparator; cannot confirm absence of something that leaves no public trace by design. M-only OSINT; P1 priority; requires curator trigger signal.
RD-F-114 green Deployer address prior on-chain history Deployer 0xe83f922c34a1962e9ae9f52b59e18239764f2818 shows 'normal-dev-history': funded once by Synapse Bridge (2023-08-17), used exclusively for Aerodrome contract deployments and initialization (set team roles, deploy ProtocolGovernor Oct 2023). 732 total transactions as of Sep 2025 per BaseScan. No prior rug history found via OSINT or hacksdatabase.
RD-F-116 green Contributor tenure at admin-permissioned PR Most recent admin-permissioned code change visible: 'Switch to ENS records for the license date' by stas (Dec 2025, SHA 1ba30815). Stas has contributed since at least Aug 2023 (>2 years tenure). Top contributors pegahcarter (54 commits) and simplyoptimistic (50 commits) both tenure-long contributors since protocol launch. No recent-joiner or low-tenure contributor is handling admin-permissioned changes.
RD-F-118 green Handle reuse across failed/rugged projects No social handles (X: @wagmiAlexander for Alex Cutler, @AerodromeFi for protocol) found associated with prior rugged/failed projects under different aliases. GitHub handle 'ethzoomer' (Zoomer) has 1 contribution; no prior failed project linkage found. OSINT search for 'Aerodrome Finance rug exit scam team founders' returned no relevant results implicating handle reuse.
RD-F-119 green Commit timezone consistent with stated geography Commit timezone distribution for aerodrome-finance/contracts: predominantly European business hours (UTC+1/UTC+2). Stas (stas@nerd.ro): European timezone. Pedro Valido and Ricardo Airton: European/Iberian timezone. simplyoptimistic: UTC+10 (AEST). No commits clustered in Pyongyang timezone (UTC+9) or anomalous off-hours pattern. DPRK-implant weak signal absent.
RD-F-120 green Video-off/voice-consistency flag Alex Cutler has appeared in multiple video and audio interviews with video-on: EthCC keynote (video published on YouTube), DECYPHER PODCAST (YouTube), Thinking Crypto podcast. No video-off flag or voice inconsistency noted in any public record. Other team members remain pseudonymous so cannot be assessed for this factor. Only the publicly identified team member (CEO) assessed.
RD-F-124 green Deployer wallet mixer-funded within 30 days Deployer 0xe83f922c34a1962e9ae9f52b59e18239764f2818 was funded by Synapse Bridge on 2023-08-17 (11 days before 2023-08-28 deploy). Synapse is a cross-chain bridge — not a mixer (not Tornado Cash, Railgun, or any mixer-labeled service). No mixer interactions found on the deployer within the 30-day pre-deploy window per BaseScan transaction history. RD-F-124 threshold: mixer-funded within 30 days. Finding: bridge-funded, not mixer-funded. CLEAN.
RD-F-125 green Deployer linked within 3 hops to DPRK/Lazarus No DPRK/Lazarus cluster proximity found. 1-hop funder (Synapse Bridge) is not DPRK-labeled in any public Chainalysis report or OFAC SDN list. OSINT search 'Velodrome Aerodrome team DPRK Lazarus North Korea developer' returned zero relevant results. Team members (Alex Cutler, Stas, Jack Dishman, Zoomer) not identified in any DPRK-cluster research. OFAC SDN list: no designations for identified addresses. No DPRK/Lazarus proximity confirmed through available OSINT methodology.
Fork / dependency lineage Green 17 10 of 10
RD-F-129 yellow Code divergence from upstream (%) Cannot run git diff via WebFetch. (A) Aerodrome Pools vs Velodrome v2: profile §5 describes 'moderate-to-substantial' divergence (AERO tokenomics, two-governor structure, emission schedule all modified). Estimated 20–50% divergence. (B) Slipstream vs Uniswap v3: core tick math unchanged; gauges/bribe additions are new (~20–40% periphery divergence). Composite yellow (at least one codebase in 20–50% range). RD-F-131 yellow Fork retains upstream audit coverage (A) Aerodrome Pools: upstream Spearbit audit (Velodrome v2) — Aerodrome-specific delta-audit not located. Upstream coverage assumed; delta unconfirmed. (B) Slipstream: Uniswap v3 extensively audited + fresh ABDK + ToB audits — full fresh coverage. Composite yellow: one codebase uncertain (A), one green (B). RD-F-132 yellow Fork has different economic parameters than upstream (A) Aerodrome Pools: different emission schedule (15M AERO/epoch decaying 1%/epoch vs Velodrome VELO), 5% team allocation, two-governor structure. These Aerodrome-specific changes are not covered by a verified delta-audit. (B) Slipstream: new gauge/bribe mechanisms not in Uniswap v3; ABDK and ToB specifically audited these additions. Yellow for (A) due to delta-audit absence; green for (B). Composite yellow. RD-F-133 yellow Dependency manifest uses unpinned versions Aerodrome Pools package.json: @openzeppelin/contracts pinned at exact '4.8.0' (not ^). Other devDependencies use ^ but are dev-only. OZ is pinned. Slipstream uses git submodules (no ^ semantics); submodule commit SHAs not confirmed from WebFetch. Yellow pending Slipstream SHA confirmation. RD-F-135 yellow Shared-library version with known-vuln status OZ 4.8.0 has active GHSA advisories: (1) CVE-2023-40014 (ERC2771Context + short calldata, GHSA-g4vp-m682-qqmp, medium severity, affects 4.0–4.9.2, fixed in 4.9.3); (2) GHSA-93hq-5wgc-jc82 (GovernorCompatibilityBravo calldata trimming, moderate, affects 4.3–4.8.2, fixed in 4.8.3); (3) CVE-2023-30541 (TransparentUpgradeableProxy selector clash, affects 3.2–4.8.2, fixed in 4.8.3). No high/critical severity advisory for OZ 4.8.0. Yellow (medium-severity advisories exist; none directly exploitable in Aerodrome's specific OZ usage pattern for AMM).
RD-F-126 green Is-a-fork-of Dual lineage explicitly declared. (A) Aerodrome Pools: SPECIFICATION.md states protocol is 'inspired by Solidly' and is a fork of Velodrome v2. (B) Slipstream repo description: 'adapted from UniswapV3's core and periphery contracts.' Both upstreams clearly documented.
RD-F-127 green Upstream patch not merged No evidence of outstanding Velodrome v2 security patches not merged into Aerodrome (shared team makes co-maintenance plausible). Uniswap v3 core is a frozen immutable contract with no active security patches. No active upstream advisory found in web search.
RD-F-128 green Upstream vulnerability disclosure (last 90d) No active GitHub Security Advisories found for velodrome-finance/contracts or Uniswap/v3-core in the last 90 days. Uniswap v3 is frozen/immutable — no new vuln disclosures expected.
RD-F-130 green Fork depth (generations from original audit) (A) Aerodrome Pools: Solidly → Velodrome v2 (Spearbit audited) → Aerodrome. Depth=1 from Velodrome v2 Spearbit audit. (B) Slipstream: Uniswap v3 (extensively audited) → Aerodrome Slipstream. Depth=0 from Uniswap v3 audit. Both codebases at depth 0–1 from an audited protocol.
RD-F-134 green Dependency had malicious-release incident (last 90d) OZ 4.8.0 npm package: no malicious-release advisory in GHSA in last 90 days. Forge-std, solidity-lib: no active malicious-release advisories found. Data cache rekt.incidents: [].
Post-deploy hygiene & change mgmt Green 10 13 of 13
RD-F-139 yellow Post-audit code changes without re-audit Aerodrome Pools (core AMM): minimal post-2023-audit changes (license/ENS only in 2025). Aerodrome Slipstream: substantial functional additions post-April-2024 audits (ABDK + Trail of Bits + Offside Labs): dynamic fee module (Feb 2025), redistributor infrastructure (Oct-Nov 2025), gauge caps, MEV auction integration (MetaDEX03, Nov 2025), gauge unstake feature (Apr 2026). No confirmed re-audit found for these Slipstream additions. Yellow (not red) because Uniswap v3 core math is immutable and was audited; risk is in the gauge/reward layer additions. RD-F-143 yellow Reinitializable implementation (no _disableInitializers) Minter.sol has an initialize(AirdropParams) function protected only by a manual 'initialized' bool flag (not OZ initializer modifier). Constructor does NOT call _disableInitializers(). Core contracts (VotingEscrow, Voter, PoolFactory) are non-proxy and have no initialize function — reinit risk does not apply to them. Minter is also not behind a proxy (directly deployed), limiting practical reinit exposure. Yellow: non-standard pattern but low practical risk given non-proxy deployment. RD-F-146 yellow New contract deploys in last 30 days Slipstream v3 infrastructure (GaugeFactory 0x385293CaE378C813F16f0C1334d774AdDDf56AbB) is actively deploying new gauge contracts in the last 30 days. GitHub shows Apr 2026 commits to slipstream (gauge unstake feature). Fresh attack surface from new gauge deployments is present. RD-F-136 gray Deployed bytecode matches signed release tag No signed release tags found in aerodrome-finance/contracts or aerodrome-finance/slipstream repositories. Build-to-bytecode reproducibility not confirmed from public sources. Most recent meaningful commits are 2025 license updates (core) and feature additions (slipstream). RD-F-145 gray Deployed bytecode reproducibility OZ v4.8.0, Solidity 0.8.19, Foundry build system confirmed from data cache. No CI artifact comparison or reproducible build verification performed. No signed release tags in repo. RD-F-185 n/a Bridge rate-limiter / chain-pause as positive mitigant Aerodrome is a DEX, not a bridge. Bridge rate-limiter and chain-pause mechanisms are not applicable to a DEX protocol. No bridge surface present (confirmed: layerzero.present=false in data cache).
RD-F-137 green Upgrade frequency (per 90 days) Core AMM contracts (VotingEscrow, Voter, Minter, PoolFactory, GaugeFactory, FactoryRegistry) are non-upgradeable — no proxy pattern. Zero proxy upgrade events possible. Slipstream deploys new factory instances at new addresses (v1→v2→v3) rather than upgrading existing proxy implementations.
RD-F-138 green Hot-patch deploys without timelock (last 30 days) Core contracts not upgradeable — no hot-patch mechanism. Slipstream introduces new factory contracts at new addresses rather than upgrading existing ones. No timelock-bypassing upgrade detected in last 30 days.
RD-F-140 green Fix-merged-but-not-deployed gap No open vulnerability PRs with undeployed fixes identified in either main repo. Recent commits are feature additions and license updates, not security patches awaiting deployment.
RD-F-141 green Test-mode parameters in deploy No test-mode parameters in production. Team rate starts at 5% (500 bps = MAXIMUM_TEAM_RATE) — this is the designed starting emission allocation, not a test artifact. Admin was transferred to multisig at or before launch.
RD-F-142 green Storage-layout collision risk across upgrades Core contracts are non-upgradeable (VotingEscrow, Voter, Minter, PoolFactory, GaugeFactory, FactoryRegistry — no proxy pattern). Storage layout collision risk does not apply. Slipstream deploys new factory instances at new addresses — no UUPS/Transparent proxy storage layout to check.
RD-F-144 green CREATE2 factory permits same-address redeploy PoolFactory uses Clones.cloneDeterministic() with salt derived from token addresses and stable flag — unique addresses per pool pair. No redeploy-to-same-address vulnerability identified.
RD-F-168 green Stale-approval exposure on deprecated router Router (0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43) is the current active router. No deprecated routers with live user approvals identified. No wind-down notice for prior versions found. Single canonical router in GitHub README.
Cross-chain & bridge Gray 0 12 of 12
RD-F-147 n/a Protocol has bridge surface Aerodrome is Base-only. No bridge surface. Profile §7: has_bridge_surface: false, is_a_bridge: false. Data cache: layerzero.present: false. RD-F-148 n/a Bridge validator count (M) No bridge; no validator set. Profile §7 has_bridge_surface: false. RD-F-149 n/a Bridge validator threshold (k-of-M) No bridge; no validator threshold. Profile §7 has_bridge_surface: false. RD-F-150 n/a Bridge validator co-hosting No bridge; no validator co-hosting risk. Profile §7 has_bridge_surface: false. RD-F-151 n/a Bridge ecrecover checks result ≠ address(0) [★ CRITICAL — not_applicable, not red] No bridge architecture. ecrecover validation check is irrelevant. Profile §7 has_bridge_surface: false. RD-F-152 n/a Bridge binds message to srcChainId No bridge; no srcChainId binding needed. Profile §7 has_bridge_surface: false. RD-F-153 n/a Bridge tracks nonce-consumed mapping No bridge; no nonce-consumed mapping needed. Profile §7 has_bridge_surface: false. RD-F-154 n/a Default bytes32(0) acceptable as valid root [★ CRITICAL — not_applicable, not red] No bridge architecture. bytes32(0) default-value root acceptance (Nomad bug class) is irrelevant. Profile §7 has_bridge_surface: false. RD-F-155 n/a Bridge validator-set rotation recency No bridge; no validator rotation recency. Profile §7 has_bridge_surface: false. RD-F-156 n/a Bridge uses same key custody for >30% validators No bridge; no key custody concentration risk. Profile §7 has_bridge_surface: false. RD-F-157 n/a Bridge TVL per validator ratio No bridge; no TVL-per-validator ratio. Profile §7 has_bridge_surface: false. RD-F-179 n/a LayerZero OFT DVN config (count, threshold, diversity) No LayerZero OFT integration. Data cache layerzero.present: false, oapp_address: null, dvn_addresses: []. F179 applies only to LayerZero OFT integrations per batch-24 definition. Profile §7 has_bridge_surface: false.
Threat intelligence & recon Yellow 44 8 of 8
RD-F-161 red Protocol-impersonator domain registered (typosquat) Cat 11: protocol-impersonator domain registered (typosquat). Active typosquat drainer documented: 'Claim Aerodrome Rewards' scam promoted through mistyped/typosquatted URLs targeting Aerodrome users. Documented by pcrisk.com as of assessment date. Registration date of specific domains not confirmed (domain monitoring feed not deployed), but the drainer is actively documented and live. Threshold: typosquat domain registered in last 90 days AND active — evidence supports 'active' condition; temporal condition unconfirmable but highly probable given active documentation. Scored red based on confirmed active impersonation threat. RD-F-163 yellow Avg attacker reconnaissance time for peer-class protocols Cat 11: avg attacker reconnaissance time for peer-class protocols (DEX). DEX class spans two recon patterns: (1) flash-loan AMM manipulation (C2 cluster) — near-instant, <1 day recon; (2) social engineering / DNS class (C15 cluster, Aerodrome's documented attack surface) — days to weeks of planning. Aerodrome's three documented incidents were all DNS/registrar class requiring social-engineering setup time (planning the NameSilo insider approach, researching Porkbun registrar controls). Weighted assessment: yellow (7–29 days for the DNS-attack subclass which is Aerodrome's demonstrated vector). The near-instant flash-loan subclass is less relevant given veAERO lock mechanism mitigates governance flash-loan attacks. RD-F-158 gray Known-threat-actor cluster has touched protocol Cat 11: known-threat-actor cluster has touched protocol. CTI feed (Chainalysis/TRM private clusters) not publicly accessible for dry-run. The three historical frontend attacks (2023 ×2, 2025-11-21) were attributed to domain registrar social engineering / NameSilo insider threat — not known on-chain threat-actor clusters interacting with smart contracts. No public threat-intelligence report attributes Lazarus/APT38/known DeFi attacker clusters to Aerodrome contract interactions. Public-proxy observation: negative. Signal requires CTI feed. RD-F-159 gray Attacker wallet pre-strike probe (low-gas failing txs) Cat 11: attacker wallet pre-strike probe (low-gas failing txs). Mempool + on-chain failed-tx scan not configured. No public reporting of failed-tx probe patterns against Aerodrome core contracts. Historical attacks were frontend/DNS class, not on-chain pre-strike probe patterns. CTI feed required for flagged-wallet identification. RD-F-162 gray Known-exploit-template selector deployed by any address Cat 11: known-exploit-template selector deployed by any address. Selector-pattern index not maintained for dry-run. No public reporting of exploit-template contracts deployed against Aerodrome (Solidly or Uniswap v3 class). On-chain new-deploy sweep not executed. No public reports of similar-bytecode contracts targeting Aerodrome pools. RD-F-164 gray Leaked credential on paste/sentry site Cat 11: leaked credential on paste/sentry site. Paste monitoring not configured for dry-run. GitHub security_md_present: false (data cache) — no published security policy. No public reports of Aerodrome API key or infrastructure credential leaks. The 2025-11-21 NameSilo attack was an insider threat at the registrar, not an Aerodrome credential leak (no API key exposure was the attack vector). RD-F-165 gray Protocol social channel has scam-coordinator flag Cat 11: protocol social channel has scam-coordinator flag. Aerodrome operates @AerodromeFi on X/Twitter; Discord not publicly located. Curator scam watchlist (ScamSniffer, Chainabuse) not available for dry-run. No specific reports of Aerodrome Discord admin confirmed as scam coordinator. The 'Claim Aerodrome Rewards' drainer is external to official channels. No public Chainabuse/ScamSniffer flagging of official Aerodrome social accounts found.
RD-F-160 green GitHub malicious-dependency incident touching protocol deps Cat 11: GitHub malicious-dependency incident touching protocol deps. OZ v4.8.0 confirmed (data cache oz_contracts_version). No active GHSA malicious-release advisory for OZ 4.8.0 as of 2026-05-04. Foundry-based build (foundry_toml_present: true per data cache). OZ 4.8.0 is a well-established version without known malicious-release history. No active advisory affecting Aerodrome's known dependency set based on public GHSA search.
Tooling / compiler / AI Green 0 5 of 5
RD-F-172 gray Repo shows AI-tool co-authorship in critical files No AI-tool co-authorship (GitHub Co-authored-by: copilot or similar) found in repository inspection. Cannot confirm absence without inspecting full commit history via GitHub API. Absence of evidence is not affirmative confirmation. Gray (cannot verify programmatically without GitHub API commit scan).
RD-F-170 green Solc version used (known-bug versions flagged) Aerodrome Pools: solc 0.8.19+commit.7dd6d404 confirmed via BaseScan exact-match verification for AERO token, Voter, VotingEscrow, Pool contracts. 0.8.19 (Feb 2023) — no high/critical known compiler bugs for this version in the context of standard AMM patterns. Slipstream: solc 0.7.6 confirmed via foundry.toml — deliberate choice for Uniswap v3 bit-exact equivalence. 0.7.6 has lower-severity known bugs (ABI tuple encoding) not applicable to Uniswap v3 tick math patterns reviewed by ABDK/ToB.
RD-F-171 green Bytecode similarity to audited upstream with behavior deviation Slipstream is a declared fork of Uniswap v3 with documented additions (gauges/bribes). No behavioral deviation from audited upstream detected in audit findings. ABDK and ToB specifically reviewed for correctness relative to Uniswap v3 specification. No AI-copy-risk pattern (bytecode similarity with behavior deviation) identified.
RD-F-173 green Team self-disclosure of AI-generated Solidity No public team disclosure of AI-generated Solidity in security-critical paths found in GitHub repo, Twitter/X, or web search. Protocol documentation (SPECIFICATION.md, PERMISSIONS.md) shows no AI-generated code claims.
RD-F-174 green Dependency tree uses EOL Solidity version Aerodrome Pools: solc 0.8.19 — supported, not EOL. Slipstream: solc 0.7.6 — older version but deliberately chosen for Uniswap v3 equivalence; the Uniswap v3 core codebase itself runs on 0.7.6 and is not considered an EOL risk given its frozen immutable nature and extensive audit coverage at that version. No forward-compat patch needed for the immutable Slipstream CLPool (no future upgrades to deploy).
Response & disclosure hygiene Yellow 33 4 of 4
RD-F-176 red Disclosure SLA public No disclosure SLA (e.g., '72h acknowledgment') published by Aerodrome Finance. Immunefi Velodrome program does not state a custom acknowledgment SLA beyond standard Immunefi terms. aerodrome.finance/security returned 403. No docs page with stated response commitment found. Red = no SLA published. RD-F-175 yellow Disclosure channel exists Velodrome Immunefi bug bounty (https://immunefi.com/bug-bounty/velodromefinance/) serves as de facto disclosure channel with $100K max payout and 54 assets in scope. Aerodrome contracts are NOT explicitly named in scope (Slipstream README states 'Velodrome has a live bug bounty hosted on Immunefi' — implied shared coverage). No SECURITY.md or security@ contact exists. No dedicated Aerodrome Immunefi program. Yellow: channel exists but scope ambiguity for Aerodrome-specific Base contracts; no active-monitoring evidence.
RD-F-177 green Prior known-ignored disclosure No evidence that a security vulnerability was reported to the Aerodrome team and ignored prior to exploitation. All 3 incidents are external DNS/infrastructure attacks not addressable via vulnerability disclosure. No post-mortem references a pre-disclosed ignored warning. Green = no evidence of ignored disclosure.
RD-F-178 green CVE/GHSA advisory issued against protocol No CVE or GHSA advisory found for Aerodrome Finance or its codebases. GitHub aerodrome-finance/contracts repo shows 0 published security advisories. Web search for 'Aerodrome Finance CVE GHSA' returned no results. Green = no advisory, or all advisories patched.
rubric_version v1.7.0 graded_at 2026-05-12 04:38:07 factors 184 protocol aerodrome