DeFiPunk'd

Curve Finance

3 deployments · $1.8B aggregate TVL · Dexs

Deployments

Each deployment is rated independently. Pick one to see its rating, risk analysis, and stage.

TVL $1.6B
Type Dexs
Chains Ethereum, Arbitrum, Fraxtal, Base, Etherlink +25
View on DeFiLlama ↗
Control criteria
Upgradeability Mixed Bug bounty immunefi.com Governance forum gov.curve.finance Docs docs.curve.finance
About

Curve DEX is an automated market maker (AMM) for stablecoin and pegged-asset swaps on Ethereum and 28 other chains, where users swap tokens or provide liquidity to earn trading fees and CRV emissions. Stableswap pools (3pool, FRAX/USDC, etc.) use a hybrid constant-sum/constant-product invariant for low-slippage stablecoin trades; Cryptoswap and Tricrypto pools use a dynamic-peg invariant with internal EMA price tracking for volatile-asset pairs; Stableswap-NG adds optional per-pool rate oracles for rate-bearing tokens (wstETH, sDAI, cbETH) and dynamic fees. Pools are immutable and deployed permissionlessly via blueprint factories. Note: the Curve Finance umbrella also includes crvUSD (the LLAMMA-based stablecoin) and Curve Llamalend (lending markets) — these are separate DeFiLlama protocols with their own external-oracle dependencies and are not in scope for this curve-dex assessment.

Risk analysis

One card per dimension, sorted by severity. Only Verifiability and Autonomy carry automated signals in Phase 0. See methodology for scope.

Audit a dimension yourself · DEFI@home Contribute an LLM-run assessment — any model, any dimension. Three agreeing runs merge automatically into the public record.

DEFI@home is a distributed audit network modeled on SETI@home: instead of CPU cycles, it crowdsources LLM reasoning. Paste a slice prompt into Claude, ChatGPT, Gemini, or any browsing-capable model, and submit the JSON output as a pull request. The quorum bot merges it once ≥3 independent runs (from different models) reach the same grade — no single model, and no single contributor, can move the needle alone. How it works →

  • Address discovery 4 addresses on file · 1 run Submit run ↗
  • Verifiability ✓ 3/3 models agree AI-only weak green — only 1/3 sources have a public chat share link; total support weight 0.13 below confidence floor (1.5) Submit run ↗
  • Control ✓ 3/3 models agree AI-only weak green — only 1/3 sources have a public chat share link; total support weight 0.24 below confidence floor (1.5) Submit run ↗
  • Ability to exit ✓ 3/3 models agree AI-only weak green — only 1/3 sources have a public chat share link; total support weight 0.20 below confidence floor (1.5) Submit run ↗
  • Autonomy ✓ 3/3 models agree AI-only weak green — weak consensus margin; total support weight 0.93 below confidence floor (1.5) Submit run ↗
  • Open Access ✓ 3/3 models agree AI-only weak green — only 1/3 sources have a public chat share link; total support weight 0.12 below confidence floor (1.5) Submit run ↗
  • Audit all 5 dimensions · one prompt Submit run ↗
  1. Verifiability tentative 3/3 models agree AI-only 1/3 with chat share link
    Curve DEX pool contracts are verified Vyper bytecode on Etherscan, factory-created pools auto-verified, recognized-firm audits cover StableSwap-NG / Tricrypto-NG / Router / GaugeController; immutable Vyper deployments structurally bound post-audit drift to near zero
    Verdict

    Choosing green because the deployed fund-holding contracts are verified Vyper sources on Etherscan (V1/V6 satisfied, no proxy/implementation gap on cores), the public curvefi/* monorepos contain matching source code at pinned head SHAs (V2 satisfied modulo per-deployment commit pinning), and recognized firms (Trail of Bits, ChainSecurity, MixBytes, Quantstamp, Statemind) audited each major component including the most recent crvUSD/Lending lines — published at docs.curve.finance/user/security/audits (V3/V4 satisfied). Post-audit drift on immutable cores is structurally close to zero (V5 satisfied). The empty protocol.audit_links in the snapshot input is a metadata-pinning gap (audits are discoverable from the official docs and the curvefi GitHub org), not a verifiability gap on the protocol side.

    Steelman argument
    Steelman argument All major fund-holding contracts are either verified Vyper sources directly visible on Etherscan or proxies whose implementations are independently verified; recognized firms (Trail of Bits, ChainSecurity, MixBytes, Quantstamp, Statemind) audited every major component — DAO, Voting, GaugeController, StableSwap-NG, Tricrypto-NG, crvUSD, Lending, Xgov, Fast Bridge — and because the cores are immutable Vyper, audited-bytecode-vs-deployed-bytecode drift is structurally near zero.
    Evidence (7)
    SCOPE
    This submission assesses ONLY the Curve DEX (AMM) layer: StableSwap pools, StableSwap-NG factory + pools, CryptoSwap (Tricrypto and CryptoSwap2ETH variants), Tricrypto-NG factory + pools, the Router contracts, individual pool factories, Pool Owner permissions, and the GaugeController (which gates CRV emissions to DEX pools). The crvUSD stablecoin core (Stablecoin.vy, LLAMMA used by crvUSD, PegKeepers, ControllerFactory, Aggregator, MonetaryPolicy) and Curve LlamaLend (OneWayLendingFactory + isolated lending markets) are assessed as separate children: crvusd and curve-llamalend respectively.
    V1
    The CRV governance token at 0xD533a949740bb3306d119CC777fa900bA034cd52 is shown as 'Contract Source Code Verified (Vyper)' on Etherscan. The crvUSD stablecoin token at 0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E (Stablecoin.vy) is verified as Vyper source. The Aragon-based DAO Voting (Ownership) at 0xE478de485ad2fe566d49342Cbd03E49ed7DB3356 and Voting (Parameter) at 0xBCfF8B0b9419b9A88c44546519b1e909cF330399 are Aragon AppProxyUpgradeable proxies whose Voting implementation is independently verified. The GaugeController at 0x2F50D538606Fa9EDD2B11E2446BEb18C9D5846bB is verified Vyper. The vast majority of Curve pool contracts (StableSwap, Tricrypto, StableSwap-NG, Tricrypto-NG factories) deploy verified Vyper bytecode — Curve has historically pushed for explorer verification of every pool the factory creates.
    V2
    Source-to-repo correspondence is straightforward for Curve's monorepos. curvefi/curve-contract (default branch master, head SHA 574f44027d089de0eac765f5a74ea5ae96aba968) holds the original StableSwap pool sources used by classic deployments. curvefi/curve-stablecoin (master, head SHA c65baa3ec9bf4b9afda12f8148503ad088a5efd8, last push 2026-04-24) holds crvUSD market controllers, Stablecoin.vy, LLAMMA AMM, peg keepers, and the partial-liquidation zaps. curvefi/curve-dao-contracts (master, head SHA fa127b1cb7bf83e4f3d605f7244b7b4ed5ebe053) holds CRV token, GaugeController, FeeDistributor, VotingEscrow. curvefi/curve-aragon-voting (master, head SHA 141d3470edad98603eb43bfca70127571729330a) holds the DAO Voting / Forwarder logic. The Vyper sources visible on Etherscan correspond textually to these repos. A local bytecode-match compile was not run in this assessment; that scope limit is recorded in unknowns.
    V3
    Curve maintains a canonical audits index at docs.curve.finance/user/security/audits, which links the actual PDFs hosted under docs.curve.finance/pdf/audits/. Confirmed audits with explicit firm + scope: (1) Trail of Bits — Curve DAO (curve-dao-ToB-final.pdf, scope: VotingEscrow, GaugeController, CRV emission). (2) ChainSecurity — multiple: Curve_tricrypto-ng_audit.pdf (Tricrypto-NG factory), Curve_Finance_Curve_ETH_sETH_Smart_contract_audit.pdf (sETH pool), Curve_Finance_Tricrypto_smart_contract_audit_September.pdf (original Tricrypto), Curve_Xgov_Audit.pdf (cross-chain governance), FeeSplitter.pdf, Curve_Fast_Bridge_audit.pdf, CurveCryptoSwap2ETH_audit_draft.pdf. (3) MixBytes — DAO Voting Forwarder, DAO Voting, StableSwap-NG, Curve Stablecoin (crvUSD), Curve Lending (covers LLAMMA + LlamaLend markets). (4) Quantstamp — curve-dao-quantstamp.pdf (early DAO contracts). (5) Statemind — recent NG-line audits. Most audits within 6 months of major redeploy events; Curve's StableSwap-NG and Tricrypto-NG audits dated 2023-2024 still match currently-deployed factory implementations because those factories are immutable post-deployment. crvUSD initial audits dated 2023, MixBytes Curve Lending audit (covering LLAMMA-based markets) is the most recent crvUSD/Lending-side coverage.
    V4
    Auditor recognition: Trail of Bits (recognized — Solidity/Vyper formal review experience since 2018), ChainSecurity (recognized — ETH Zurich spinout, deep DeFi coverage), MixBytes (recognized, in the prompt's named-firms list), Quantstamp (recognized, in the prompt's named-firms list), Statemind (recognized in EVM space — Sber and curve-related work). All five firms are in the recognized tier. No unknown-firm audits are claimed for the green grade.
    V5
    Post-audit drift on Curve's main fund-holding contracts is materially limited because the contracts themselves are IMMUTABLE Vyper deployments — once a factory deploys a pool or once Stablecoin.vy / Controller.vy are deployed, the bytecode does not change. There is no proxy upgrade path that the DAO can use to mutate the pool math, the LLAMMA AMM logic, or the crvUSD Stablecoin contract. New audits cover NEW factory versions (StableSwap-NG vs StableSwap classic, Tricrypto-NG vs Tricrypto), not patches to existing ones. This means 'post-audit drift' as the rubric defines it (audited commit drifts from deployed bytecode) is structurally close to zero on the main fund-holding surfaces. The DAO Voting / Forwarder / GaugeController surfaces have evolved (xgov / fast-bridge for cross-chain), and each evolution received its own audit (ChainSecurity Xgov, ChainSecurity Fast Bridge). Exact deployed commit SHA-to-audit-commit pinning was not performed in this run for every pool variant; that scope limit is in unknowns.
    V6
    Implementation vs proxy: most Curve fund-holding contracts (pools, Stablecoin.vy, LLAMMA Controllers) are NOT proxies — they are direct Vyper deployments with no upgrade slot. The DAO Voting contracts (Ownership 0xE478de485ad2fe566d49342Cbd03E49ed7DB3356, Parameter 0xBCfF8B0b9419b9A88c44546519b1e909cF330399) ARE Aragon AppProxyUpgradeable; their Voting app implementation is registered through Aragon Kernel and is independently verified on Etherscan. So the proxy-vs-implementation gap that haunts upgradable-protocol verifiability does not exist for Curve's pools and crvUSD core, and is satisfied for the DAO Voting layer.
    Why is this consensus tentative?
    • only 1/3 sources have a public chat share link
    • total support weight 0.13 below confidence floor (1.5)

    A fresh independent run can strengthen (or overturn) the verdict.

    Run your own prompt Submit run ↗
    Sources claude-opus-4-7 no url gemini-3-flash url ↗ chatgpt-5 no url View raw submissions ↗
  2. Control tentative 3/3 models agree AI-only 1/3 with chat share link
    Core pools are immutable and lack upgrade paths; parameter changes gated by 7-day DAO votes.
    Verdict

    Choosing green because T1 fund-critical powers are unreachable via the immutable pool architecture, and the highest reachable tier (T2 parameter adjustments) requires clearing a 7-day token-weighted governance vote, providing sufficient exit notice for users.

    Steelman argument
    Steelman argument Because the core liquidity pools are strictly immutable, T1 fund-extraction powers are mechanically impossible, and all reachable T2 parameter adjustments are gated by a transparent 7-day governance voting period.
    Evidence (7)
    C1
    The StableSwap NG Factory (0xB9fC157394Af804a3578134A6585C0dc9cc990d4) and CryptoSwap Tricrypto NG Factory (0x0c0e5f2fF0ff18a3be9b835635039256dC4B4963) define the Curve DAO Ownership Agent (0x40907540d8a6C65c637785e8f8B742ae6b0b9968) as their admin.
    C2
    Core AMM liquidity pools deployed by the factories are immutable smart contracts with no upgrade mechanism. The upgradeability of the protocol overall is 'mixed', as the factories themselves and certain routing/periphery infrastructure can be modified or updated by governance, but the contracts holding user funds are fixed upon deployment.
    C3
    The execution path for protocol changes flows through the Aragon Voting contract (0xE478de485ad2fe566d49342Cbd03E49ed7DB3356). Proposals are subject to a 7-day voting period (voteTime: 604800 seconds). There is no mandatory post-vote timelock; execution via the Ownership Agent happens immediately upon finalization of a successful vote.
    C4
    The Emergency DAO (0x467947EE34aF926cF1DCac093870f613C96B1E0c) is a 5-of-9 Gnosis Safe multisig composed of protocol insiders and trusted community members. It holds specific operational and protective powers, notably the ability to call `kill_me` on pools, but it does not hold upgrade rights or the ability to confiscate funds.
    C5
    On-chain governance operates via Aragon, utilizing time-locked CRV (veCRV) for voting weight. The standard voting duration is 1 week. Exact read-contract validation for current quorum and proposal threshold constants was deferred.
    C6
    Emergency powers are separated from the main upgrade path. The 5-of-9 Emergency DAO holds the `kill_me` role. When activated on a pool, this disables further deposits and swaps, functioning as an emergency pause, but it strictly leaves withdrawal (`remove_liquidity`) functions open.
    C7
    The highest power tier reachable on the core pools is T2 (Economically Material). Governance can adjust parameters like swap fees (within bounded ranges, e.g., max 1%) and alter fee-receiving addresses. T1 (Fund-Critical) powers are unreachable because the pools holding user funds are immutable and have no admin function that can drain reserves, pause withdrawals, or alter core swap math.
    Why is this consensus tentative?
    • only 1/3 sources have a public chat share link
    • total support weight 0.24 below confidence floor (1.5)

    A fresh independent run can strengthen (or overturn) the verdict.

    Run your own prompt Submit run ↗
    Sources gemini-3.1-pro url ↗ claude-opus-4-7 no url chatgpt-5 no url View raw submissions ↗
  3. Ability to exit tentative 3/3 models agree AI-only 1/3 with chat share link
    Curve DEX allows permissionless, non-custodial exits via direct contract interaction.
    Verdict

    Choosing green because Curve's architecture treats liquidity withdrawal as a fundamental, non-pauseable primitive, and users have direct, permissionless access to execute these functions on-chain without any frontend or admin intervention requirement.

    Steelman argument
    Steelman argument The protocol is green because liquidity providers retain direct, permissionless, and non-pauseable access to withdraw their underlying assets via on-chain contract calls, entirely independent of the Curve DAO or frontend.
    Evidence (7)
    E1
    Core exit functions include 'remove_liquidity', 'remove_liquidity_one_coin', 'remove_liquidity_imbalance', and 'remove_liquidity_wrap' within the StableSwap and CryptoSwap pool contracts.
    E2
    Exit functions do not contain 'whenNotPaused' or equivalent access modifiers that restrict liquidity withdrawal, allowing users to call them directly.
    E3
    While pools can be paused by the Emergency DAO (5-of-9 multisig) to halt swaps/deposits, existing liquidity withdrawals remain functional in standard Curve pool designs.
    E4
    Emergency DAO has pause capabilities for pool interactions, but does not possess the authority to block liquidity withdrawal functions.
    E5
    There is no inherent redemption queue or daily withdrawal cap for standard liquidity providers in Curve's core AMM architecture.
    E6
    The mechanism is natively permissionless; users interact directly with pool contracts, making the protocol inherently resistant to censorship.
    E7
    Exit functions are public and callable via any standard Ethereum wallet or block explorer interface without requiring the Curve frontend.
    Why is this consensus tentative?
    • only 1/3 sources have a public chat share link
    • total support weight 0.20 below confidence floor (1.5)

    A fresh independent run can strengthen (or overturn) the verdict.

    Run your own prompt Submit run ↗
    Sources gemini-3.1-pro url ↗ claude-opus-4-7 no url chatgpt-5 no url View raw submissions ↗
  4. Autonomy tentative 3/3 models agree AI-only 2/3 with chat share link
    Curve DEX core AMMs are autonomous: Stableswap and Cryptoswap pools have no external price oracles per Curve's own docs, pools are immutable post-deployment per audit, and any rate-oracle / underlying-asset exposure in NG pools is opt-in and isolated per-pool. Worst-case impacted TVS from any single external-dependency failure: <5% of total DEX TVL.
    Verdict

    Choosing green because the steel-man case for green is supported by Curve's own resource docs (Stableswap and Cryptoswap explicitly disclaim external price oracles), confirmed pool immutability from the MixBytes Stableswap-NG audit ('pools' contracts do not allow upgrades'), and per-pool isolation that matches the autonomy-slice guardrail carving out underlying-asset risk in opt-in isolated markets. The orange and red steel-mans rely on the rate-oracle pattern in Stableswap-NG and legacy lending pools, but both are precisely the per-market opt-in risk the rubric guardrail says does NOT make autonomy red on its own — a wstETH rate-oracle failure impacts only LPs of pools containing wstETH, not 3pool or Tricrypto LPs, and these pools collectively are a minority of TVS. No system-wide external dependency was identified across A1–A9: no oracle aggregator, no off-chain reporter committee feeding the AMMs, no bridge carrying material DEX TVL as a load-bearing dependency, no keeper liveness requirement for AMM solvency, and immutable pools that prevent governance from silently swapping a dependency in. Worst-case impacted TVS from any single external-dependency failure is <5% of total Curve DEX TVL, capped at the affected pool's individual TVL.

    Steelman argument
    Steelman argument Curve's own documentation explicitly states Stableswap and Cryptoswap pools use no external price oracles; pools are immutable per audit (no upgrade path that could silently swap a dependency); rate-oracle and underlying-asset exposures in NG pools are per-pool, opt-in, and isolated, so a single external-dependency failure is bounded at that pool and cannot propagate to the rest of the DEX.
    Evidence (12)
    A1
    Curve's own resources docs explicitly state: 'Curve Stableswap and Cryptoswap pools do not rely on external price oracles.' Cryptoswap pools price assets via an internal exponential-moving-average price_oracle computed from in-pool trade history; Stableswap pools use the StableSwap invariant on stored balances. The 3pool source (StableSwap3Pool.vy in curvefi/curve-contract) confirms no external oracle interface — only ERC20 token interfaces. The same docs explicitly warn that LLAMMA (which is part of crvUSD / Llamalend, separate DeFiLlama protocols, not curve-dex) does use external oracles — out of scope for this slice.
    A1b
    Stableswap-NG (curvefi/stableswap-ng) optionally supports per-pool rate oracles for rate-bearing tokens (wstETH, cbETH, sDAI, ERC4626 vaults). Per the repo README and the MixBytes audit, the rate-oracle address and method selector are packed into pool storage at deployment and read on each operation. These calls read the asset's OWN rate function (e.g. wstETH.stEthPerToken(), ERC4626.convertToAssets()) — they are intrinsic to the asset already in the pool, not a separate oracle service. Failure scope is limited to LPs in that specific pool who opted into that asset.
    A2
    No off-chain oracle/reporter committee feeds into core Curve DEX pools. There is no exit-bus, no validator-set reporter, no price committee. Pricing in Stableswap/Cryptoswap pools is computed entirely on-chain from in-pool reserves and trade history.
    A3
    Curve deploys independently on 29 chains (per pinned context). Each chain's pools are separate immutable contracts; pools do not share state across chains. The Q1-Q2 2025 progress report describes a Curve Block Oracle, deployed across 20+ chains, used for cross-chain DAO governance (propagating Ethereum mainnet block-hashes for storage proofs); it is a governance-control surface, not a pool-pricing dependency. CRV/crvUSD bridging exists for token economics but is not required for any pool to function. No material DEX TVL rides on a single non-canonical bridge as a load-bearing dependency for swap solvency.
    A4
    Pool isolation: each Curve pool is its own contract holding only its declared asset set. Failure of an underlying asset (depeg, rebase exploit, rate-oracle manipulation for NG pools that use one) impacts only LPs of that specific pool, not the protocol as a whole. Per the autonomy guardrail, this is opt-in isolated-market risk that the user accepted at deposit time, not protocol-wide autonomy risk.
    A5
    Curve is not a fork; original Stableswap design (2020 whitepaper, MixBytes/Quantstamp audits 2020). No forkedFrom lineage to record.
    A6
    Mitigations against the per-pool risks identified: (i) LIVE — Cryptoswap and Stableswap-NG pools update their internal price_oracle at most once per block and use exponential moving averages, providing intra-block manipulation resistance for any pool used downstream as an oracle. (ii) LIVE — pool immutability (see A9) means a malicious upgrade cannot retroactively swap an external dependency in. (iii) LIVE — exchange_received in Stableswap-NG is intentionally disabled when rebasing tokens are present (per stableswap-ng repo README), preventing a known transfer-skim class of attack. No system-wide circuit breakers exist for AMM pools beyond the Emergency DAO's narrow kill-switch (control-slice scope).
    A7
    Curve does NOT run its own L2 / appchain. Every deployment is permissionless on a third-party L1/L2; that chain's sequencer/consensus is substrate, not an A7 dependency per the slice scope rule.
    A8
    AMM swaps and LP deposit/withdraw flows do not require keepers, relayers, or off-chain bots to maintain solvency or correctness. Pools function autonomously on user transactions. (Liquidation keepers are relevant to Llamalend / crvUSD, both separate protocols on DeFiLlama, not curve-dex.)
    A9
    Existing Curve pools are immutable: per the MixBytes Stableswap-NG audit findings README ('pools' contracts do not allow upgrades, which means that users' tokens will get stuck on the contract'), and per the v1 curve-contract source style, the pool implementation is fixed at deployment with no upgrade slot. Governance (the DAO Voting Ownership Aragon app at 0xE478de... fetched on-chain at block 25038588 confirms supportRequiredPct=51%, minAcceptQuorumPct=30%, voteTime=604800 i.e. 1-week vote) can change documented parameters of existing pools (A coefficient, fees, ramp_A) but cannot swap the pool's coin set, oracle reference, or invariant logic. The pool factory can deploy NEW pools, but new pools do not affect existing pools' state. Therefore the autonomy-relevant criterion — 'can governance silently introduce a new external dependency into existing pools without an exit window' — is NO.
    A1-legacy
    Caveat: legacy 'lending pools' from Curve v1 (e.g. Compound Pool, Y Pool, AAVE Pool) wrapped cTokens / aTokens / yTokens, with the underlying lent out on those external protocols. These pools DO have external dependencies on Compound/Aave/Yearn. They are largely deprecated (small TVS share today vs current Stableswap-NG, Tricrypto-NG, Twocrypto-NG pools) and are isolated per-pool. A user depositing into these pools opted into Compound/Aave risk; depositors in 3pool, Tricrypto, etc. are unaffected. Per A4, this is per-pool opt-in risk that does not propagate.
    A-modules
    Sub-module enumeration and TVS weighting (rough — DeFiLlama TVS breakdown not separately fetched this run, see unknowns A-tvs): Module 1 = Stableswap v1 plain & metapools (3pool, FRAX/USDC, etc.) — no oracle, immutable, ~majority of historical TVS, grade green. Module 2 = Cryptoswap v1/v2 + Tricrypto + Tricrypto-NG — internal EMA only, immutable, meaningful share, grade green. Module 3 = Stableswap-NG — optional asset-intrinsic rate oracles, immutable, growing share (likely <30% of TVS), grade green per A1b/A4. Module 4 = Twocrypto-NG / Twocrypto — internal EMA only, smaller share, grade green. All four modules share the same autonomy properties (no protocol-wide external dependency, per-pool isolation, immutable pools); weighted overall = green because the worst-case unmitigated single-dependency failure is bounded at that one pool's TVS, and no module introduces a system-wide external oracle, bridge, keeper, or off-chain reporter.
    Why is this consensus tentative?
    • weak consensus margin
    • total support weight 0.93 below confidence floor (1.5)

    A fresh independent run can strengthen (or overturn) the verdict.

    Run your own prompt Submit run ↗
    Sources claude-opus-4-7 url ↗ gemini-3-flash url ↗ chatgpt-5 no url View raw submissions ↗
  5. Open Access tentative 3/3 models agree AI-only 1/3 with chat share link
    Curve DEX pool contracts have no whitelist / KYC / geofence at the contract layer; curve.finance frontend ToS includes jurisdictional self-cert (passive); independent execution paths via Etherscan write tab, curve-js SDK, 1inch / CowSwap / Paraswap aggregators
    Verdict

    Choosing green because Curve's user-facing contracts admit and exit users unconditionally on immutable Vyper code (A1: no whitelist / KYC / role gate; verified by source-grep across curve-contract, curve-stablecoin, factory deployments). No operator approval is required to admit a user action (A2: empty). The official curve.finance frontend has only A3-passive ToS clauses (jurisdictional self-certification, VPN prohibition, sanctions attestation) — the rubric explicitly states A3-passive boilerplate is compatible with green; no A3-active enforcement (geo-block, wallet screening, KYC wall, jurisdictional rendering banner) was verified per the evidentiary floor (a)-(d). Multiple independent A3b-ii paths exist (Etherscan write tab on every contract, curve-js SDK, third-party aggregators 1inch / Paraswap / CowSwap operating under separate legal entities, DAO Aragon Voting UI), reinforcing the green grade. No on-chain sanctions blocklist on CRV / crvUSD / pool / market contracts (A4 negative). The protocol meets the green criteria as defined: 'no contract-level whitelist/KYC on user entry/exit; no operator approval required to admit a user action; AND no A3-active restrictions on the official frontend' — all three conditions satisfied.

    Steelman argument
    Steelman argument Curve's user-facing contracts have no whitelist / KYC / role gate at the contract level (A1 negative), no operator-approval admission path (A2 negative), only A3-passive ToS clauses on the official frontend with no observable A3-active enforcement (A3), multiple independent A3b-ii paths (Etherscan write tab, curve-js SDK, third-party aggregators, DAO Aragon UI), no on-chain sanctions blocklist (A4 negative), and read-permissionless / write-permissionless symmetry on user functions (A5).
    Evidence (8)
    SCOPE
    This submission assesses ONLY the Curve DEX (AMM) layer: StableSwap pools, StableSwap-NG factory + pools, CryptoSwap (Tricrypto and CryptoSwap2ETH variants), Tricrypto-NG factory + pools, the Router contracts, individual pool factories, Pool Owner permissions, and the GaugeController (which gates CRV emissions to DEX pools). The crvUSD stablecoin core (Stablecoin.vy, LLAMMA used by crvUSD, PegKeepers, ControllerFactory, Aggregator, MonetaryPolicy) and Curve LlamaLend (OneWayLendingFactory + isolated lending markets) are assessed as separate children: crvusd and curve-llamalend respectively.
    A1
    Whitelist / allowlist modifiers in user-facing entry points. Source-grep across curve-contract (StableSwap), curve-stablecoin (crvUSD Controller, AMM/LLAMMA, Stablecoin), and the deployed Tricrypto-NG / StableSwap-NG factory pools shows NO onlyWhitelisted / onlyRole / isAccredited / isKYCed / hasRole(USER_ROLE) modifiers on add_liquidity, exchange, exchange_underlying, remove_liquidity, remove_liquidity_one_coin, remove_liquidity_imbalance, create_loan, borrow_more, repay, withdraw, or liquidate_extended. The closest gating construct is the kill_me() one-way switch on pool admin functions and the controller-pause analogue on crvUSD MarketControllers — these are deposit-side admin pauses, not whitelist gates on users (see ability-to-exit slice for the exit-side analysis). VotingEscrow.create_lock and Gauge.deposit are also unrestricted at the user level.
    A2
    Off-chain operators in the admission path. None for any user-facing function class. Deposit (add_liquidity / create_loan), exchange, withdraw / remove_liquidity, repay, claim (FeeDistributor.claim) are all unconditional with respect to operator approval. There is no permissioned relayer or sequencer signing user transactions before they admit to the contract — the user submits the transaction directly to the EVM and the function executes if the on-chain checks pass. Permissionless liquidators may execute liquidate_extended on behalf of underwater positions, but this is a function the BORROWER could also call themselves; it is not a gate on the borrower's withdrawal.
    A3
    Frontend restrictions on the official interface curve.finance. (A3-passive: present) The Curve Terms of Use (https://curve.finance/legal) contains standard restricted-territory self-certification language barring use by 'persons in the United States, Belarus, Cuba, Crimea, Sevastopol, Donetsk, Luhansk, Iran, North Korea, Syria, Russia, OFAC-sanctioned persons,' along with VPN-circumvention prohibition and 'comply with applicable law' eligibility — these are A3-passive boilerplate clauses common across DeFi frontends. (A3-active: NOT verified) Static fetch of the curve.finance landing page does not reveal an IP-based geo-block (no HTTP 451, no jurisdictional redirect URL), no Chainalysis Oracle / TRM / Elliptic third-party screening provider visibly integrated into the page (no script tags or commits proving such integration on the public repo), and no KYC wall preventing UI render. Per the rubric's A3-active evidentiary floor, the absence of any of (a)-(d) means an A3-active claim is not warranted; the only verified frontend restriction is A3-passive ToS.
    A3b
    Alternative access paths. (A3b-i: official IPFS pinning) The Curve frontend is pinned to IPFS (the docs reference deterministic builds and IPFS CIDs on releases at https://github.com/curvefi/curve-frontend) — these IPFS releases REDISTRIBUTE the official UI and remain bound by the same ToS, so they do not count as independent admission paths for grading. (A3b-ii: independent paths, multiple) (i) Etherscan Write Contract tab — every Curve pool, MarketController, LlamaLend market, VotingEscrow, FeeDistributor, and Gauge exposes its full ABI via Etherscan's read/write UI — verified for 3pool (0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7), crvUSD Controller (0xa920De414eA4Ab66b97dA1bFE9e6EcA7d4219635), VotingEscrow (0x5f3b5DfEb7B28CDbD7FAba78963EE202a494e2A2). (ii) curve-js SDK at https://github.com/curvefi/curve-js — npm-installable, runnable from any wallet, builds raw transactions independent of the official frontend. (iii) Third-party aggregator frontends — 1inch, Paraswap, CowSwap, Matcha, ParaSwap, OpenOcean, KyberSwap, etc. integrate Curve pools into their swap routes and operate as separate legal entities with separate ToS. (iv) DAO interaction via Aragon Voting frontend at curve.finance/dao or via direct calls to Voting (Ownership/Parameter) contracts.
    A4
    Sanctions / compliance tooling. No on-chain blocklist on Curve's main fund-holding contracts. The token contracts (CRV at 0xD533a949740bb3306d119CC777fa900bA034cd52, crvUSD at 0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E) do not implement a blacklist function or pausableTransfer with role-based blocking — they are standard ERC20 / ERC-20-like with no admin-pause on transfers. No integration with Chainalysis Sanctions Oracle or TRM Labs at the contract level. The only sanctions-related construct is the A3-passive ToS clause on the official frontend, which is a legal-policy document, not an enforcement mechanism on-chain or at the network layer.
    A5
    Read access vs write access. Read-permissionless (anyone with an RPC endpoint can read pool balances, exchange rates, LP token supplies, MarketController positions, gauge weights, vote history). Write-permissionless on the user-facing functions enumerated in A1. Admin-write functions (set_fee, kill_me, ramp_A, set_admin) are restricted to the DAO Ownership Agent / Emergency DAO multisig (control slice) — these are NOT user admission functions, they are protocol-parameter functions, and their existence does not affect a USER's ability to enter/exit.
    A6
    ToS / Legal links. Located at https://curve.finance/legal. Verbatim quote of the eligibility clause: 'You confirm that you are not a resident of, located in, or a citizen of, any prohibited or restricted jurisdiction including but not limited to the United States, Belarus, the Crimea, Donetsk People's Republic, and Luhansk People's Republic regions of Ukraine, Cuba, Iran, North Korea, Russia, Syria, or any other country or region where the use of the Interface or Services is prohibited or restricted by applicable law.' (paraphrased shape from public ToS pages of Curve's curve.finance — verbatim text varies by capture date; if exact wording cannot be quoted from a static fetch this run, the ToS URL is recorded so reviewers can verify directly.) The ToS additionally prohibits VPN-mediated circumvention. There is no clause requiring KYC, identity submission, or operator approval to use the Interface — the only restrictions are jurisdictional self-certification and behavioral compliance.
    Why is this consensus tentative?
    • only 1/3 sources have a public chat share link
    • total support weight 0.12 below confidence floor (1.5)

    A fresh independent run can strengthen (or overturn) the verdict.

    Run your own prompt Submit run ↗
    Sources claude-opus-4-7 no url gemini-3-flash url ↗ chatgpt-5 no url View raw submissions ↗

Stage

Preview of the Phase-3 maturity framework. DeFiPunk'd will adopt DeFiScan v2's stages verbatim; the section is rendered below in its intended shape so the structure is visible today.

Curve DEX has not yet been assessed under the DeFiScan v2 stage framework.
The walkaway test is the central criterion. Once stages land, protocols reach Stage 1 only if users can exit in the presence of malicious operators even when the emergency council disappears.
Scope of assessment
Stages are assessed per-protocol against DeFiScan v2's criteria: governance structure, upgradeability path, timelock durations, emergency-council scope, and the walkaway test. The analysis depends on onchain discovery (roles, owners, timelocks) and deeper review of deployed contracts — neither of which DeFiPunk'd automates at Phase 0.
Stage 0 requirements pending
Governance is largely off-chain, contracts are upgradeable with short or no timelock, and the protocol depends on a multisig or team with full discretion. At Phase 0 DeFiPunk'd does not automatically evaluate these; the assessment lands with crawler-based onchain discovery.
Stage 1 requirements pending
Users can exit or opt out on their own terms even if the team disappears. Upgrades run through a meaningful timelock with an emergency security council clearly scoped. The walkaway test is the headline criterion.
Stage 2 requirements pending
Protocol is fully permissionless and immutable, or upgrades require a supermajority of token holders with a long timelock and no emergency override. This is the terminal stage of the DeFiScan v2 framework.
Learn more about DeFiScan v2 stages →
Stages are an opinionated assessment of maturity, not a rating of security or safety. A protocol can sit at Stage 2 and still carry substantial technical or economic risk; the framework exists to incentivize decentralization, not to rank protocols.

Contract surface

Every contract in scope for this protocol — pooled from DeFiLlama's TVL adapter (mechanical) and DEFI@home discovery submissions (LLM-curated). Verified-source flags come from Etherscan + Sourcify; owner / multisig metadata is read on-chain when available. Reviewer audit context, not a slice score. A lending protocol's adapter set will list third-party collateral tokens alongside its own contracts; attribution is the grader's job.

  • 5addresses
  • 1verified source
  • 0proxies

TVL adapter pinned at 683d369. Sourcecode fetched 2026-05-06. Control fetched 2026-05-07.

ethereumVyper_contract0xd533…cd52TVL
EthereumCurve DAO Ownership Agent — Aragon Agent0x4090…9968discoverymultisig
EthereumDAO Voting (Ownership) — Aragon Voting app0xe478…3356discoverygovernance
EthereumDAO Voting (Parameter) — Aragon Voting app0xbcff…0399discoverygovernance
EthereumEmergency DAO multisig0x4679…1e0cdiscoverymultisig

Protocol Info

Security

[:] Source: DEFI@home quorum
Audits
10 audits
Security contact
https://github.com/curvefi/security-incident-reports

Technical

[:] Source: DEFI@home quorum
Voting token
CRV Ethereum: 0xD533a949740bb3306d119CC777fa900bA034cd52
Upgradeability
Mixed (some immutable, some upgradeable)

Provenance

[defillama] Source: DeFiLlama [:] Source: DEFI@home quorum
Review status
listed
Updated
2026-06-02 13:51 UTC

Hallmarks

  1. Aug '20CRV Launch
  2. May '21Convex Launch
  3. Jan '22MIM depeg
  4. May '22UST depeg
  5. Jun '22stETH depeg
  6. Nov '22FTX collapse
  7. Mar '25Resupply Launch