The protocol is deployed on ZKsync Era (a ZK rollup L2) but does not check the L2 sequencer uptime status before using Chainlink oracle data. The oracle_lib._stale_check_latest_round_data() function only validates price staleness and round data consistency, without verifying sequencer availability:
On L2 networks, when the sequencer goes down:
Users cannot submit transactions (no deposits, no repayments, no collateral additions)
Oracle prices may become stale during the downtime
When the sequencer recovers, oracle prices update rapidly to reflect the current market
Positions that were healthy before downtime may now be liquidatable
Likelihood: Low -- ZKsync Era's sequencer has been generally reliable, but centralized sequencers are a known single point of failure. Downtime events have occurred on similar L2s (Arbitrum, Optimism).
Impact: High -- During sequencer downtime:
Users cannot add collateral or repay debt to maintain their health factor
When the sequencer comes back online, oracle prices jump to current values
Positions that were healthy before downtime become immediately liquidatable
MEV bots can front-run recovery to liquidate positions before users can react
Real-World Precedent: The Chainlink L2 Sequencer Uptime Feed is specifically designed to prevent this attack vector. Aave V3 on Arbitrum/Optimism implements this check.
How the attack works:
User has a healthy position: 10 ETH collateral ($20,000), 8,000 DSC minted (250% collateral ratio)
ZKsync Era sequencer goes down for 4 hours
During downtime, ETH crashes from $2,000 to$1,400 (30% drop)
User wants to add collateral but CANNOT -- sequencer is down, no transactions accepted
Sequencer recovers, oracle immediately updates to $1,400
User's health factor: (14000 * 50/100 * 1e18) / 8000e18 = 0.875e18 < 1e18
MEV bot immediately liquidates the user, capturing the 10% bonus
Expected outcome: Users are liquidated unfairly during sequencer recovery with no opportunity to add collateral.
Integrate a Chainlink L2 Sequencer Uptime Feed check with a grace period:
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.