Skip to content
Lattice

ERC7821ExecutorLib Constants

Git Source

ERC165_MAP_IERC7821_SLOT

ERC-165 map slot for IERC7821 (type(IERC7821).interfaceId == 0x39922547, the XOR of execute(bytes32,bytes) ^ supportsExecutionMode(bytes32); ERC-7821 defines no canonical id). keccak256(abi.encode(bytes4(0x39922547), 0x9ca7f3e2e2bfb15fdf072b85dde92837cddacee6cf2f6b38cd06c9457c1c4200)).

bytes32 constant ERC165_MAP_IERC7821_SLOT = 0x78c1401e50bfb6276de93dc8c11adfbefc06555e8af1f7964bc4c850cbbd171c;

_MODE_HEAD_MASK

ERC-7821 mode ids. First byte 0x01 = batch; bytes [6:10) 0x78210001 mark the opData variant. Only the first 10 bytes are significant (_MODE_HEAD_MASK); the trailing modePayload is ignored.

bytes32 constant _MODE_HEAD_MASK = 0xffffffffffffffffffff00000000000000000000000000000000000000000000;

_BATCH_HEAD

bytes32 constant _BATCH_HEAD = 0x0100000000000000000000000000000000000000000000000000000000000000;

_BATCH_OPDATA_HEAD

bytes32 constant _BATCH_OPDATA_HEAD = 0x0100000000007821000100000000000000000000000000000000000000000000;

EXECUTE_TYPEHASH

EIP-712 type hash for a relayer-submitted (signed-opData) batch authorization. keccak256("Execute(bytes32 mode,bytes32 callsHash,uint256 nonce)").

bytes32 constant EXECUTE_TYPEHASH = 0xb63526befbf5b966e64c36954eb12c5d09096e0b0a8a06e90bd0c857b842ebcb;