Normal behavior: Liquidations should typically be partial and limited by a close factor (e.g., 50%), allowing users time to restore health and reducing MEV and slippage.
Issue: The liquidate function allows a liquidator to cover 100% of a user’s debt in a single transaction, enabling full account wipeouts and creating attractive MEV opportunities for aggressive liquidators.
Likelihood:
Reason 1 // Liquidation bots commonly take full advantage of any allowed range, so they will routinely use the maximum legal debt_to_cover.
Reason 2 // Market volatility often pushes multiple users toward liquidation simultaneously, attracting competitive MEV searchers.
Impact:
Impact 1 // Users can lose 100% of their position in one transaction, even when a smaller partial liquidation would have restored safety, harming user experience and perceived fairness.
Impact 2 // Large all‑at‑once liquidations can create sudden, sizeable collateral flows to liquidators, exacerbating slippage and destabilizing markets around the underlying assets.
A liquidator targets an at‑risk account and liquidates the entire debt at once:
User is slightly undercollateralized.
Liquidator computes full outstanding DSC debt and calls liquidate with debt_to_cover = total_debt.
Engine processes full liquidation, transferring all collateral plus bonus to the liquidator.
User has no opportunity to add collateral or repay debt between partial liquidations.
Introduce a close factor that caps debt_to_cover as a fraction of the user’s total debt per liquidation.
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.