Underwater positions in the LendingPool are unable to be liquidated because the StabilityPool has no source of crvUSD
The owner or manager of the StabilityPool is in charge of calling liquidateBorrower() in the StabilityPool contract to finalize the liquidation process.
In the liquidateBorrower() function, the StabilityPool will first approve the LendingPool to spend scaledUserDebt of crvUSD as seen here.
It will then call finalizeLiquidation() in the LendingPool as seen here.
In finalizeLiquidation(), the LendingPool transfers crvUSD from the StabilityPool to the RToken contract as seen here.
However, there is no incentive for users to deposit crvUSD into the StabilityPool contract, and no other contract is in charge of supplying StabilityPool with crvUSD.
Due to the absence of crvUSD in the StabilityPool, underwater positions in the LendingPool can never be liquidated.
Underwater positions cannot be liquidated.
Manual Review
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.