Skip to content
Lattice

ERC7579ModuleConfig

Git Source

Inherits: IERC7579ModuleConfig

Title: ERC7579ModuleConfig

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

ERC-7579 module-management facet: registers/uninstalls modules and runs batches submitted by an installed executor module. v1 supports EXECUTOR modules (type 2). Together with the ERC7821Executor facet (execute / supportsExecutionMode) the Diamond presents the ERC-7579 account surface.

Stateless delegator — logic/storage live in ERC7579ModuleConfigLib. "Modules-as-facets": diamondCut remains the selector authority; this registry tracks installed executor modules and gates executeFromExecutor. Validator/hook/fallback consumption is a planned v2.

Notes:

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

Functions

installModule

function installModule(uint256 moduleTypeId, address module, bytes calldata initData) external virtual;

Parameters

NameTypeDescription
moduleTypeIduint256
moduleaddress
initDatabytes

uninstallModule

function uninstallModule(uint256 moduleTypeId, address module, bytes calldata deInitData) external virtual;

Parameters

NameTypeDescription
moduleTypeIduint256
moduleaddress
deInitDatabytes

isModuleInstalled

function isModuleInstalled(uint256 moduleTypeId, address module, bytes calldata additionalContext)
        external
        view
        virtual
        returns (bool);

Parameters

NameTypeDescription
moduleTypeIduint256
moduleaddress
additionalContextbytes

Returns

NameTypeDescription
<none>bool

accountId

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

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

Returns

NameTypeDescription
<none>string

supportsModule

Whether moduleTypeId is supported (v1: EXECUTOR, type 2).

function supportsModule(uint256 moduleTypeId) external view virtual returns (bool);

Parameters

NameTypeDescription
moduleTypeIduint256

Returns

NameTypeDescription
<none>bool

executeFromExecutor

Runs a batch on behalf of an installed executor module (caller must be a type-2 module).

function executeFromExecutor(bytes32 mode, bytes calldata executionCalldata)
        external
        payable
        virtual
        returns (bytes[] memory returnData);

Parameters

NameTypeDescription
modebytes32
executionCalldatabytes

Returns

NameTypeDescription
returnDatabytes[]

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 ERC7579ModuleConfig methodIdentifiers (alphabetical by signature); kept in exact parity by ExportSelectorsParityTest. Chunks: accountId() 0x9cfd7cff executeFromExecutor(bytes32,bytes) 0xd691c964 installModule(uint256,address,bytes) 0x9517e29f isModuleInstalled(uint256,address,bytes) 0x112d3a7d supportsModule(uint256) 0xf2dc691d uninstallModule(uint256,address,bytes) 0xa71763a8

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

Returns

NameTypeDescription
selectorsbytes