Skip to content

Commit 1241189

Browse files
authored
Fix documentation nits and add missing Changelog entries (#155)
1 parent c7bd22e commit 1241189

File tree

9 files changed

+56
-21
lines changed

9 files changed

+56
-21
lines changed

CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1+
## 15-05-2025
2+
3+
- `ERC7579Multisig`: Add an abstract multisig module for ERC-7579 accounts using ERC-7913 signer keys.
4+
- `ERC7579MultisigWeighted`: Add an abstract weighted multisig module that allows different weights to be assigned to signers.
5+
- `ERC7579MultisigConfirmation`: Add an abstract confirmation-based multisig module that each signer to provide a confirmation signature.
6+
- `ERC7579Executor`: Add an executor module that enables executing calls from accounts where the it's installed.
7+
- `ERC7579DelayedExecutor`: Add executor module that adds a delay before executing an account operation.
8+
19
## 06-05-2025
210

3-
- `ERC7913SignatureVerifierZKEmail`: Add ERC-7913 signature verifier that enables email-based authentication through zero-knowledge proofs.
11+
- `ERC7913ZKEmailVerifier`: Add ERC-7913 signature verifier that enables email-based authentication through zero-knowledge proofs.
412

513
## 05-05-2025
614

contracts/account/modules/ERC7579DelayedExecutor.sol

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,10 +257,9 @@ abstract contract ERC7579DelayedExecutor is ERC7579Executor {
257257
* design choice for efficiency, but module implementations may want to override this behavior
258258
* to clear scheduled operations during uninstallation for their specific use cases.
259259
*
260-
* WARNING: The account's delay will be removed if the account calls this function, allowing
261-
* immediate scheduling of operations. As an account operator, make sure to uninstall to a
262-
* predefined path in your account that properly handles the side effects of uninstallation.
263-
* See {AccountERC7579-uninstallModule}.
260+
* NOTE: Calling this function directly will remove the expiration ({getExpiration}) value and
261+
* will schedule a reset of the delay ({getDelay}) to `0` for the account. Reinstalling the
262+
* module will not immediately reset the delay if the delay reset hasn't taken effect yet.
264263
*/
265264
function onUninstall(bytes calldata) public virtual {
266265
_config[msg.sender].installed = false;

contracts/account/modules/ERC7579SignatureValidator.sol

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ contract ERC7579SignatureValidator is ERC7579Validator {
6565

6666
/**
6767
* @dev See {IERC7579Module-onInstall}.
68-
* Reverts with {ERC7579SignatureValidatorAlreadyInstalled} if the module is already installed.
6968
*
7069
* NOTE: An account can only call onInstall once. If called directly by the account,
7170
* the signer will be set to the provided data. Future installations will behave as a no-op.

contracts/account/paymaster/PaymasterERC20Guarantor.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ abstract contract PaymasterERC20Guarantor is PaymasterERC20 {
7171
* @dev Handles the refund process for guaranteed operations.
7272
*
7373
* If the operation was guaranteed, it attempts to get repayment from the user first and then refunds the guarantor.
74-
* Otherwise, fallback to {PaymasterERC20-refund}. See {_refundGuaranteed}.
74+
* Otherwise, fallback to {PaymasterERC20-_refund}.
7575
*
7676
* NOTE: For guaranteed user operations where the user paid the `actualGasCost` back, this function
7777
* doesn't call `super._refund`. Consider whether there are side effects in the parent contract that need to be executed.

contracts/interfaces/IERC7821.sol

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,21 @@ interface IERC7821 {
1111
* Reverts and bubbles up error if any call fails.
1212
*
1313
* `executionData` encoding:
14-
* - If `opData` is empty, `executionData` is simply `abi.encode(calls)`.
15-
* - Else, `executionData` is `abi.encode(calls, opData)`.
14+
*
15+
* * If `opData` is empty, `executionData` is simply `abi.encode(calls)`.
16+
* * Else, `executionData` is `abi.encode(calls, opData)`.
1617
* See: https://eips.ethereum.org/EIPS/eip-7579
1718
*
1819
* Supported modes:
19-
* - `bytes32(0x01000000000000000000...)`: does not support optional `opData`.
20-
* - `bytes32(0x01000000000078210001...)`: supports optional `opData`.
20+
*
21+
* * `bytes32(0x01000000000000000000...)`: does not support optional `opData`.
22+
* * `bytes32(0x01000000000078210001...)`: supports optional `opData`.
2123
*
2224
* Authorization checks:
23-
* - If `opData` is empty, the implementation SHOULD require that
25+
*
26+
* * If `opData` is empty, the implementation SHOULD require that
2427
* `msg.sender == address(this)`.
25-
* - If `opData` is not empty, the implementation SHOULD use the signature
28+
* * If `opData` is not empty, the implementation SHOULD use the signature
2629
* encoded in `opData` to determine if the caller can perform the execution.
2730
*
2831
* `opData` may be used to store additional data for authentication,
@@ -33,8 +36,9 @@ interface IERC7821 {
3336
/**
3437
* @dev This function is provided for frontends to detect support.
3538
* Only returns true for:
36-
* - `bytes32(0x01000000000000000000...)`: does not support optional `opData`.
37-
* - `bytes32(0x01000000000078210001...)`: supports optional `opData`.
39+
*
40+
* * `bytes32(0x01000000000000000000...)`: does not support optional `opData`.
41+
* * `bytes32(0x01000000000078210001...)`: supports optional `opData`.
3842
*/
3943
function supportsExecutionMode(bytes32 mode) external view returns (bool);
4044
}

contracts/interfaces/README.adoc

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
= Interfaces
2+
3+
[.readme-notice]
4+
NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/interfaces
5+
6+
== List of standardized interfaces
7+
8+
These interfaces are available as `.sol` files. These are useful to interact with third party contracts that implement them.
9+
10+
- {IERC7786GatewaySource}, {IERC7786Receiver}
11+
- {IERC7802}
12+
- {IERC7821}
13+
- {IERC7913SignatureVerifier}
14+
15+
== Detailed ABI
16+
17+
{{IERC7786GatewaySource}}
18+
19+
{{IERC7786Receiver}}
20+
21+
{{IERC7802}}
22+
23+
{{IERC7821}}
24+
25+
{{IERC7913SignatureVerifier}}

contracts/utils/README.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Miscellaneous contracts and libraries containing utility functions you can use t
1212
* {SignerECDSA}, {SignerP256}, {SignerRSA}: Implementations of an {AbstractSigner} with specific signature validation algorithms.
1313
* {SignerERC7702}: Implementation of {AbstractSigner} that validates signatures using the contract's own address as the signer, useful for delegated accounts following EIP-7702.
1414
* {SignerERC7913}, {MultiSignerERC7913}, {MultiSignerERC7913Weighted}: Implementations of {AbstractSigner} that validate signatures based on ERC-7913. Including a simple and weighted multisignature scheme.
15-
* {ERC7913SignatureVerifierP256}, {ERC7913SignatureVerifierRSA}, {ERC7913SignatureVerifierZKEmail}: Ready to use ERC-7913 signature verifiers for P256, RSA keys, and ZKEmail.
15+
* {ERC7913P256Verifier}, {ERC7913RSAVerifier}, {ERC7913ZKEmailVerifier}: Ready to use ERC-7913 signature verifiers for P256, RSA keys, and ZKEmail.
1616
* {SignerZKEmail}: Implementation of an {AbstractSigner} that enables email-based authentication through zero-knowledge proofs.
1717
* {ZKEmailUtils}: Library for ZKEmail signature validation utilities, enabling email-based authentication through zero-knowledge proofs.
1818
* {EnumerableSetExtended} and {EnumerableMapExtended}: Extensions of the `EnumerableSet` and `EnumerableMap` libraries with more types, including non-value types.
@@ -54,7 +54,7 @@ Miscellaneous contracts and libraries containing utility functions you can use t
5454

5555
{{ERC7913RSAVerifier}}
5656

57-
{{ERC7913SignatureVerifierZKEmail}}
57+
{{ERC7913ZKEmailVerifier}}
5858

5959
== Structs
6060

docs/modules/ROOT/pages/account-abstraction.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
= Account Abstraction
22

3-
Unlike Externally Owned Accounts (EOAs), smart contracts may contain arbitrary verification logic based on authentication mechanisms different to Ethereum's native xref:api:utils.adoc#ECDSA[ECDSA] and have execution advantages such as batching or gas sponsorship. To leverage these properties of smart contracts, the community has widely adopted https://eips.ethereum.org/EIPS/eip-4337[ERC-4337], a standard to process user operations through an alternative mempool.
3+
Unlike Externally Owned Accounts (EOAs), smart contracts may contain arbitrary verification logic based on authentication mechanisms different to Ethereum's native https://docs.openzeppelin.com/contracts/5.x/api/utils#ECDSA[ECDSA] and have execution advantages such as batching or gas sponsorship. To leverage these properties of smart contracts, the community has widely adopted https://eips.ethereum.org/EIPS/eip-4337[ERC-4337], a standard to process user operations through an alternative mempool.
44

55
The library provides multiple contracts for Account Abstraction following this standard as it enables more flexible and user-friendly interactions with applications. Account Abstraction use cases include wallets in novel contexts (e.g. embedded wallets), more granular configuration of accounts, and recovery mechanisms.
66

@@ -71,7 +71,7 @@ interface IAccountExecute {
7171
}
7272
```
7373

74-
NOTE: The `IAccountExecute` interface is optional. Developers might want to use xref:api:account.adoc#AccountERC7821[`AccountERC7821`] for a minimal batched execution interface or rely on ERC-7579, ERC-6909 or any other execution logic.
74+
NOTE: The `IAccountExecute` interface is optional. Developers might want to use xref:api:account.adoc#ERC7821[`ERC7821`] for a minimal batched execution interface or rely on ERC-7579, ERC-6909 or any other execution logic.
7575

7676
To build your own account, see xref:accounts.adoc[accounts].
7777

@@ -85,7 +85,7 @@ To build your own factory, see xref:accounts.adoc#accounts_factory[account facto
8585

8686
A Paymaster is an optional entity that can sponsor gas fees for Accounts, or allow them to pay for those fees in ERC-20 instead of native currency. This abstracts gas away of the user experience in the same way that computational costs of cloud servers are abstracted away from end-users.
8787

88-
To build your own paymaster, see xref:paymaster.adoc#paymaster[paymasters].
88+
To build your own paymaster, see xref:paymasters.adoc#paymaster[paymasters].
8989

9090
== Further notes
9191

test/account/modules/ERC7579SignatureValidator.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ describe('ERC7579SignatureValidator', function () {
6666
);
6767
});
6868

69-
it('reverts with ERC7579SignatureValidatorAlreadyInstalled when the validator is already installed for an account', async function () {
69+
it('behaves as a noop when the validator is already installed for an account', async function () {
7070
// First installation should succeed
7171
const signerData = ethers.solidityPacked(['address'], [signerECDSA.address]);
7272
await expect(this.mockFromAccount.onInstall(signerData)).to.not.be.reverted;

0 commit comments

Comments
 (0)