The ScrvusdVerifier contracts use hardcoded storage slots to extract state from the scrvUSD contract.
If the scrvUSD contract is upgraded or its storage layout changes (which is common in contract upgrades), these hardcoded slot numbers would point to incorrect or completely different data.
The verifier would then extract incorrect values, leading to invalid price calculations and updates.
This creates tight coupling between the verifier contracts and the specific implementation of the scrvUSD contract.
If the scrvUSD contract is upgraded or its storage layout changes , the verifier contracts would extract incorrect data, leading to invalid price updates.
Consider using interfaces or getter functions instead of hardcoded storage slots.
Invalid, - srCRVUSD is a minimal proxy, meaning it can never by upgraded, see [here](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern#:~:text=Minimal%20proxies%20are%20distinct%20from,provide%20upgrade%20or%20authorization%20functionality.) and [here](https://www.rareskills.io/post/eip-1167-minimal-proxy-standard-with-initialization-clone-pattern) for more info. - Even if srcrvUSD is migrated in the future via a new minimal proxy contract deployment (which is highly unlikely), the verifier contracts can be migrated along with it via revoking the access-control within the `ScrvusdOracleV2.vy` and then granting access to a new oracle. This is also not within the scope of this contest.
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.