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
Copy file name to clipboardExpand all lines: content/community-contracts/account-modules.mdx
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,12 +10,12 @@ ERC-7579 defines a standardized interface for modular smart accounts. This stand
10
10
11
11
### Accounts
12
12
13
-
OpenZeppelin offers an implementation of an [`AccountERC7579`](contracts/v5.x/api/account.mdx#AccountERC7579) contract that allows installing modules compliant with this standard. There’s also an [`AccountERC7579Hooked`](contracts/v5.x/api/account.mdx#AccountERC7579Hooked) variant that supports installation of hooks. Like [most accounts](accounts.mdx#handling_initialization), an instance should define an initializer function where the first module that controls the account will be set:
13
+
OpenZeppelin offers an implementation of an [`AccountERC7579`](/community-contracts/api/account#AccountERC7579) contract that allows installing modules compliant with this standard. There’s also an [`AccountERC7579Hooked`](/community-contracts/api/account#AccountERC7579Hooked) variant that supports installation of hooks. Like [most accounts](accounts#handling_initialization), an instance should define an initializer function where the first module that controls the account will be set:
For simplicity, the [`AccountERC7579Hooked`](contracts/v5.x/api/account.mdx#AccountERC7579Hooked) only supports a single hook. A common workaround is to install a [single hook with a multiplexer pattern](https://github.com/rhinestonewtf/core-modules/blob/7afffccb44d73dbaca2481e7b92bce0621ea6449/src/HookMultiPlexer/HookMultiPlexer.sol) to extend the functionality to multiple hooks.
18
+
For simplicity, the [`AccountERC7579Hooked`](/community-contracts/api/account#AccountERC7579Hooked) only supports a single hook. A common workaround is to install a [single hook with a multiplexer pattern](https://github.com/rhinestonewtf/core-modules/blob/7afffccb44d73dbaca2481e7b92bce0621ea6449/src/HookMultiPlexer/HookMultiPlexer.sol) to extend the functionality to multiple hooks.
19
19
</Callout>
20
20
21
21
### Modules
@@ -35,12 +35,12 @@ See [popular module implementations](https://erc7579.com/modules).
35
35
36
36
The library provides _standard composable modules_ as building blocks with an internal API for developers. By combining these components, you can create a rich set of variants without including unnecessary features.
37
37
38
-
A good starting point is the [`ERC7579Executor`](contracts/v5.x/api/account.mdx#ERC7579Executor) or [`ERC7579Validator`](contracts/v5.x/api/account.mdx#ERC7579Validator), which include an opinionated base layer easily combined with other abstract modules. Hooks and fallback handlers are more straightforward to implement directly from interfaces:
38
+
A good starting point is the [`ERC7579Executor`](/community-contracts/api/account#ERC7579Executor) or [`ERC7579Validator`](/community-contracts/api/account#ERC7579Validator), which include an opinionated base layer easily combined with other abstract modules. Hooks and fallback handlers are more straightforward to implement directly from interfaces:
Explore these abstract ERC-7579 modules in the [API Reference](contracts/v5.x/api/account.mdx#modules).
43
+
Explore these abstract ERC-7579 modules in the [API Reference](/community-contracts/api/account#modules).
44
44
</Callout>
45
45
46
46
#### Execution Modes
@@ -97,24 +97,24 @@ Social recovery is not a single solution but a design space with multiple config
97
97
* Cancellation windows
98
98
* Confirmation requirements
99
99
100
-
To support _different guardian types_, we can leverage ERC-7913 as discussed in the [multisig](multisig.mdx#beyond_standard_signature_verification) section. For ERC-7579 modules, this is implemented through the [`ERC7579Multisig`](contracts/v5.x/api/account.mdx#ERC7579Multisig) validator.
100
+
To support _different guardian types_, we can leverage ERC-7913 as discussed in the [multisig](multisig#beyond_standard_signature_verification) section. For ERC-7579 modules, this is implemented through the [`ERC7579Multisig`](/community-contracts/api/account#ERC7579Multisig) validator.
101
101
102
-
Combined with an [`ERC7579Executor`](contracts/v5.x/api/account.mdx#ERC7579Executor), it provides a basic foundation that can be extended with more sophisticated features:
102
+
Combined with an [`ERC7579Executor`](/community-contracts/api/account#ERC7579Executor), it provides a basic foundation that can be extended with more sophisticated features:
For enhanced security, you can extend this foundation with scheduling, delays, and cancellations using [`ERC7579DelayedExecutor`](contracts/v5.x/api/account.mdx#ERC7579DelayedExecutor). This allows guardians to schedule recovery operations with a time delay, providing a security window to detect and cancel suspicious recovery attempts before they execute:
106
+
For enhanced security, you can extend this foundation with scheduling, delays, and cancellations using [`ERC7579DelayedExecutor`](/community-contracts/api/account#ERC7579DelayedExecutor). This allows guardians to schedule recovery operations with a time delay, providing a security window to detect and cancel suspicious recovery attempts before they execute:
The delayed executor’s signature validation doesn’t require a nonce since operations are uniquely identified by their [operation id](contracts/v5.x/api/account.mdx#ERC7579DelayedExecutor-hashOperation-address-bytes32-bytes32-bytes-) and cannot be scheduled twice.
111
+
The delayed executor’s signature validation doesn’t require a nonce since operations are uniquely identified by their [operation id](/community-contracts/api/account#ERC7579DelayedExecutor-hashOperation-address-bytes32-bytes32-bytes-) and cannot be scheduled twice.
112
112
</Callout>
113
113
114
114
These implementations demonstrate how to build progressively more secure social recovery mechanisms, from basic multi-signature recovery to time-delayed recovery with cancellation capabilities.
115
115
116
116
For additional functionality, developers can use:
117
117
118
-
*[`ERC7579MultisigWeighted`](contracts/v5.x/api/account.mdx#ERC7579MultisigWeighted) to assign different weights to signers
119
-
*[`ERC7579MultisigConfirmation`](contracts/v5.x/api/account.mdx#ERC7579MultisigConfirmation) to implement a confirmation system that verifies signatures when adding signers
120
-
*[`ERC7579MultisigStorage`](contracts/v5.x/api/account.mdx#ERC7579MultisigStorage) to allow guardians to presign recovery operations for more flexible coordination
118
+
*[`ERC7579MultisigWeighted`](/community-contracts/api/account#ERC7579MultisigWeighted) to assign different weights to signers
119
+
*[`ERC7579MultisigConfirmation`](/community-contracts/api/account#ERC7579MultisigConfirmation) to implement a confirmation system that verifies signatures when adding signers
120
+
*[`ERC7579MultisigStorage`](/community-contracts/api/account#ERC7579MultisigStorage) to allow guardians to presign recovery operations for more flexible coordination
0 commit comments