You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`IAccountExecute.sol` from [ERC-4337](./eip-4337.md).
67
+
-`IAccount.sol` and `IAccountExecute.sol` from [ERC-4337](./eip-4337.md).
69
68
-`IModularAccount.sol` to support module management and usage, and account identification.
70
69
- The function `isValidSignature` from [ERC-1271](./eip-1271.md)
71
70
@@ -78,7 +77,7 @@ Each step is modular, supporting different implementations, that allows for open
78
77
79
78
-`IModule.sol` described below and implement ERC-165 for `IModule`.
80
79
81
-
**Modules****May** implement one of the following module types
80
+
**Modules****MAY** implement any of the following module types
82
81
83
82
-`IValidationModule` to support validations for account.
84
83
-`IValidationHookModule` to support hooks for validations.
@@ -411,8 +410,7 @@ interface IValidationHookModule is IModule {
411
410
/// @param signature The signature of the message.
412
411
function preSignatureValidationHook(uint32 entityId, address sender, bytes32 hash, bytes calldata signature)
413
412
external
414
-
view
415
-
returns (bytes4);
413
+
view;
416
414
}
417
415
```
418
416
@@ -532,7 +530,7 @@ During execution uninstallation, the account MUST correctly clear flags and othe
532
530
533
531
Modular accounts support three different calls flows for validation: user op validation, runtime validation, and signature validation. User op validation happens within the account's implementation of the function `validateUserOp`, defined in the ERC-4337 interface `IAccount`. Runtime validation happens through the dispatcher function `executeWithAuthorization`, or when using direct call validation. Signature validation happens within the account's implementation of the function `isValidSignature`, defined in ERC-1271.
534
532
535
-
For each of these validation types, an account implementation may specify its own format for selecting which validation function to use, as well as any per-hook data for validation hooks.
533
+
For each of these validation types, an account implementation MAY specify its own format for selecting which validation function to use, as well as any per-hook data for validation hooks.
536
534
537
535
Within the implementation of each type of validation function, the modular account MUST check that the provided validation function applies to the given function selector intended to be run. Then, the account MUST execute all validation hooks of the corresponding type associated with the validation function in use. These hooks MUST be executed in the order specified during installation. After the execution of validation hooks, the account MUST invoke the validation function of the corresponding type. If any validation hooks or the validation function revert, the account MUST revert. It SHOULD include the module's revert data within its revert data.
538
536
@@ -588,7 +586,9 @@ This proposal includes several interfaces that build on ERC-4337. First, we stan
588
586
589
587
## Backwards Compatibility
590
588
591
-
TODO
589
+
Existing accounts that are deployed as proxies may have the ability to upgrade account implementations to one that supports this standard for modularity. Depending on implementation logic, existing modules may be wrapped in an adapter contract to adhere to the standard.
590
+
591
+
The standard also allows for flexibility in account implementations, including accounts that have certain features implemented without modules, so usage of modules may be gradually introduced.
0 commit comments