Skip to content
Lattice

ERC6900Executor

Git Source

Title: ERC6900Executor

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

ERC-6900 execution facet: the native execute / executeBatch (validation-gated, exec-hook-wrapped calls to arbitrary targets) and the explicit-auth executeWithRuntimeValidation. Together with the ModularAccount6900 fallback (which dispatches installed execution-module selectors) this completes the ERC-6900 execution surface of IERC6900Account.

Stateless delegator — logic lives in ERC6900ExecutorLib; it reads the registries owned by ERC6900ModuleManagerLib. Part of the ERC-6900 account blueprint (alternative to the ERC-7579 stack).

Notes:

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

Functions

execute

Executes a single call to target with value, gated by the caller's runtime validation.

function execute(address target, uint256 value, bytes calldata data)
        external
        payable
        virtual
        returns (bytes memory);

Parameters

NameTypeDescription
targetaddress
valueuint256
databytes

Returns

NameTypeDescription
<none>bytes

executeBatch

Executes a batch of calls atomically (any sub-call revert reverts all).

function executeBatch(Call[] calldata calls) external payable virtual returns (bytes[] memory);

Parameters

NameTypeDescription
callsCall[]

Returns

NameTypeDescription
<none>bytes[]

executeWithRuntimeValidation

Runs the validation function named by authorization then self-dispatches data.

function executeWithRuntimeValidation(bytes calldata data, bytes calldata authorization)
        external
        payable
        virtual
        returns (bytes memory);

Parameters

NameTypeDescription
databytes
authorizationbytes

Returns

NameTypeDescription
<none>bytes

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 ERC6900Executor methodIdentifiers (alphabetical by signature); kept in exact parity by ExportSelectorsParityTest. Chunks: execute(address,uint256,bytes) 0xb61d27f6 executeBatch((address,uint256,bytes)[]) 0x34fcd5be executeWithRuntimeValidation(bytes,bytes) 0xf2680c0f

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

Returns

NameTypeDescription
selectorsbytes