web3wagmi
← All standards

ERC-6900 Modular Smart Contract Accounts

DraftERCcreated 2023-04-18requires ERC-165, ERC-1271, ERC-4337

Interfaces for smart contract accounts and modules, optionally supporting upgradability and introspection

Authors: Adam Egyed (@adamegyed), Fangting Liu (@trinity-0111), Jay Paik (@jaypaik), Yoav Weiss (@yoavw), Huawei Gu (@huaweigu), Daniel Lim (@dlim-circle), Ruben Koch (@0xrubes), David Philipson (@dphilipson), Howy Ho (@howydev), Nikita Belenkov (@nikita-quantstamp), zer0dot (@zer0dot), David Kim (@PowerStream3604)

ERC-165 interface ids

Computed here as the XOR of the selectors each interface defines.

IERC6900Module0x46c0c1b4
IERC6900ExecutionModule0xae5628c6
IERC6900ExecutionHookModule0xb02cc192

Functions this standard introduces (17)

0x9cfd7cffaccountId()view
0xb61d27f6execute(address,uint256,bytes)payable
0x34fcd5beexecuteBatch((address,uint256,bytes)[])payable
0xf2680c0fexecuteWithRuntimeValidation(bytes,bytes)payable
0xae5628c6executionManifest()pure
0x757c8a26getExecutionData(bytes4)view
0xab9c1785installValidation((bytes25),bytes4[],bytes,bytes[])
0xa1308f27moduleId()view
0x6d61fe70onInstall(bytes)
0x8a91b0e3onUninstall(bytes)
0x5d413a81postExecutionHook(uint32,bytes)
0xed6dfb13preExecutionHook(uint32,address,uint256,bytes)
0x3d6bda32preRuntimeValidationHook(uint32,address,uint256,bytes,bytes)
0x3f41826epreSignatureValidationHook(uint32,address,bytes32,bytes)view
0xbb422bc7uninstallValidation((bytes24),bytes,bytes[])
0x465d33e0validateRuntime(address,uint32,address,uint256,bytes,bytes)
0xe7db7f7evalidateSignature(address,uint32,address,bytes32,bytes)view

Inherited (1)

0x01ffc9a7supportsInterface(bytes4)ERC-165

Events (2)

Topic0 is the keccak256 hash of the signature, which is what a log filter matches on.

0xc36a28045e90a1163d24d4216c8cfd8c44c4e835a486fb84d511d6b9e0736db9ValidationInstalled(address,uint32)
0x43f7309d11ba6b2e180e9ab8a6da09d2fa1f585d7daed4b26c1c7f2a90b867a2ValidationUninstalled(address,uint32,bool)

Depends on (3)

Proposals this one names in its requires field.

What the specification covers

Compare with

Parsed from the canonical specification · discussion