In the keeperProxy::Initialize function the AggregatorV2V3 interface is hardcoded and to its Arbitrum address which is used check the L2 sequencer status in KeeperProxy::_validatePrice function but if the same code is deployed on Avalanche chain then the _validatePrice function always revert blocking the run and runAction functions from being executed.
The Readme states that the protocol is expected to be deployed on Arbitrum and Avalanche chains but it is not possible to deploy the protocol on Avalanche chain as the AggregatorV2V3 interface is hardcoded to Arbitrum address making the protocol unusable on Avalanche chain
HardCoded sequencerUptime Feed to Arbitrum feed address
The specified block checks if L2 sequencer is up but doesn't check the block.chainId of the chain in which it is being executed , on Avalanche the Sequencer address doesn't point to the same L2 sequencer address instead it points to an EOA meaning the function always reverts on Avalanche chain
Manual Review
In _validatefunction add a statement to verify block.chainId i.e if Arbitrum do the L2 sequencer check , if Avalanche skip that block this way the same keeper code can be used in both the chains
Likelihood: High, run and runNextAction will revert. Impact: Low, any deposit will be retrieve thanks to cancelFlow.
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.