Skip to content
Lattice

ERC6900ModuleManager

Git Source

Title: ERC6900ModuleManager

Authors: David Dada <daveproxy80@gmail.com> (https://github.com/dadadave80), Modified from ERC-6900 reference implementation (https://github.com/erc6900/reference-implementation)

ERC-6900 module-configuration facet: installs/uninstalls execution modules (selector → module + execution hooks) and validation modules (ModuleEntity → flags + selectors + validation/exec hooks). The execute / executeBatch / executeWithRuntimeValidation dispatch surface (the rest of IERC6900Account) lands in the executor facet; this facet is the install/uninstall half.

Stateless delegator — logic/storage live in ERC6900ModuleManagerLib. Part of the ERC-6900 account blueprint, an alternative flavor to the ERC-7579 stack (ERC7579ModuleConfig).

Notes:

  • lattice-version: 0.1.0
  • lattice-source: ERC-6900

Functions

installExecution

Installs an execution module from its manifest (execution functions, execution hooks, interface ids).

function installExecution(address module, ExecutionManifest calldata manifest, bytes calldata installData)
        external
        virtual;

Parameters

NameTypeDescription
moduleaddress
manifestExecutionManifest
installDatabytes

uninstallExecution

Uninstalls an execution module (reverses its manifest).

function uninstallExecution(address module, ExecutionManifest calldata manifest, bytes calldata uninstallData)
        external
        virtual;

Parameters

NameTypeDescription
moduleaddress
manifestExecutionManifest
uninstallDatabytes

installValidation

Installs (or updates) a validation function with its allowed selectors and associated hooks.

function installValidation(
        ValidationConfig validationConfig,
        bytes4[] calldata selectors,
        bytes calldata installData,
        bytes[] calldata hooks
    ) external virtual;

Parameters

NameTypeDescription
validationConfigValidationConfig
selectorsbytes4[]
installDatabytes
hooksbytes[]

uninstallValidation

Uninstalls a validation function and tears down its selectors and hooks.

function uninstallValidation(
        ModuleEntity validationFunction,
        bytes calldata uninstallData,
        bytes[] calldata hookUninstallData
    ) external virtual;

Parameters

NameTypeDescription
validationFunctionModuleEntity
uninstallDatabytes
hookUninstallDatabytes[]

accountId

ERC-6900 account identifier, "vendorname.accountname.semver".

function accountId() external view virtual returns (string memory);

Returns

NameTypeDescription
<none>string

exportSelectors

ERC-8153 selector export: this facet's cuttable selectors, tightly packed (4 bytes each).

Excludes exportSelectors() itself (0x0ef22643) - it is never cut into a diamond. Order matches forge inspect ERC6900ModuleManager methodIdentifiers (alphabetical by signature); kept in exact parity by ExportSelectorsParityTest. Chunks: accountId() 0x9cfd7cff installExecution(address,((bytes4,bool,bool)[],(bytes4,uint32,bool,bool)[],bytes4[]),bytes) 0x001a63e9 installValidation(bytes25,bytes4[],bytes,bytes[]) 0x1bbf564c uninstallExecution(address,((bytes4,bool,bool)[],(bytes4,uint32,bool,bool)[],bytes4[]),bytes) 0x93b1dc61 uninstallValidation(bytes24,bytes,bytes[]) 0xb6b1ccfe

function exportSelectors() external pure virtual returns (bytes memory selectors);

Returns

NameTypeDescription
selectorsbytes