Contracts are declaring Solidity pragma == 0.8.20 for solc compiler, without declaring EVM version in the foundry.toml file (Paris, Shanghai, Cancun etc).
Since Shanghai introduced the PUSH0 opcode and support for said opcode was introduced to Solidity in 0.8.20, the contracts would be incompatible with networks that haven't yet upgraded to Shanghai, such as Arbitrum. Adding an evm_version=xxx config to the foundry.toml file will prevent this
Further, the pragma declarations are very restrictive in only using 0.8.20- when recoverable-wrapper is used as a dependency, host projects may be using other Solidity versions (we are up to 0.8.26 now) and so a more inclusive pragma would drive adoption via easier integration.
Consider pragma solidity ^0.8.0 or pragma solidity >= 0.8.20 for better composability
Contracts are declaring Solidity pragma == 0.8.20 for solc compiler, without declaring EVM version in the foundry.toml file (Paris, Shanghai, Cancun etc).
Since Shanghai introduced the
PUSH0opcode and support for said opcode was introduced to Solidity in 0.8.20, the contracts would be incompatible with networks that haven't yet upgraded to Shanghai, such as Arbitrum. Adding anevm_version=xxxconfig to the foundry.toml file will prevent thisFurther, the pragma declarations are very restrictive in only using 0.8.20- when recoverable-wrapper is used as a dependency, host projects may be using other Solidity versions (we are up to 0.8.26 now) and so a more inclusive pragma would drive adoption via easier integration.
Consider
pragma solidity ^0.8.0orpragma solidity >= 0.8.20for better composability