# Missing Sequencer Uptime Feed check can cause unfair liquidations on Arbitrum

Perennial's Chainlink oracles on Arbitrum omit the sequencer uptime feed, so after downtime all price updates land at once, liquidating users with no grace period.

- Payout: Contest reward
- Severity: medium
- Program: Perennial
- Credited: roguereddwarf
- Disclosed: 2023-05-05
- Write-up quality: 6/10
- Original: https://github.com/sherlock-audit/2023-05-perennial-judging/issues/37
- Library page: https://bugbountylibrary.com/r/sherlock%3A2023-05-perennial%3AM-2
- Tags: domain:infra domain:web3 impact:funds-loss kind:contest platform:sherlock sev:medium tech:evm technique:source-review vuln:liquidation vuln:oracle-manipulation

**Target:** ChainlinkOracle / ChainlinkFeedOracle price feed contracts on Arbitrum
**Root cause:** ChainlinkOracle and ChainlinkFeedOracle read price feeds without consulting Chainlink's L2 Sequencer Uptime Feed, so no grace period is enforced after sequencer downtime.
**Steps:**
1. Deploy/observe Perennial oracle on Arbitrum using ChainlinkOracle.sol L59-64 or ChainlinkFeedOracle.sol L94-97.
2. Note neither contract queries the sequencer uptime feed before accepting a price.
3. During sequencer downtime, price updates queue; on recovery all stale updates are applied in a very short window.
4. Users cannot top up collateral in time and get liquidated at the newly applied prices.
**How found:** Researcher read the oracle contracts, noticed no sequencer uptime feed usage, and cross-referenced Chainlink L2 sequencer feed docs and Aave V3 technical paper section 4.6 on grace periods; distinguished from stale-price dupes by focusing on the post-recovery liquidation window.
**Exploitation:** Not an attacker-driven exploit; the flaw causes unfair liquidations of users whose positions become undercollateralized when queued price updates are applied immediately upon sequencer recovery, with no grace period to add collateral.
**Insight:** On L2 deployments, check whether oracle adapters consume the sequencer uptime feed and enforce a grace period after recovery; the exploitable window is the burst of queued price updates on sequencer restart, not the downtime itself.
