The scrvUSD oracle system lacks proper cross-chain synchronization mechanisms and L2 sequencer health checks, This creates opportunities for price manipulation across different chains.
Based on the project context from README.md, scrvUSD is designed to work across multiple chains. However, the current implementation has several critical issues:
No L2 Sequencer Health Validation:
Hardcoded Block Times:
From pyproject.toml
and test configurations, the system assumes consistent block times across chains
Missing Cross-Chain State Verification:
The IBlockHashRetain.vyi
interface lacks mechanisms to verify cross-chain state consistency:
Price manipulation across chains
Stale prices during L2 sequencer downtime
Incorrect liquidations due to chain-specific block time differences
System-wide oracle manipulation
Financial losses across multiple chains
Manual Review
Implement L2 Sequencer Health Check:
Implement Chain-Specific Block Time Configuration:
Add Cross-Chain State Verification:
Implement Emergency Shutdown for Chain-Specific Issues:
These enhancements provide:
L2 sequencer health monitoring
Chain-specific block time handling
Cross-chain state verification
Emergency shutdown capabilities
Proper synchronization across chains
I believe this to be at best informational severity as - The moment sequencer is up again, the price updates that retrieve storage values from mainnet will be pushed. To note, price updates are retrieved from storage proofs are retrieved from Ethereum scrvUSD contract, so the concept of the next updated price being outdated is not possible, given mainnet does not utilize sequencers. - There are no problems with small lags if used in liquidity pools due to fees. Fees generate spread within which price can be lagged. - All price updates are subjected to smoothing, and as you can see from the historical price movements as seen [here](https://coinmarketcap.com/currencies/savings-crvusd/), there is never a large discrepancy in prices (absolute terms), and even more unlikely given sequencer downtimes will unlikely be long. This small price changes can be safely arbitrage aligning with [protocol design](https://github.com/CodeHawks-Contests/2025-03-curve?tab=readme-ov-file#parameters) , along with the above mentioned fees - Combined with the above, the max price increments can be temporarily increased to more effectively match the most updated price.
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.