compound.finance
Summary
Compound V2 is a legacy Ethereum lending protocol with roughly $90M in deposits, operating since 2018 under COMP token-holder governance with a 2-day timelock. It has never suffered a direct drain of user collateral, but eight production contracts—including cUSDC—remain unverified on Etherscan, audits are roughly six years stale, and a 4% voting quorum enabled a demonstrated 2024 treasury capture attempt. Overall risk is moderate-high at 5.9/10, reflecting assurance gaps on a deprioritized product whose successor, Compound V3, now receives active development.
Trust Assumptions
Users trust that the 2-day Timelock and COMP governance process will not approve harmful Comptroller or cToken upgrades; that Chainlink price reporters and Uniswap V2 TWAP anchors will stay accurate and that USDC/USDT will remain pegged near $1 (prices are hardcoded for stables); that the 5-of-9 Community MultiSig will use pause, borrow-cap, and proposal-guardian powers only in genuine emergencies; and that the eight unverified market contracts behave identically to their audited delegator templates.
What Could Go Wrong
A whale accumulating ~400,000 COMP (4% quorum) could pass governance proposals to swap the oracle, change collateral factors, or redirect treasury assets—exactly what Proposal 289 attempted with 499,000 COMP (~$24M) in July 2024. A stablecoin depeg or stale Chainlink feed could leave collateral priced at $1 while real value falls, enabling undercollateralized borrowing or unfair liquidations, as seen in the $89M DAI liquidation event of November 2020. An unaudited Comptroller upgrade could repeat the September 2021 COMP distribution bug that over-issued ~280,000 COMP (~$147M), or an empty-market initialization attack—exploited for $30M+ across V2 forks—could surface if market conditions change on a long-tail asset.
Recommendation
Treat Compound V2 as a winding-down legacy deployment suitable only for modest, short-term positions with active monitoring—not for large or long-duration allocations. Favor Compound V3 for new exposure given its isolated-market design and active security focus. Watch governance proposals affecting the oracle, collateral factors, or Comptroller implementation; monitor stablecoin peg health and oracle freshness; and reduce exposure if another low-participation vote approaches quorum or if additional core contracts go unverified.
Key Findings (30)
Analysis Sections
Compound V2 is controlled by COMP token-holder DAO governance routed through a 2-day Timelock. On-chain verification confirms Unitroller and cToken admin is the Timelock (0x6d903f...), while Timelock admin is an upgradeable CompoundGovernor proxy (0x309a862...). Emergency powers sit with a 5/9 Community MultiSig (pause, borrow-cap, and proposal guardian). A 4% quorum (400k COMP) and demonstrated 2024 governance attack (Proposal 289) create meaningful plutocratic capture risk, partially mitigated by timelock delays and post-attack guardian additions.
Findings (8)
In July 2024, the Golden Boys delegate group (whale Humpy) narrowly passed Proposal 289 to allocate 499,000 COMP (~$24M) from the DAO treasury to a goldCOMP vault they controlled. Community and OpenZeppelin characterized it as a governance attack. The proposal was later cancelled in exchange for a COMP staking agreement, but the incident proves that concentrated COMP voting power can extract treasury value through standard governance mechanics.
GovernorBravo requires only 400,000 COMP (4% of 10M total supply) for quorum, verified as a constant in GovernorBravoDelegate. With proposal threshold at 25,000 COMP (0.25% of supply, verified on-chain), a well-capitalized actor can propose and pass treasury or parameter changes with a relatively small fraction of total COMP. Flash-loan proposal creation is blocked (votes checked at prior block), but vote buying, delegation concentration, and OTC COMP accumulation remain viable attack paths.
Compound V2 operates with two governance contracts: legacy GovernorBravoDelegator (0xc0da02939e1441f497fd74f78ce7decb17b66529) and a newer upgradeable CompoundGovernor proxy (0x309a862bbc1a00e45506cb8a802d1ff10004c8c0 → CompoundGovernor 0x501eb63a2120418c581b3bd31cf190b0a0616752). On-chain verification shows Timelock.admin is the CompoundGovernor proxy, not GovernorBravo directly. This split increases operational and audit complexity and makes it harder for users to track which governor is authoritative for new proposals.
BorrowCapGuardian (verified on-chain as Community MultiSig 0xbbf3f1421D886E9b2c5D716B5192aC998af2012c) can set borrow caps on any market without timelock delay, including lowering caps to zero to disable borrowing. While intended as a safety valve, a compromised multisig signer set could grief borrowers across all markets instantly. Only admin (Timelock) or borrowCapGuardian may call _setMarketBorrowCaps per Comptroller source.
Pause Guardian (5/9 Gnosis Safe at 0xbbf3f1421D886E9b2c5D716B5192aC998af2012c, verified on-chain) can instantly pause mint, borrow, transfer, and seize (liquidation) per Comptroller source. Unpausing requires admin (Timelock), incurring the 2-day delay. Users can always redeem and repay during pauses. This is a reasonable emergency design but concentrates fast-response power in a 5/9 multisig.
Timelock delay is 172,800 seconds (2 days), verified via storage slot 2 on 0x6d903f6003cca6255D85CcA4D3B5E5146dC33925. GRACE_PERIOD is 14 days per Timelock.sol source. All protocol admin actions (comptroller upgrades, market listings, reserve changes, oracle updates) must queue through Timelock, giving users an opt-out window. MINIMUM_DELAY=2 days and MAXIMUM_DELAY=30 days are hardcoded bounds.
CompoundGovernor (current Timelock admin) has proposalGuardian set to the Community MultiSig (0xbbf3f1421D886E9b2c5D716B5192aC998af2012c), verified on-chain. This guardian can cancel proposals that have passed voting, acting as a veto against malicious governance outcomes like Proposal 289. This is a centralized backstop that partially offsets low quorum risk but reintroduces trusted-party dependency.
Unitroller admin, GovernorBravo admin, and cToken admin (verified on cUSDC) all resolve to the Timelock contract. No pending admin transfer is queued (pendingAdmin = zero address). Core protocol changes require DAO governance plus timelock delay rather than single-key control. Compound V2 is Ethereum-only with no cross-chain governance asymmetry.