Skip to content
Lattice

AccountInit6900

Git Source

Title: AccountInit6900

Author: David Dada <daveproxy80@gmail.com> (https://github.com/dadadave80)

One-shot initializer for an ERC-6900 modular Diamond account. Delegatecalled by the proxy's diamondCut during Diamond.initialize (so address(this) is the account), it seeds the admin, the EIP-712 domain (for ERC-7739 signature binding), the trusted EntryPoint, and the account's ERC-165 interface ids.

Unlike the single-owner ERC-7579 AccountInit (which self-administers and bootstraps via AccountSigner), the ERC-6900 account has no default signer — its authority lives in installed VALIDATION modules. Config (install/uninstall) is admin-gated in ERC6900ModuleManagerLib, so admin is granted to the owner EOA, which installs the account's validation(s) to make it usable (the counterfactual-userOp bootstrap — an initial validation carried in initCode — is wired in the reference-modules + e2e work). The EntryPoint is fixed per factory deployment (immutable, read from this contract's own code even under delegatecall), and is shared with the executor's privileged-caller bypass and the validateUserOp path (ERC4337ValidationLib).

Constants

ENTRY_POINT

The EntryPoint every account from this blueprint trusts to call validateUserOp.

address public immutable ENTRY_POINT;

Functions

constructor

constructor(address entryPoint_);

Parameters

NameTypeDescription
entryPoint_address

init

Runs the account module initializers. MUST be invoked via diamondCut's _init delegatecall.

function init(address owner) external;

Parameters

NameTypeDescription
owneraddressThe account's admin — the authority that installs/uninstalls validations and executions.