The project is compiled using Solidity ^0.8.27. Starting from Solidity 0.8.20, the compiler emits the PUSH0 opcode when targeting EVM versions at or above Shanghai. The default EVM target in modern toolchains (including Foundry and solc ≥0.8.20) is Shanghai unless explicitly overridden via build configuration.
Bytecode for this contract include the PUSH0 opcode. If the contract is deployed to an EVM-compatible chain that does not support PUSH0, deployment can fail during contract creation due to unsupported opcode execution. This is only a compilation / deployment environment compatibility concern.
Likelihood:
The default EVM target in modern toolchains (including Foundry and solc ≥0.8.20) is Shanghai unless explicitly overridden, meaning any deployment to a non-Shanghai-compatible network will encounter this issue without deliberate configuration changes.
Multi-chain deployments that include legacy or non-Shanghai-compatible EVM networks will trigger this incompatibility on every such network where the compiled bytecode is used.
Impact:
The contract may fail to deploy on legacy or non-Shanghai-compatible EVM networks, resulting in deployment-level incompatibility.
Contract deployment is prevented entirely in affected environments, with no runtime fallback or graceful degradation possible.
Explicitly define the target EVM version in the project's build configuration (e.g., foundry.toml) to match the intended deployment environment. For multi-chain deployments, maintain separate build profiles or ensure all target networks support the minimum required EVM version (Shanghai or later) before deploying contracts compiled with modern Solidity versions.
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.
The contest is complete and the rewards are being distributed.