Users of the platform will be accidentally DOS as long as one oracle reverts e.g. via TIMEOUT.
The core invariant check _revertIfHealthFactorIsBroken()
is dependent on _getAccountCollateralValue()
which loops through every collateral that is allowed to calculate the user’s total collateral value in USD. However, as long as a single revert occurs e.g. if one oracle hits the TIMEOUT, the entire loop will revert and _revertIfHealthFactorIsBroken()
will revert.
As long as one oracle is down, users cannot redeem collateral, cannot mint dsc, cannot burn dsc and positions cannot be liquidated.
Manual Review
Consider having multiple fallback oracles in the event Chainlink oracles go down. For example, AAVE maintains their own oracles to be used as fallback.
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.