AccountInit6900
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
| Name | Type | Description |
|---|---|---|
| entryPoint_ | address |
init
Runs the account module initializers. MUST be invoked via diamondCut's _init delegatecall.
function init(address owner) external;Parameters
| Name | Type | Description |
|---|---|---|
| owner | address | The account's admin — the authority that installs/uninstalls validations and executions. |