The protocol's liquidation system contains three critical design limitations that could lead to system-wide insolvency during market stress events: restricted liquidator access (manager/owner only), mandatory full position liquidations, and sequential processing requirements. These limitations create a severe bottleneck in processing liquidations during high volatility periods.
The liquidateBorrower() function in the StabilityPool contract reveals three critical design constraints:
Restricted Liquidator Access
Only the manager or owner can initiate liquidations, creating a central point of failure.
Forced Full Position Liquidations
Sequential Processing Requirements
Example Scenario:
Market crashes 30% in 1 hour
100 positions become liquidatable
Each liquidation takes 1 minute to process
Total time to process all liquidations = 100 minutes
During this delay:
Market could drop further
More positions become underwater
Protocol accumulates bad debt
System becomes progressively more insolvent
Delayed Liquidations: During market stress, the bottlenecked system cannot process liquidations quickly enough
Cascading Failures: Delayed liquidations lead to accumulation of bad debt, more positions becoming underwater, and increasing protocol insolvency risk
Single Point of Failure: Reliance on manager/owner creates additional risk if they become unavailable
Capital Inefficiency: Full liquidation requirement prevents optimal capital usage
Manual code review
Implement Permissionless Liquidations.
Enable Partial Liquidations.
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.