The MultiHopOracle contract relies on an immutable configuration of oracles, which cannot be updated after deployment.
If any oracle in the sequence returns a value of zero, the entire transaction will fail due this in require(data > 0, "INVLDDATA") in ChainlinkOracle.sol
This immutability creates a critical limitation, as a single failing oracle can render the entire MultiHopOracle contract unusable
The oracles array is initialized during deployment and is immutable thereafter. If any of the oracles in the array return a zero value,
the _getData function will revert due to this check require(data > 0, "INVLDDATA") in ChainlinkOracle.sol. This would make the entire MultiHopOracle contract unusable.
Unlike in UpdateWeightRunner.sol it implement function to remove Oracle for security and integrity.
POC:
Oracle Batch Tx will fail if oracle retunes 0:
If any oracle in the sequence fails, the MultiHopOracle batch will fail, and any contract rely on MultiHopOracle getData will fail.
Implement a Mechanism to remove oracles from the array.
Likelihood: Low, price feed should revert. Impact: High, DoS of the protocol
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.