Proposal 062 deployed a new Comptroller implementation that split COMP emissions between suppliers and borrowers. The regression sat in distributeSupplierComp / distributeBorrowerComp: the migration branch that bootstraps a supplier's index when a market is first switched on used `if (supplierIndex == 0 && supplyIndex > compInitialIndex)` instead of `>=`. For markets initialized at exactly supplyIndex == compInitialIndex (1e36) — cSUSHI, cMKR, cYFI, cAAVE, cTUSD, cSAI — the guard failed, supplierIndex remained 0, and the delta passed to mul_(deltaIndex, supplierTokens) became 1e36 × tokens, paying out astronomically inflated COMP. ~280K COMP (~$80–$160M at peak) was drained from the Comptroller reservoir to users with no economic claim. The root cause is a single-character operator bug (`>` vs `>=`) in reward-accounting arithmetic on a freshly upgraded governance proxy.
Classification: Protocol Logic. Technique: Math Mistake Exploit. Target type: DeFi Protocol. Affected chains: Ethereum. Implementation language: Solidity.
- chain
- ethereum
- protocol
- Compound V2
- bug_class
- logic
- date_occurred
- 2021-09-29
- loss_usd
- $147,000,000
- classification
- Protocol Logic
- technique
- Math Mistake Exploit
- target_type
- DeFi Protocol
- language
- Solidity
- source_id
- dl:114