Skip to content
Lattice

ERC4337ValidationLib Constants

Git Source

ERC4337_VALIDATION_STORAGE_SLOT

keccak256(abi.encode(uint256(keccak256("lattice.storage.ERC4337Validation")) - 1)) & ~bytes32(uint256(0xff)).

bytes32 constant ERC4337_VALIDATION_STORAGE_SLOT = 0x63f3a16063eb3400d0c49a9883f78e71c0740febe009dfe0af21003612fc2a00;

SIG_VALIDATION_SUCCESS

ERC-4337 validationData results (low bit): success = 0, signature failure = 1. No time-range in v1.

uint256 constant SIG_VALIDATION_SUCCESS = 0;

SIG_VALIDATION_FAILED

uint256 constant SIG_VALIDATION_FAILED = 1;

DEFAULT_ENTRY_POINT

The blessed default EntryPoint (#58 item 9): ERC-4337 v0.9 (eth-infinitism singleton, deployed 2025-12-22). The account stores its own EntryPoint (set at init, admin-mutable), so this is only the deploy default — never hardcoded into validation. Other canonical singletons, for reference: v0.7 = 0x0000000071727De22E5E9d8BAf0edAc6f37da032, v0.8 = 0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108 (native EIP-7702). NOTE: v0.9 redefined nonReentrant as tx.origin == msg.sender && msg.sender.code.length == 0, so handleOps is only callable as a top-level tx from a code-less EOA bundler — contract relayers and EIP-7702-delegated EOAs (code.length == 23) cannot submit ops directly.

address constant DEFAULT_ENTRY_POINT = 0x433709009B8330FDa32311DF1C2AFA402eD8D009;