Arbitrum uptime sequencer should check startedAt != 0.
According to Chainlink docs, https://docs.chain.link/data-feeds/l2-sequencer-feeds#example-code, the uptime sequencer on Arbitrum should check for startedAt != 0 to avoid uninitialization issues.
The startedAt variable returns 0 only on Arbitrum when the Sequencer Uptime contract is not yet initialized. For L2 chains other than Arbitrum, startedAt is set to block.timestamp on construction and startedAt is never 0. After the feed begins rounds, the startedAt timestamp will always indicate when the sequencer feed last changed status.
https://github.com/CodeHawks-Contests/2025-02-gamma/blob/main/contracts/KeeperProxy.sol#L48
Uptime sequencer may be unready, and a wrong oracle answer would be used.
N/A
Check startedAt != 0 for uptime sequencer.
startedAt is only 0 when contract is not initialized on Arbitrum, but it is already initialized on Arbitrum. startedAt is sufficient for the protocol, it does not need roundID. Current documentation of Chainlink does not have this sentence: “This timestamp returns `0` if a round is invalid.“
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.