ERC-7562 generally blocks access from opcodes that access information outside of storage and code.
The blocked opcodes are:
GAS opcode is allowed, but only if followed immediately by *CALL instructions. This is a common way to pass all remaining gas to an external call, and it means that the actual value is consumed from the stack immediately and cannot be accessed by any other opcode.
Unassigned opcodes are banned.
Revert on "out of gas" is forbidden, as it can leak the gas limit or the current call stack depth.
CREATE2 is allowed exactly once in the deployment phase and must deploy code for the
Access to an address without a deployed code is forbidden for
*CALL opcodes in the canonical ERC-4337 mempool.
Access to the
sender address is allowed without deployed code, but this is possible only in factory code during the deployment phase.
EXTCODESIZE ISZERO opcode may be called to the EntryPoint address. This pattern is used to check the destination has code before the
depositTo function is called.
depositTo(sender) function in the EntryPoint may be called with any value either from the
The fallback function may be called from the
sender with any value.
Access to the EntryPoint is forbidden during validation except for:
- Calls to
EXTCODESIZE ISZEROper OP-051
- Calls to
- Calls to the
sender's fallback function per OP-053
Except for calls to the EntryPoint as specified in OP-051, OP-052, and OP-053,
CALL opcodes with
value is forbidden during validation.
Precompiles are restricted to:
- Only known accepted precompiles on the network that do not access anything in the blockchain state or environment
- The core precompiles 0x1 ... 0x9
- The RIP-7212 sec256r1 pre-compile
Transient Storage slots defined in EIP-1153 and accessed using
0x5d) opcodes are treated exactly like persistent storage (SLOAD/SSTORE).
Updated about 1 month ago