The StabilityPool uses its crvUSD balance to liquidate borrower debt but has no mechanism to replenish the spent crvUSD. Over time, this drains the pool.
Assume:
StabilityPool holds 1000 crvUSD.
Borrower A has a debt of 200 crvUSD (scaled to 200e18 via WadRayMath).
A manager calls liquidateBorrower(A):
200 crvUSD is transferred from the StabilityPool to the LendingPool.
StabilityPool balance: 1000 - 200 = 800 crvUSD.
Consider repeated liquidations and the effects on the stability pool.
The StabilityPool only spends crvUSD during liquidations but never refills it. There are no functions to:
Deposit crvUSD directly into the pool.
Recover crvUSD from liquidated collateral (e.g., selling collateral assets for crvUSD).
Collect fees from loans to replenish the pool.
The system’s solvency is compromised with repeated liquidations.
Foundry
Recover crvUSD from Liquidated Collateral
Add Replenishment Function
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.