Beginner FriendlyFoundry
100 EXP
View results
Submission Details
Severity: low
Valid

Solidity version 0.8.22 may not work on `Arbitrum` chain due to `PUSH0` opcode

Summary

The project uses the solidity version 0.8.22 and the contracts will be deployed on Arbitrum. The problem with compiling is that Arbitrum is NOT compatible with solidity version 0.8.20 and later.

Vulnerability Details

The compiler for Solidity 0.8.20 switches the default target EVM version to Shanghai, which includes the new PUSH0 opcode. This opcode is not yet implemented on some L2s including Arbitrum, meaning contracts deployed on those chains will be non-functional. The contracts in scope use a solidity version 0.8.22 and after deploying on Arbitrum the contracts will be unusable.

Impact

Corrupted or non-functional contracts when deployed on Arbitrum.
Here is a link to the Arbitrum documentation:
https://docs.arbitrum.io/for-devs/concepts/differences-between-arbitrum-ethereum/solidity-support

Tools Used

VS Code

Recommendations

Use the latest compatible with Arbitrum solidity version that is 0.8.19.

Updates

Lead Judging Commences

inallhonesty Lead Judge over 1 year ago
Submission Judgement Published
Validated
Assigned finding tags:

Incompatible Pragma Version on Arbi

Information on compatibility here: https://docs.arbitrum.io/for-devs/concepts/differences-between-arbitrum-ethereum/solidity-support Impact - failed deployment - Protocol would need to adjust their pragma versions to be compatible and redeploy

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.