From 25eb6777fe25e39ee0f50a7cfcbf50c260abf508 Mon Sep 17 00:00:00 2001 From: Olexandr88 Date: Wed, 9 Apr 2025 01:53:06 +0300 Subject: [PATCH 01/16] Add github release tag to readme. (#5627) Co-authored-by: Hadrien Croubois --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 60d0a430a1d..2f92281b3bf 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # OpenZeppelin +[![Github Release](https://img.shields.io/github/v/tag/OpenZeppelin/openzeppelin-contracts.svg?filter=v*&sort=semver&label=github)](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/latest) [![NPM Package](https://img.shields.io/npm/v/@openzeppelin/contracts.svg)](https://www.npmjs.org/package/@openzeppelin/contracts) [![Coverage Status](https://codecov.io/gh/OpenZeppelin/openzeppelin-contracts/graph/badge.svg)](https://codecov.io/gh/OpenZeppelin/openzeppelin-contracts) [![GitPOAPs](https://public-api.gitpoap.io/v1/repo/OpenZeppelin/openzeppelin-contracts/badge)](https://www.gitpoap.io/gh/OpenZeppelin/openzeppelin-contracts) From fba8c4f58e1c8c1ddc60e61912b0cdbf479f3ac3 Mon Sep 17 00:00:00 2001 From: Maxim Tiron Date: Fri, 9 May 2025 18:48:05 +0300 Subject: [PATCH 02/16] Update hardhat.config.js (#5675) --- hardhat.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardhat.config.js b/hardhat.config.js index 17ebf45eeb7..8f326b5a58c 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -1,5 +1,5 @@ /// ENVVAR -// - COMPILER: compiler version (default: 0.8.24) +// - COMPILER: compiler version (default: 0.8.27) // - SRC: contracts folder to compile (default: contracts) // - RUNS: number of optimization runs (default: 200) // - IR: enable IR compilation (default: false) From 5702d954c6382ca65252c7c33f7838e079a54384 Mon Sep 17 00:00:00 2001 From: Gonzalo Othacehe Date: Mon, 23 Jun 2025 21:08:42 -0300 Subject: [PATCH 03/16] fix: change SlotDerivation usage to 'for *' in template and generated code --- contracts/utils/SlotDerivation.sol | 2 +- scripts/generate/templates/SlotDerivation.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/utils/SlotDerivation.sol b/contracts/utils/SlotDerivation.sol index df23efa284a..74dfbbded44 100644 --- a/contracts/utils/SlotDerivation.sol +++ b/contracts/utils/SlotDerivation.sol @@ -16,7 +16,7 @@ pragma solidity ^0.8.20; * contract Example { * // Add the library methods * using StorageSlot for bytes32; - * using SlotDerivation for bytes32; + * using SlotDerivation for *; * * // Declare a namespace * string private constant _NAMESPACE = ""; // eg. OpenZeppelin.Slot diff --git a/scripts/generate/templates/SlotDerivation.js b/scripts/generate/templates/SlotDerivation.js index a00e98167f6..931c9fc25e8 100644 --- a/scripts/generate/templates/SlotDerivation.js +++ b/scripts/generate/templates/SlotDerivation.js @@ -17,7 +17,7 @@ pragma solidity ^0.8.20; * contract Example { * // Add the library methods * using StorageSlot for bytes32; - * using SlotDerivation for bytes32; + * using SlotDerivation for *; * * // Declare a namespace * string private constant _NAMESPACE = ""; // eg. OpenZeppelin.Slot From 659d4b2ff882c24a24f05881bd1ab6220081b558 Mon Sep 17 00:00:00 2001 From: Gonzalo Othacehe Date: Mon, 23 Jun 2025 20:58:36 -0300 Subject: [PATCH 04/16] Merge branch 'typo-fixes' of github.com:OpenZeppelin/openzeppelin-contracts into typo-fixes --- README.md | 2 +- contracts/utils/cryptography/ECDSA.sol | 1 + contracts/utils/cryptography/README.adoc | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2f92281b3bf..2cb5e35ce70 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To keep your system secure, you should **always** use the installed code as-is, The guides in the [documentation site](https://docs.openzeppelin.com/contracts) will teach about different concepts, and how to use the related contracts that OpenZeppelin Contracts provides: * [Access Control](https://docs.openzeppelin.com/contracts/access-control): decide who can perform each of the actions on your system. -* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives, and distribute them via [Crowdsales](https://docs.openzeppelin.com/contracts/crowdsales). +* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives. * [Utilities](https://docs.openzeppelin.com/contracts/utilities): generic useful tools including non-overflowing math, signature verification, and trustless paying systems. The [full API](https://docs.openzeppelin.com/contracts/api/token/ERC20) is also thoroughly documented, and serves as a great reference when developing your smart contract application. You can also ask for help or follow Contracts' development in the [community forum](https://forum.openzeppelin.com). diff --git a/contracts/utils/cryptography/ECDSA.sol b/contracts/utils/cryptography/ECDSA.sol index 6493f56338a..f2fc24e6e87 100644 --- a/contracts/utils/cryptography/ECDSA.sol +++ b/contracts/utils/cryptography/ECDSA.sol @@ -50,6 +50,7 @@ library ECDSA { * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it. * * Documentation for signature generation: + * * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] */ diff --git a/contracts/utils/cryptography/README.adoc b/contracts/utils/cryptography/README.adoc index 37a982448ec..c87446de76e 100644 --- a/contracts/utils/cryptography/README.adoc +++ b/contracts/utils/cryptography/README.adoc @@ -1,7 +1,7 @@ = Cryptography [.readme-notice] -NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/utils/cryptography +NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/utils#cryptography A collection of contracts and libraries that implement various signature validation schemes and cryptographic primitives. These utilities enable secure authentication, multisignature operations, and advanced cryptographic operations in smart contracts. From 6caac66f0297de6fed6f021d1f27aeb33253bb2f Mon Sep 17 00:00:00 2001 From: sellskin Date: Tue, 1 Jul 2025 16:17:51 +0800 Subject: [PATCH 05/16] chore: remove redundant word (#5774) Signed-off-by: sellskin Co-authored-by: Hadrien Croubois --- contracts/utils/cryptography/draft-ERC7739Utils.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/draft-ERC7739Utils.sol b/contracts/utils/cryptography/draft-ERC7739Utils.sol index ec79fdd224c..e4df5d60206 100644 --- a/contracts/utils/cryptography/draft-ERC7739Utils.sol +++ b/contracts/utils/cryptography/draft-ERC7739Utils.sol @@ -57,7 +57,7 @@ library ERC7739Utils { * - `APP_DOMAIN_SEPARATOR` is the EIP-712 {EIP712-_domainSeparatorV4} of the application smart contract that is * requesting the signature verification (though ERC-1271). * - `contentsHash` is the hash of the underlying data structure or message. - * - `contentsDescr` is a descriptor of the "contents" part of the the EIP-712 type of the nested signature. + * - `contentsDescr` is a descriptor of the "contents" part of the EIP-712 type of the nested signature. * * NOTE: This function returns empty if the input format is invalid instead of reverting. * data instead. From 33513d1763e9261fc16cb1d78626aba8d2c4eb18 Mon Sep 17 00:00:00 2001 From: Micke <155267459+reallesee@users.noreply.github.com> Date: Sat, 12 Jul 2025 22:54:50 +0200 Subject: [PATCH 06/16] Explicit Initialization of Loop Counter in escapeJSON Function (#5796) Co-authored-by: Hadrien Croubois --- contracts/utils/Strings.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/Strings.sol b/contracts/utils/Strings.sol index c67bff5a1b1..678315bcf7f 100644 --- a/contracts/utils/Strings.sol +++ b/contracts/utils/Strings.sol @@ -465,7 +465,7 @@ library Strings { bytes memory output = new bytes(2 * buffer.length); // worst case scenario uint256 outputLength = 0; - for (uint256 i; i < buffer.length; ++i) { + for (uint256 i = 0; i < buffer.length; ++i) { bytes1 char = bytes1(_unsafeReadBytesOffset(buffer, i)); if (((SPECIAL_CHARS_LOOKUP & (1 << uint8(char))) != 0)) { output[outputLength++] = "\\"; From 7d823fe06e72a4c0ec59f9c4fcc8417cc87b98ca Mon Sep 17 00:00:00 2001 From: DeFi Warlock Date: Mon, 21 Jul 2025 16:11:44 +0200 Subject: [PATCH 07/16] chore: fix typos (#5807) Co-authored-by: Hadrien Croubois --- docs/modules/ROOT/pages/utilities.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/utilities.adoc b/docs/modules/ROOT/pages/utilities.adoc index f0114726f2f..e2c8772fa2a 100644 --- a/docs/modules/ROOT/pages/utilities.adoc +++ b/docs/modules/ROOT/pages/utilities.adoc @@ -263,7 +263,7 @@ Some use cases require more powerful data structures than arrays and mappings of - xref:api:utils.adoc#EnumerableSet[`EnumerableSet`]: A https://en.wikipedia.org/wiki/Set_(abstract_data_type)[set] with enumeration capabilities. - xref:api:utils.adoc#EnumerableMap[`EnumerableMap`]: A `mapping` variant with enumeration capabilities. - xref:api:utils.adoc#MerkleTree[`MerkleTree`]: An on-chain https://wikipedia.org/wiki/Merkle_Tree[Merkle Tree] with helper functions. -- xref:api:utils.adoc#Heap.sol[`Heap`]: A https://en.wikipedia.org/wiki/Binary_heap[binary heap] to store elements with priority defined by a compartor function. +- xref:api:utils.adoc#Heap.sol[`Heap`]: A https://en.wikipedia.org/wiki/Binary_heap[binary heap] to store elements with priority defined by a comparator function. The `Enumerable*` structures are similar to mappings in that they store and remove elements in constant time and don't allow for repeated entries, but they also support _enumeration_, which means you can easily query all stored entries both on and off-chain. From a909a7dca1ca10ba47917a38fa3e7e82732e717d Mon Sep 17 00:00:00 2001 From: Antonio Viggiano Date: Wed, 23 Jul 2025 11:20:53 -0300 Subject: [PATCH 08/16] Improve Math.sol NatSpec documentation (#5813) Co-authored-by: Hadrien Croubois --- contracts/utils/math/Math.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/utils/math/Math.sol b/contracts/utils/math/Math.sol index f0d608a2dea..7c7df0fa294 100644 --- a/contracts/utils/math/Math.sol +++ b/contracts/utils/math/Math.sol @@ -134,10 +134,10 @@ library Math { } /** - * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant. + * @dev Branchless ternary evaluation for `condition ? a : b`. Gas costs are constant. * * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone. - * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute + * However, the compiler may optimize Solidity ternary operations (i.e. `condition ? a : b`) to only compute * one branch when needed, making this function more expensive. */ function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) { From 2c0d2284d1958d9f1de91996e6925c4f24605d6f Mon Sep 17 00:00:00 2001 From: crStiv Date: Thu, 24 Jul 2025 11:07:37 +0300 Subject: [PATCH 09/16] fix: typos (#5811) Co-authored-by: Hadrien Croubois --- contracts/governance/extensions/GovernorTimelockControl.sol | 6 +++--- contracts/mocks/TimelockReentrant.sol | 2 +- test/governance/TimelockController.test.js | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/contracts/governance/extensions/GovernorTimelockControl.sol b/contracts/governance/extensions/GovernorTimelockControl.sol index b3f3b26c9ea..fdf83367212 100644 --- a/contracts/governance/extensions/GovernorTimelockControl.sol +++ b/contracts/governance/extensions/GovernorTimelockControl.sol @@ -47,10 +47,10 @@ abstract contract GovernorTimelockControl is Governor { return currentState; } - bytes32 queueid = _timelockIds[proposalId]; - if (_timelock.isOperationPending(queueid)) { + bytes32 queueId = _timelockIds[proposalId]; + if (_timelock.isOperationPending(queueId)) { return ProposalState.Queued; - } else if (_timelock.isOperationDone(queueid)) { + } else if (_timelock.isOperationDone(queueId)) { // This can happen if the proposal is executed directly on the timelock. return ProposalState.Executed; } else { diff --git a/contracts/mocks/TimelockReentrant.sol b/contracts/mocks/TimelockReentrant.sol index aab676a500e..c78ca0de712 100644 --- a/contracts/mocks/TimelockReentrant.sol +++ b/contracts/mocks/TimelockReentrant.sol @@ -12,7 +12,7 @@ contract TimelockReentrant { _reentered = true; } - function enableRentrancy(address target, bytes calldata data) external { + function enableReentrancy(address target, bytes calldata data) external { _reenterTarget = target; _reenterData = data; } diff --git a/test/governance/TimelockController.test.js b/test/governance/TimelockController.test.js index 08410d46081..f58240e5047 100644 --- a/test/governance/TimelockController.test.js +++ b/test/governance/TimelockController.test.js @@ -418,7 +418,7 @@ describe('TimelockController', function () { reentrantOperation.predecessor, reentrantOperation.salt, ]); - await reentrant.enableRentrancy(this.mock, data); + await reentrant.enableReentrancy(this.mock, data); // Expect to fail await expect( @@ -811,7 +811,7 @@ describe('TimelockController', function () { reentrantBatchOperation.predecessor, reentrantBatchOperation.salt, ]); - await reentrant.enableRentrancy(this.mock, data); + await reentrant.enableReentrancy(this.mock, data); // Expect to fail await expect( From 7dcf761dd02e7139b9bf5cf87d39fdd05dc20f70 Mon Sep 17 00:00:00 2001 From: Torprius Date: Mon, 4 Aug 2025 16:22:26 +0200 Subject: [PATCH 10/16] Fix typos and inaccuracies in documentation (#5815) Co-authored-by: Hadrien Croubois --- docs/modules/ROOT/pages/access-control.adoc | 2 +- docs/modules/ROOT/pages/account-abstraction.adoc | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/modules/ROOT/pages/access-control.adoc b/docs/modules/ROOT/pages/access-control.adoc index 57d26bc0814..9bfc9af10dc 100644 --- a/docs/modules/ROOT/pages/access-control.adoc +++ b/docs/modules/ROOT/pages/access-control.adoc @@ -123,7 +123,7 @@ There is an additional feature built on top of `AccessControl`: giving the execu At this point, with both a proposer and an executor assigned, the timelock can perform operations. -An optional next step is for the deployer to renounce its administrative privileges and leave the timelock self-administered. If the deployer decides to do so, all further maintenance, including assigning new proposers/schedulers or changing the timelock duration will have to follow the timelock workflow. This links the governance of the timelock to the governance of contracts attached to the timelock, and enforce a delay on timelock maintenance operations. +An optional next step is for the deployer to renounce its administrative privileges and leave the timelock self-administered. If the deployer decides to do so, all further maintenance, including assigning new proposers/schedulers or changing the timelock duration will have to follow the timelock workflow. This links the governance of the timelock to the governance of contracts attached to the timelock, and enforces a delay on timelock maintenance operations. WARNING: If the deployer renounces administrative rights in favour of timelock itself, assigning new proposers or executors will require a timelocked operation. This means that if the accounts in charge of any of these two roles become unavailable, then the entire contract (and any contract it controls) becomes locked indefinitely. diff --git a/docs/modules/ROOT/pages/account-abstraction.adoc b/docs/modules/ROOT/pages/account-abstraction.adoc index 82fc65e295a..ee45c3b7658 100644 --- a/docs/modules/ROOT/pages/account-abstraction.adoc +++ b/docs/modules/ROOT/pages/account-abstraction.adoc @@ -28,7 +28,7 @@ struct PackedUserOperation { This process of bundling user operations involves several costs that the bundler must cover, including base transaction fees, calldata serialization, entrypoint execution, and paymaster context costs. To compensate for these expenses, bundlers use the `preVerificationGas` and `gasFees` fields to charge users appropriately. -NOTE: Estimating `preVerificationGas` is not standardized as it varies based on network conditions such as gas prices and the size of the operation bundle. +NOTE: Estimating `preVerificationGas` is not standardized as it varies based on factors like calldata size, signature complexity, and bundler-specific serialization costs. TIP: Use xref:api:account.adoc#ERC4337Utils[`ERC4337Utils`] to manipulate the `UserOperation` struct and other ERC-4337 related values. @@ -36,7 +36,7 @@ TIP: Use xref:api:account.adoc#ERC4337Utils[`ERC4337Utils`] to manipulate the `U Each `UserOperation` is executed through a contract known as the https://etherscan.io/address/0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108#code[`EntryPoint`]. This contract is a singleton deployed across multiple networks at the same address although other custom implementations may be used. -The Entrypoint contracts is considered a trusted entity by the account. +The Entrypoint contract is considered a trusted entity by the account. === Bundlers @@ -83,7 +83,7 @@ To build your own factory, see xref:accounts.adoc#accounts_factory[account facto === Paymaster Contract -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. +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 from the user experience in the same way that computational costs of cloud servers are abstracted away from end-users. To build your own paymaster, see https://docs.openzeppelin.com/community-contracts/0.0.1/paymasters[paymasters]. @@ -95,6 +95,6 @@ To process a bundle of `UserOperations`, bundlers call xref:api:account.adoc#Acc These rules outline the requirements for operations to be processed by the canonical mempool. -Accounts can access its own storage during the validation phase, they might easily violate ERC-7562 storage access rules in undirect ways. For example, most accounts access their public keys from storage when validating a signature, limiting the ability of having accounts that validate operations for other accounts (e.g. via ERC-1271) +Accounts can access their own storage during the validation phase, they might easily violate ERC-7562 storage access rules in indirect ways. For example, most accounts access their public keys from storage when validating a signature, limiting the ability of having accounts that validate operations for other accounts (e.g. via ERC-1271) TIP: Although any Account that breaks such rules may still be processed by a private bundler, developers should keep in mind the centralization tradeoffs of relying on private infrastructure instead of _permissionless_ execution. From 2050256697ec61b657f4da848a3dbeda53212a77 Mon Sep 17 00:00:00 2001 From: Maximilian Hubert <64627729+gap-editor@users.noreply.github.com> Date: Sun, 3 Aug 2025 12:45:24 +0200 Subject: [PATCH 11/16] up --- docs/modules/ROOT/pages/account-abstraction.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/account-abstraction.adoc b/docs/modules/ROOT/pages/account-abstraction.adoc index ee45c3b7658..83b5f67db84 100644 --- a/docs/modules/ROOT/pages/account-abstraction.adoc +++ b/docs/modules/ROOT/pages/account-abstraction.adoc @@ -95,6 +95,6 @@ To process a bundle of `UserOperations`, bundlers call xref:api:account.adoc#Acc These rules outline the requirements for operations to be processed by the canonical mempool. -Accounts can access their own storage during the validation phase, they might easily violate ERC-7562 storage access rules in indirect ways. For example, most accounts access their public keys from storage when validating a signature, limiting the ability of having accounts that validate operations for other accounts (e.g. via ERC-1271) +Accounts can access their own storage during the validation phase, they might easily violate ERC-7562 storage access rules in indirect ways. For example, most accounts access their public keys from storage when validating a signature, limiting the ability of having accounts that validate operations for other accounts (e.g. via https://eips.ethereum.org/EIPS/eip-1271[ERC-1271])) TIP: Although any Account that breaks such rules may still be processed by a private bundler, developers should keep in mind the centralization tradeoffs of relying on private infrastructure instead of _permissionless_ execution. From 95c41d29d1865e9e22751c41e681b8605105c40f Mon Sep 17 00:00:00 2001 From: Gengar Date: Wed, 6 Aug 2025 18:46:17 +0300 Subject: [PATCH 12/16] fix: couple of typos (#5833) --- contracts/utils/Base64.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/Base64.sol b/contracts/utils/Base64.sol index d9b09ec0dd1..cdd4d65de9c 100644 --- a/contracts/utils/Base64.sol +++ b/contracts/utils/Base64.sol @@ -34,7 +34,7 @@ library Base64 { */ function _encode(bytes memory data, string memory table, bool withPadding) private pure returns (string memory) { /** - * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence + * Inspired by Brecht Devos (Brechtpd) implementation - MIT license * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol */ if (data.length == 0) return ""; From 58cbf7baac2631dc0be522058b3102dfff7f1571 Mon Sep 17 00:00:00 2001 From: bigbear <155267841+aso20455@users.noreply.github.com> Date: Sat, 9 Aug 2025 20:02:05 +0300 Subject: [PATCH 13/16] Remove duplicate word in ERC7821 comment (#5839) --- contracts/account/extensions/draft-ERC7821.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/account/extensions/draft-ERC7821.sol b/contracts/account/extensions/draft-ERC7821.sol index a8f22361f8f..9db9b4bb0f0 100644 --- a/contracts/account/extensions/draft-ERC7821.sol +++ b/contracts/account/extensions/draft-ERC7821.sol @@ -10,7 +10,7 @@ import {Account} from "../Account.sol"; /** * @dev Minimal batch executor following ERC-7821. * - * Only supports supports single batch mode (`0x01000000000000000000`). Does not support optional "opData". + * Only supports single batch mode (`0x01000000000000000000`). Does not support optional "opData". * * @custom:stateless */ From 61641da27aa62436dd72f6d782658aa0c76c4c75 Mon Sep 17 00:00:00 2001 From: bigbear <155267841+aso20455@users.noreply.github.com> Date: Fri, 15 Aug 2025 20:57:02 +0300 Subject: [PATCH 14/16] polishing docs: error fixes for clarity (#5857) --- contracts/access/manager/IAccessManager.sol | 6 +++--- contracts/account/utils/EIP7702Utils.sol | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/contracts/access/manager/IAccessManager.sol b/contracts/access/manager/IAccessManager.sol index 925be90740b..94a1237c22f 100644 --- a/contracts/access/manager/IAccessManager.sol +++ b/contracts/access/manager/IAccessManager.sol @@ -123,7 +123,7 @@ interface IAccessManager { /** * @dev Minimum setback for all delay updates, with the exception of execution delays. It - * can be increased without setback (and reset via {revokeRole} in the case event of an + * can be increased without setback (and reset via {revokeRole} in the event of an * accidental increase). Defaults to 5 days. */ function minSetback() external view returns (uint32); @@ -170,7 +170,7 @@ interface IAccessManager { /** * @dev Get the access details for a given account for a given role. These details include the timepoint at which - * membership becomes active, and the delay applied to all operation by this user that requires this permission + * membership becomes active, and the delay applied to all operations by this user that requires this permission * level. * * Returns: @@ -376,7 +376,7 @@ interface IAccessManager { * @dev Consume a scheduled operation targeting the caller. If such an operation exists, mark it as consumed * (emit an {OperationExecuted} event and clean the state). Otherwise, throw an error. * - * This is useful for contract that want to enforce that calls targeting them were scheduled on the manager, + * This is useful for contracts that want to enforce that calls targeting them were scheduled on the manager, * with all the verifications that it implies. * * Emit a {OperationExecuted} event. diff --git a/contracts/account/utils/EIP7702Utils.sol b/contracts/account/utils/EIP7702Utils.sol index 804d6c2c6fd..988526992b4 100644 --- a/contracts/account/utils/EIP7702Utils.sol +++ b/contracts/account/utils/EIP7702Utils.sol @@ -12,7 +12,7 @@ library EIP7702Utils { bytes3 internal constant EIP7702_PREFIX = 0xef0100; /** - * @dev Returns the address of the delegate if `account` as an EIP-7702 delegation setup, or address(0) otherwise. + * @dev Returns the address of the delegate if `account` has an EIP-7702 delegation setup, or address(0) otherwise. */ function fetchDelegate(address account) internal view returns (address) { bytes23 delegation = bytes23(account.code); From e7347d7106a10c6837c03956fe8352feb7f77919 Mon Sep 17 00:00:00 2001 From: Ragnar Date: Sat, 16 Aug 2025 02:18:24 +0200 Subject: [PATCH 15/16] Remove OpenZeppelin Defender link from README.md (#5812) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ernesto García --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 2cb5e35ce70..948f97d5817 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ :mage: **Not sure how to get started?** Check out [Contracts Wizard](https://wizard.openzeppelin.com/) — an interactive smart contract generator. -:building_construction: **Want to scale your decentralized application?** Check out [OpenZeppelin Defender](https://openzeppelin.com/defender) — a mission-critical developer security platform to code, audit, deploy, monitor, and operate with confidence. > [!IMPORTANT] > OpenZeppelin Contracts uses semantic versioning to communicate backwards compatibility of its API and storage layout. For upgradeable contracts, the storage layout of different major versions should be assumed incompatible, for example, it is unsafe to upgrade from 4.9.3 to 5.0.0. Learn more at [Backwards Compatibility](https://docs.openzeppelin.com/contracts/backwards-compatibility). From af092bc0fa5c2aa10ad68f76631c31a9c4edf839 Mon Sep 17 00:00:00 2001 From: destinyae <109734765+destinyae@users.noreply.github.com> Date: Sat, 16 Aug 2025 01:29:28 +0100 Subject: [PATCH 16/16] Remove Crowdsale link from README (#5827) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ernesto García --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 948f97d5817..96b568d2a19 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ :mage: **Not sure how to get started?** Check out [Contracts Wizard](https://wizard.openzeppelin.com/) — an interactive smart contract generator. - > [!IMPORTANT] > OpenZeppelin Contracts uses semantic versioning to communicate backwards compatibility of its API and storage layout. For upgradeable contracts, the storage layout of different major versions should be assumed incompatible, for example, it is unsafe to upgrade from 4.9.3 to 5.0.0. Learn more at [Backwards Compatibility](https://docs.openzeppelin.com/contracts/backwards-compatibility). @@ -67,7 +66,7 @@ To keep your system secure, you should **always** use the installed code as-is, The guides in the [documentation site](https://docs.openzeppelin.com/contracts) will teach about different concepts, and how to use the related contracts that OpenZeppelin Contracts provides: * [Access Control](https://docs.openzeppelin.com/contracts/access-control): decide who can perform each of the actions on your system. -* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives. +* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives for popular ERC standards like ERC-20, ERC-721, ERC-1155, and ERC-6909. * [Utilities](https://docs.openzeppelin.com/contracts/utilities): generic useful tools including non-overflowing math, signature verification, and trustless paying systems. The [full API](https://docs.openzeppelin.com/contracts/api/token/ERC20) is also thoroughly documented, and serves as a great reference when developing your smart contract application. You can also ask for help or follow Contracts' development in the [community forum](https://forum.openzeppelin.com).