0.8.22 targets an EVM version incompatible with Arbitrum at time of deploymentSantasList.sol and SantaToken.sol are locked to pragma solidity 0.8.22. By default, solc versions 0.8.20 and above target the Shanghai EVM version, which emits the PUSH0 opcode. At the time this codebase targeted deployment, some L2s — including Arbitrum — had not yet upgraded their EVM to support PUSH0, meaning contracts compiled with default settings for 0.8.22 would fail to deploy (or deploy with unusable bytecode) on those chains unless the compiler's evmVersion was explicitly pinned to a pre-Shanghai target (e.g. paris).
Impact: Low — deployment simply fails outright during testing/deployment on the affected chain; no funds are ever at risk, and the issue is caught before any live usage.
Likelihood: Low — only manifests if the team actually attempts deployment to a chain that lags in EVM-version support, and is trivially fixed by pinning evmVersion.
This is a compiler/deployment-configuration issue rather than something demonstrable via a Foundry unit test. It is confirmed by inspecting the compiled artifact for the PUSH0 opcode (0x5f) and cross-referencing it against the target chain's supported EVM version, or by attempting deployment to the target chain's testnet and observing the deployment revert.
Update the foundry.toml settings with solidity compiler version along with the evm_version.
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.