From 00e6272cdf72ce3bd231fd4b85afb576e2b01fed Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 13:04:07 +0000 Subject: [PATCH 01/17] Start release candidate --- .changeset/pre.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000000..bb19c0d110f --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,8 @@ +{ + "mode": "pre", + "tag": "rc", + "initialVersions": { + "openzeppelin-solidity": "5.4.0" + }, + "changesets": [] +} From f5edfc0f53ba5fe9d71855d855e0fab9d2ac5aa2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 07:33:37 -0600 Subject: [PATCH 02/17] Release v5.5.0 (rc) (#5953) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ernestognw Co-authored-by: Hadrien Croubois --- .changeset/pre.json | 36 ++++++++- CHANGELOG.md | 73 +++++++++++++++++-- .../AccessControlDefaultAdminRules.sol | 2 +- .../IAccessControlDefaultAdminRules.sol | 2 +- contracts/access/manager/AccessManager.sol | 2 +- contracts/access/manager/IAccessManager.sol | 2 +- contracts/account/Account.sol | 2 +- .../extensions/draft-AccountERC7579.sol | 2 +- .../account/extensions/draft-ERC7821.sol | 2 +- contracts/account/utils/EIP7702Utils.sol | 2 +- .../account/utils/draft-ERC7579Utils.sol | 2 +- contracts/crosschain/ERC7786Recipient.sol | 1 + contracts/finance/VestingWallet.sol | 2 +- contracts/governance/Governor.sol | 2 +- contracts/governance/IGovernor.sol | 2 +- contracts/governance/TimelockController.sol | 2 +- .../extensions/GovernorProposalGuardian.sol | 2 +- .../governance/extensions/GovernorStorage.sol | 2 +- .../extensions/GovernorSuperQuorum.sol | 2 +- .../extensions/GovernorTimelockCompound.sol | 2 +- .../extensions/GovernorTimelockControl.sol | 2 +- .../GovernorVotesQuorumFraction.sol | 2 +- .../GovernorVotesSuperQuorumFraction.sol | 2 +- contracts/governance/utils/IVotes.sol | 2 +- contracts/governance/utils/Votes.sol | 2 +- contracts/governance/utils/VotesExtended.sol | 2 +- contracts/interfaces/IERC3156FlashLender.sol | 2 +- contracts/interfaces/IERC4626.sol | 2 +- contracts/interfaces/IERC6909.sol | 2 +- contracts/interfaces/IERC7751.sol | 1 + contracts/interfaces/draft-IERC6093.sol | 2 +- contracts/interfaces/draft-IERC7579.sol | 2 +- contracts/interfaces/draft-IERC7786.sol | 1 + contracts/interfaces/draft-IERC7802.sol | 2 +- contracts/metatx/ERC2771Context.sol | 2 +- contracts/metatx/ERC2771Forwarder.sol | 2 +- contracts/package.json | 2 +- contracts/proxy/Clones.sol | 2 +- contracts/proxy/Proxy.sol | 2 +- .../TransparentUpgradeableProxy.sol | 2 +- contracts/proxy/utils/UUPSUpgradeable.sol | 2 +- .../ERC1155/extensions/ERC1155URIStorage.sol | 2 +- .../token/ERC1155/utils/ERC1155Holder.sol | 2 +- contracts/token/ERC20/ERC20.sol | 2 +- .../token/ERC20/extensions/ERC20Permit.sol | 2 +- .../token/ERC20/extensions/ERC20Votes.sol | 2 +- contracts/token/ERC20/extensions/ERC4626.sol | 2 +- .../token/ERC20/extensions/IERC20Permit.sol | 2 +- contracts/token/ERC20/utils/SafeERC20.sol | 2 +- contracts/token/ERC6909/ERC6909.sol | 2 +- .../ERC6909/extensions/ERC6909ContentURI.sol | 2 +- .../ERC6909/extensions/ERC6909Metadata.sol | 2 +- .../ERC6909/extensions/ERC6909TokenSupply.sol | 2 +- contracts/token/ERC721/ERC721.sol | 2 +- .../ERC721/extensions/ERC721Burnable.sol | 2 +- .../ERC721/extensions/ERC721Consecutive.sol | 2 +- .../ERC721/extensions/ERC721Enumerable.sol | 2 +- .../ERC721/extensions/ERC721Pausable.sol | 2 +- .../token/ERC721/extensions/ERC721Royalty.sol | 2 +- .../ERC721/extensions/ERC721URIStorage.sol | 2 +- .../token/ERC721/extensions/ERC721Votes.sol | 2 +- .../token/ERC721/extensions/ERC721Wrapper.sol | 2 +- contracts/token/ERC721/utils/ERC721Holder.sol | 2 +- contracts/token/ERC721/utils/ERC721Utils.sol | 2 +- contracts/utils/Address.sol | 2 +- contracts/utils/Base58.sol | 1 + contracts/utils/Base64.sol | 2 +- contracts/utils/Blockhash.sol | 2 +- contracts/utils/Bytes.sol | 2 +- contracts/utils/Create2.sol | 2 +- contracts/utils/LowLevelCall.sol | 1 + contracts/utils/Memory.sol | 1 + contracts/utils/Multicall.sol | 2 +- contracts/utils/RLP.sol | 1 + contracts/utils/ReentrancyGuard.sol | 2 +- contracts/utils/ReentrancyGuardTransient.sol | 2 +- contracts/utils/RelayedCall.sol | 1 + contracts/utils/ShortStrings.sol | 2 +- contracts/utils/SlotDerivation.sol | 2 +- contracts/utils/Strings.sol | 2 +- contracts/utils/cryptography/ECDSA.sol | 2 +- contracts/utils/cryptography/EIP712.sol | 2 +- .../utils/cryptography/MessageHashUtils.sol | 2 +- .../utils/cryptography/SignatureChecker.sol | 2 +- contracts/utils/cryptography/WebAuthn.sol | 1 + .../utils/cryptography/draft-ERC7739Utils.sol | 2 +- .../cryptography/signers/SignerEIP7702.sol | 2 +- .../cryptography/signers/SignerWebAuthn.sol | 1 + .../cryptography/signers/draft-ERC7739.sol | 2 +- .../verifiers/ERC7913P256Verifier.sol | 2 +- .../verifiers/ERC7913RSAVerifier.sol | 2 +- .../verifiers/ERC7913WebAuthnVerifier.sol | 1 + .../utils/draft-InteroperableAddress.sol | 1 + .../utils/introspection/ERC165Checker.sol | 2 +- contracts/utils/math/Math.sol | 2 +- contracts/utils/structs/Accumulators.sol | 1 + contracts/utils/structs/Checkpoints.sol | 2 +- contracts/utils/structs/CircularBuffer.sol | 2 +- contracts/utils/types/Time.sol | 2 +- docs/antora.yml | 4 +- package.json | 2 +- 101 files changed, 201 insertions(+), 95 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index bb19c0d110f..3d761f49c8e 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -4,5 +4,39 @@ "initialVersions": { "openzeppelin-solidity": "5.4.0" }, - "changesets": [] + "changesets": [ + "afraid-chicken-attack", + "all-geese-stand", + "angry-waves-film", + "clear-tools-refuse", + "dull-students-eat", + "eight-radios-check", + "fast-beans-pull", + "funny-donuts-follow", + "itchy-turkeys-allow", + "loose-lamps-bake", + "major-feet-write", + "modern-moments-raise", + "new-days-tease", + "old-memes-dress", + "petite-seas-shake", + "plain-times-itch", + "public-crabs-heal", + "quick-pianos-press", + "rich-cows-repair", + "ripe-bears-hide", + "sharp-scissors-drum", + "shiny-dolphins-lick", + "silent-zebras-press", + "solid-cobras-talk", + "ten-steaks-try", + "tender-dolls-nail", + "three-parents-argue", + "violet-turtles-like", + "whole-cats-find", + "whole-plums-speak", + "wild-baths-buy", + "wise-webs-fly", + "witty-hats-flow" + ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fb0466f8d1..f9c60e9a376 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,20 +1,79 @@ # Changelog + +## 5.5.0-rc.0 (2025-09-26) + ### Bug fixes - `ERC165Checker`: Ensure the `supportsERC165` function returns false if the target reverts during the `supportsInterface(0xffffffff)` call. ([#5810](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5880)) ### Breaking changes -- `ERC6909` and the its extensions (`ERC6909ContentURI`, `ERC6909Metadata` and `ERC6909TokenSupply`) are no longer marked as draft since [EIP-6909](https://eips.ethereum.org/EIPS/eip-6909) is now final. Developers must update the import paths. Contracts behavior is not modified. -- `SignerERC7702` is renamed as `SignerEIP7702`. Imports and inheritance must be updated to that new name and path. Behavior is unmodified. -- `ERC721Holder`, `ERC1155Holder`, `ReentrancyGuard` and `ReentrancyGuardTransient` are flagged as stateless and are no longer transpiled. Developers using their upgradeable variants from `@openzeppelin/contracts-upgradeable` must update their imports to use the equivalent version available in `@openzeppelin/contracts`. +- `ERC6909` and its extensions (`ERC6909ContentURI`, `ERC6909Metadata` and `ERC6909TokenSupply`) are no longer marked as draft since [EIP-6909](https://eips.ethereum.org/EIPS/eip-6909) is now final. Developers must update the import paths. Contracts behavior is not modified. ([#5929](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5929)) +- `SignerERC7702` is renamed as `SignerEIP7702`. Imports and inheritance must be updated to that new name and path. Behavior is unmodified. ([#5932](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5932)) +- `ERC721Holder`, `ERC1155Holder`, `ReentrancyGuard` and `ReentrancyGuardTransient` are flagged as stateless and are no longer transpiled. Developers using their upgradeable variants from `@openzeppelin/contracts-upgradeable` must update their imports to use the equivalent version available in `@openzeppelin/contracts`. ([#5944](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5944), [#5942](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5942)) - Update minimum pragma to 0.8.24 in `Votes`, `VotesExtended`, `ERC20Votes`, `Strings`, `ERC1155URIStorage`, `MessageHashUtils`, `ERC721URIStorage`, `ERC721Votes`, `ERC721Wrapper`, `ERC721Burnable`, `ERC721Consecutive`, `ERC721Enumerable`, `ERC721Pausable`, `ERC721Royalty`, `ERC721Wrapper`, `EIP712`, `ERC4626` and `ERC7739`. ([#5726](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5726)) ### Deprecation -- `Initializable` and `UUPSUpgradeable` are no longer transpiled. An alias is present in the `@openzeppelin/contracts-upgradeable` package that redirect to the corresponding file in `@openzeppelin/contracts`. These alias will be removed in the next major release. Developers are advised to update their imports to get these files directly from the `@openzeppelin/contracts` package. -- `ECDSA` signature malleability protection is partly deprecated. See documentation for more details. +- `Initializable` and `UUPSUpgradeable` are no longer transpiled. An alias is present in the `@openzeppelin/contracts-upgradeable` package that redirect to the corresponding file in `@openzeppelin/contracts`. These alias will be removed in the next major release. Developers are advised to update their imports to get these files directly from the `@openzeppelin/contracts` package. [#5941](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5941) +- `ECDSA` signature malleability protection is partly deprecated. See documentation for more details. [#5814](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5814) + +### Changes by category + +#### Tokens + +- `ERC4626`: compute `maxWithdraw` using `maxRedeem` and `previewRedeem` so that changes to the preview functions affect the max functions. ([#5130](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5130)) + +#### Cross-chain + +- `InteroperableAddress`: Add a library for formatting and parsing ERC-7930 interoperable addresses. ([#5736](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5736)) +- `ERC7786Recipient`: Generic ERC-7786 cross-chain message recipient contract. ([#5904](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5904)) +- `IERC7786`: Add the (draft) interface for ERC-7786 "Cross-Chain Messaging Gateway" ([#5737](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5737)) + +#### Cryptography + +##### Signers + +- `SignerWebAuthn`: Add an abstract signer that verifies WebAuthn signatures, with a P256 fallback. ([#5809](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5809)) +- Add constructors to the different signers. ([#5757](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5757)) + +##### Verifiers + +- `ERC7913WebAuthnVerifier`: Add an ERC-7913 verifier that verifies WebAuthn Authentication Assertions for P256 identities. ([#5809](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5809)) + +##### Other + +- `WebAuthn`: Add a library for verifying WebAuthn Authentication Assertions. ([#5809](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5809)) +- `ECDSA`: Add `parse` and `parseCalldata` to parse bytes signatures of length 65 or 64 (erc-2098) into its v,r,s components. ([#5814](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5814)) +- `ECDSA`: Add `recoverCalldata` and `tryRecoverCalldata`, variants of `recover` and `tryRecover` that are more efficient when signatures are in calldata. ([#5788](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5788)) +- `SignatureChecker`: Add `isValidSignatureNowCalldata(address,bytes32,bytes calldata)` for efficient processing of calldata signatures. ([#5788](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5788)) + +#### Structures + +- `Checkpoints`: Add a new checkpoint variant `Checkpoint256` using `uint256` type for the value and key. ([#5748](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5748)) +- `Accumulators`: A library for merging an arbitrary dynamic number of bytes buffers. ([#5680](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5680)) + +#### Utils + +- `Base58`: Add a library for encoding and decoding bytes buffers into base58 strings. ([#5762](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5762)) +- `Base64`: Add a new `decode` function that parses base64 encoded strings. ([#5765](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5765)) +- `Bytes`: Add `concat` that merges a `bytes[]` array of buffers into a single `bytes` buffer. ([#5882](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5882)) +- `Bytes`: Add `reverseBytes32`, `reverseBytes16`, `reverseBytes8`, `reverseBytes4`, and `reverseBytes2` functions to reverse byte order for converting between little-endian and big-endian representations. ([#5724](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5724)) +- `Bytes`: Add `splice(bytes,uint256)` and `splice(bytes,uint256,uint256)` functions that move a specified range of bytes to the start of the buffer and truncate it in place, as an alternative to `slice`. ([#5733](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5733)) +- `Bytes`: Add a `clz` function to count the leading zero bits in a `bytes` buffer. ([#5725](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5725)) +- `Bytes`: Add an `equal` function to compare byte buffers. ([#5726](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5726)) +- `Bytes`: Fix `lastIndexOf(bytes,byte,uint256)` with empty buffers and finite position to correctly return `type(uint256).max` instead of accessing uninitialized memory sections. ([#5797](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5797)) +- `IERC7751`: Add the interface for custom error wrapping of bubbled up reverts. ([#5816](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5816)) +- `LowLevelCall`: Add a library to perform low-level calls and deal with the `returndata` more granularly. ([#5094](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5094)) +- `Math`: Add a `clz` function to count the leading zero bits in a `uint256` value. ([#5725](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5725)) +- `Memory`: Add library with utilities to manipulate memory ([#5189](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5189)) +- `Memory`: Add a UDVT for handling slices on memory space similarly to calldata slices. ([#5680](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5680)) +- `ReentrancyGuard` and `ReentrancyGuardTransient`: Add `nonReentrantView`, a read-only version of the `nonReentrant` modifier. ([#5800](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5800)) +- `ReentrancyGuard`, `ReentrancyGuardTransient`: Add an internal `_reentrancyGuardStorageSlot` function allowing slot customization via override. ([#5892](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5892)) +- `RelayedCall`: Add a library to perform indirect calls through minimal and predictable relayers. ([#5630](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5630)) +- `RLP`: Add a library for encoding and decoding data in Ethereum's Recursive Length Prefix format. ([#5680](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5680)) +- `Strings`: Add `toHexString(bytes)`. ([#5761](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5761)) ## 5.4.0 (2025-07-17) @@ -42,7 +101,7 @@ #### Tokens -- `ERC20Bridgeable`: Implementation of ERC-7802 that makes an ERC-20 compatible with crosschain bridges. ([#5739](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5739)) +- `ERC20Bridgeable`: Implementation of ERC-7802 that makes an ERC-20 compatible with crosschain bridges. ([#5735](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5735)) #### Cryptography @@ -52,7 +111,7 @@ - `SignerERC7702`: Implementation of `AbstractSigner` for Externally Owned Accounts (EOAs). Useful with ERC-7702. ([#5657](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5657)) - `SignerERC7913`: Abstract signer that verifies signatures using the ERC-7913 workflow. ([#5659](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5659)) - `MultiSignerERC7913`: Implementation of `AbstractSigner` that supports multiple ERC-7913 signers with a threshold-based signature verification system. ([#5659](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5659)) -- `MultiSignerERC7913Weighted`: Extension of `MultiSignerERC7913` that supports assigning different weights to each signer, enabling more flexible governance schemes. ([#5741](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5741)) +- `MultiSignerERC7913Weighted`: Extension of `MultiSignerERC7913` that supports assigning different weights to each signer, enabling more flexible governance schemes. ([#5718](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5718)) ##### Verifiers diff --git a/contracts/access/extensions/AccessControlDefaultAdminRules.sol b/contracts/access/extensions/AccessControlDefaultAdminRules.sol index ad64a88d57e..b98dd58267f 100644 --- a/contracts/access/extensions/AccessControlDefaultAdminRules.sol +++ b/contracts/access/extensions/AccessControlDefaultAdminRules.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (access/extensions/AccessControlDefaultAdminRules.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (access/extensions/AccessControlDefaultAdminRules.sol) pragma solidity ^0.8.20; diff --git a/contracts/access/extensions/IAccessControlDefaultAdminRules.sol b/contracts/access/extensions/IAccessControlDefaultAdminRules.sol index 0b533160a09..4552f7c11b5 100644 --- a/contracts/access/extensions/IAccessControlDefaultAdminRules.sol +++ b/contracts/access/extensions/IAccessControlDefaultAdminRules.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (access/extensions/IAccessControlDefaultAdminRules.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (access/extensions/IAccessControlDefaultAdminRules.sol) pragma solidity >=0.8.4; diff --git a/contracts/access/manager/AccessManager.sol b/contracts/access/manager/AccessManager.sol index 7b9b8a3774f..d4f36b37377 100644 --- a/contracts/access/manager/AccessManager.sol +++ b/contracts/access/manager/AccessManager.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (access/manager/AccessManager.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (access/manager/AccessManager.sol) pragma solidity ^0.8.20; diff --git a/contracts/access/manager/IAccessManager.sol b/contracts/access/manager/IAccessManager.sol index 94a1237c22f..22d21c101b5 100644 --- a/contracts/access/manager/IAccessManager.sol +++ b/contracts/access/manager/IAccessManager.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (access/manager/IAccessManager.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (access/manager/IAccessManager.sol) pragma solidity >=0.8.4; diff --git a/contracts/account/Account.sol b/contracts/account/Account.sol index 0767d5b7c9b..5ea213bc390 100644 --- a/contracts/account/Account.sol +++ b/contracts/account/Account.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (account/Account.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (account/Account.sol) pragma solidity ^0.8.20; diff --git a/contracts/account/extensions/draft-AccountERC7579.sol b/contracts/account/extensions/draft-AccountERC7579.sol index 4d5a849f7d8..b16f9dbd54e 100644 --- a/contracts/account/extensions/draft-AccountERC7579.sol +++ b/contracts/account/extensions/draft-AccountERC7579.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (account/extensions/draft-AccountERC7579.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (account/extensions/draft-AccountERC7579.sol) pragma solidity ^0.8.26; diff --git a/contracts/account/extensions/draft-ERC7821.sol b/contracts/account/extensions/draft-ERC7821.sol index 9db9b4bb0f0..5d215af7504 100644 --- a/contracts/account/extensions/draft-ERC7821.sol +++ b/contracts/account/extensions/draft-ERC7821.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (account/extensions/draft-ERC7821.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (account/extensions/draft-ERC7821.sol) pragma solidity ^0.8.20; diff --git a/contracts/account/utils/EIP7702Utils.sol b/contracts/account/utils/EIP7702Utils.sol index 988526992b4..7e926b3efad 100644 --- a/contracts/account/utils/EIP7702Utils.sol +++ b/contracts/account/utils/EIP7702Utils.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (account/utils/EIP7702Utils.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (account/utils/EIP7702Utils.sol) pragma solidity ^0.8.20; diff --git a/contracts/account/utils/draft-ERC7579Utils.sol b/contracts/account/utils/draft-ERC7579Utils.sol index 257115dbf6f..b23b24b3e57 100644 --- a/contracts/account/utils/draft-ERC7579Utils.sol +++ b/contracts/account/utils/draft-ERC7579Utils.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (account/utils/draft-ERC7579Utils.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (account/utils/draft-ERC7579Utils.sol) pragma solidity ^0.8.20; diff --git a/contracts/crosschain/ERC7786Recipient.sol b/contracts/crosschain/ERC7786Recipient.sol index 70f2c8d4a88..6353819aae8 100644 --- a/contracts/crosschain/ERC7786Recipient.sol +++ b/contracts/crosschain/ERC7786Recipient.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (crosschain/ERC7786Recipient.sol) pragma solidity ^0.8.27; diff --git a/contracts/finance/VestingWallet.sol b/contracts/finance/VestingWallet.sol index c3a1762a4fd..b8017fa17ff 100644 --- a/contracts/finance/VestingWallet.sol +++ b/contracts/finance/VestingWallet.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (finance/VestingWallet.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (finance/VestingWallet.sol) pragma solidity ^0.8.20; import {IERC20} from "../token/ERC20/IERC20.sol"; diff --git a/contracts/governance/Governor.sol b/contracts/governance/Governor.sol index a0a99ae29ab..5e770762fc8 100644 --- a/contracts/governance/Governor.sol +++ b/contracts/governance/Governor.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (governance/Governor.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/Governor.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/IGovernor.sol b/contracts/governance/IGovernor.sol index 2afa913394c..3c7b41cc49e 100644 --- a/contracts/governance/IGovernor.sol +++ b/contracts/governance/IGovernor.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (governance/IGovernor.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/IGovernor.sol) pragma solidity >=0.8.4; diff --git a/contracts/governance/TimelockController.sol b/contracts/governance/TimelockController.sol index 0455638d452..1272a2862ef 100644 --- a/contracts/governance/TimelockController.sol +++ b/contracts/governance/TimelockController.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (governance/TimelockController.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/TimelockController.sol) pragma solidity ^0.8.20; diff --git a/contracts/governance/extensions/GovernorProposalGuardian.sol b/contracts/governance/extensions/GovernorProposalGuardian.sol index 0de6d23e921..e84897db6e7 100644 --- a/contracts/governance/extensions/GovernorProposalGuardian.sol +++ b/contracts/governance/extensions/GovernorProposalGuardian.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorProposalGuardian.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorProposalGuardian.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorStorage.sol b/contracts/governance/extensions/GovernorStorage.sol index c00d3369b42..7219fa5d0d2 100644 --- a/contracts/governance/extensions/GovernorStorage.sol +++ b/contracts/governance/extensions/GovernorStorage.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorStorage.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorStorage.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorSuperQuorum.sol b/contracts/governance/extensions/GovernorSuperQuorum.sol index 463e0dc7d89..2b9fffbada4 100644 --- a/contracts/governance/extensions/GovernorSuperQuorum.sol +++ b/contracts/governance/extensions/GovernorSuperQuorum.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorSuperQuorum.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorSuperQuorum.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorTimelockCompound.sol b/contracts/governance/extensions/GovernorTimelockCompound.sol index 601267e2925..0e766d991f5 100644 --- a/contracts/governance/extensions/GovernorTimelockCompound.sol +++ b/contracts/governance/extensions/GovernorTimelockCompound.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorTimelockCompound.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorTimelockCompound.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorTimelockControl.sol b/contracts/governance/extensions/GovernorTimelockControl.sol index 8bdbbc30593..6eeed38db24 100644 --- a/contracts/governance/extensions/GovernorTimelockControl.sol +++ b/contracts/governance/extensions/GovernorTimelockControl.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorTimelockControl.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorTimelockControl.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorVotesQuorumFraction.sol b/contracts/governance/extensions/GovernorVotesQuorumFraction.sol index 9ba224ce2cb..3ca89e61622 100644 --- a/contracts/governance/extensions/GovernorVotesQuorumFraction.sol +++ b/contracts/governance/extensions/GovernorVotesQuorumFraction.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorVotesQuorumFraction.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorVotesQuorumFraction.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol b/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol index ac3bd9b6b82..2fa4cec6110 100644 --- a/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol +++ b/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorVotesSuperQuorumFraction.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorVotesSuperQuorumFraction.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/utils/IVotes.sol b/contracts/governance/utils/IVotes.sol index 4817629dce4..5ef6bb2e764 100644 --- a/contracts/governance/utils/IVotes.sol +++ b/contracts/governance/utils/IVotes.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (governance/utils/IVotes.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/utils/IVotes.sol) pragma solidity >=0.8.4; diff --git a/contracts/governance/utils/Votes.sol b/contracts/governance/utils/Votes.sol index 02c68d028c0..846f0e0cfa7 100644 --- a/contracts/governance/utils/Votes.sol +++ b/contracts/governance/utils/Votes.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.2.0) (governance/utils/Votes.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/utils/Votes.sol) pragma solidity ^0.8.24; import {IERC5805} from "../../interfaces/IERC5805.sol"; diff --git a/contracts/governance/utils/VotesExtended.sol b/contracts/governance/utils/VotesExtended.sol index 929053c3f17..c34552084e1 100644 --- a/contracts/governance/utils/VotesExtended.sol +++ b/contracts/governance/utils/VotesExtended.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.2.0) (governance/utils/VotesExtended.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/utils/VotesExtended.sol) pragma solidity ^0.8.24; import {Checkpoints} from "../../utils/structs/Checkpoints.sol"; diff --git a/contracts/interfaces/IERC3156FlashLender.sol b/contracts/interfaces/IERC3156FlashLender.sol index d5fdcf25c66..5c2bc87886b 100644 --- a/contracts/interfaces/IERC3156FlashLender.sol +++ b/contracts/interfaces/IERC3156FlashLender.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC3156FlashLender.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/IERC3156FlashLender.sol) pragma solidity >=0.5.0; diff --git a/contracts/interfaces/IERC4626.sol b/contracts/interfaces/IERC4626.sol index 9c4976e8902..4f99d05f4b0 100644 --- a/contracts/interfaces/IERC4626.sol +++ b/contracts/interfaces/IERC4626.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC4626.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/IERC4626.sol) pragma solidity >=0.6.2; diff --git a/contracts/interfaces/IERC6909.sol b/contracts/interfaces/IERC6909.sol index f8421df4fb3..a5aa8bb4905 100644 --- a/contracts/interfaces/IERC6909.sol +++ b/contracts/interfaces/IERC6909.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC6909.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/IERC6909.sol) pragma solidity >=0.6.2; diff --git a/contracts/interfaces/IERC7751.sol b/contracts/interfaces/IERC7751.sol index dc0462a8b1d..d26637b39b1 100644 --- a/contracts/interfaces/IERC7751.sol +++ b/contracts/interfaces/IERC7751.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/IERC7751.sol) pragma solidity >=0.8.4; diff --git a/contracts/interfaces/draft-IERC6093.sol b/contracts/interfaces/draft-IERC6093.sol index 7effb920516..e70efe01121 100644 --- a/contracts/interfaces/draft-IERC6093.sol +++ b/contracts/interfaces/draft-IERC6093.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/draft-IERC6093.sol) pragma solidity >=0.8.4; diff --git a/contracts/interfaces/draft-IERC7579.sol b/contracts/interfaces/draft-IERC7579.sol index 2373bf1d27a..20b6b9c8e81 100644 --- a/contracts/interfaces/draft-IERC7579.sol +++ b/contracts/interfaces/draft-IERC7579.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC7579.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/draft-IERC7579.sol) pragma solidity >=0.8.4; diff --git a/contracts/interfaces/draft-IERC7786.sol b/contracts/interfaces/draft-IERC7786.sol index f5f2879272b..081a9e4f3d7 100644 --- a/contracts/interfaces/draft-IERC7786.sol +++ b/contracts/interfaces/draft-IERC7786.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/draft-IERC7786.sol) pragma solidity >=0.8.4; diff --git a/contracts/interfaces/draft-IERC7802.sol b/contracts/interfaces/draft-IERC7802.sol index 3096d261a96..a6e5fafb7f9 100644 --- a/contracts/interfaces/draft-IERC7802.sol +++ b/contracts/interfaces/draft-IERC7802.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC7802.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/draft-IERC7802.sol) pragma solidity >=0.6.2; diff --git a/contracts/metatx/ERC2771Context.sol b/contracts/metatx/ERC2771Context.sol index 2c8882537bb..7316a90e0c9 100644 --- a/contracts/metatx/ERC2771Context.sol +++ b/contracts/metatx/ERC2771Context.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (metatx/ERC2771Context.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (metatx/ERC2771Context.sol) pragma solidity ^0.8.20; diff --git a/contracts/metatx/ERC2771Forwarder.sol b/contracts/metatx/ERC2771Forwarder.sol index 3ba53222557..6562aae748e 100644 --- a/contracts/metatx/ERC2771Forwarder.sol +++ b/contracts/metatx/ERC2771Forwarder.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (metatx/ERC2771Forwarder.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (metatx/ERC2771Forwarder.sol) pragma solidity ^0.8.24; diff --git a/contracts/package.json b/contracts/package.json index 8ccb9465eac..aab10f04f19 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -1,7 +1,7 @@ { "name": "@openzeppelin/contracts", "description": "Secure Smart Contract library for Solidity", - "version": "5.4.0", + "version": "5.5.0-rc.0", "files": [ "**/*.sol", "/build/contracts/*.json", diff --git a/contracts/proxy/Clones.sol b/contracts/proxy/Clones.sol index 8064ff8fbd5..0c7ac5b7732 100644 --- a/contracts/proxy/Clones.sol +++ b/contracts/proxy/Clones.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (proxy/Clones.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (proxy/Clones.sol) pragma solidity ^0.8.20; diff --git a/contracts/proxy/Proxy.sol b/contracts/proxy/Proxy.sol index 809ca5f4180..0507cfe2276 100644 --- a/contracts/proxy/Proxy.sol +++ b/contracts/proxy/Proxy.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (proxy/Proxy.sol) pragma solidity ^0.8.20; diff --git a/contracts/proxy/transparent/TransparentUpgradeableProxy.sol b/contracts/proxy/transparent/TransparentUpgradeableProxy.sol index 1cb79181217..d2c0f5f9544 100644 --- a/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +++ b/contracts/proxy/transparent/TransparentUpgradeableProxy.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/TransparentUpgradeableProxy.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (proxy/transparent/TransparentUpgradeableProxy.sol) pragma solidity ^0.8.22; diff --git a/contracts/proxy/utils/UUPSUpgradeable.sol b/contracts/proxy/utils/UUPSUpgradeable.sol index 2a88b021156..51be97b826b 100644 --- a/contracts/proxy/utils/UUPSUpgradeable.sol +++ b/contracts/proxy/utils/UUPSUpgradeable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/UUPSUpgradeable.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (proxy/utils/UUPSUpgradeable.sol) pragma solidity ^0.8.22; diff --git a/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol b/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol index 85143ef099c..01c4c337ddc 100644 --- a/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol +++ b/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC1155/extensions/ERC1155URIStorage.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC1155/extensions/ERC1155URIStorage.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC1155/utils/ERC1155Holder.sol b/contracts/token/ERC1155/utils/ERC1155Holder.sol index d79c7b56611..f4ab35dcd6b 100644 --- a/contracts/token/ERC1155/utils/ERC1155Holder.sol +++ b/contracts/token/ERC1155/utils/ERC1155Holder.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC1155/utils/ERC1155Holder.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC1155/utils/ERC1155Holder.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC20/ERC20.sol b/contracts/token/ERC20/ERC20.sol index 173707dc712..3f646438174 100644 --- a/contracts/token/ERC20/ERC20.sol +++ b/contracts/token/ERC20/ERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC20/extensions/ERC20Permit.sol b/contracts/token/ERC20/extensions/ERC20Permit.sol index b89df28be9e..222285c5a87 100644 --- a/contracts/token/ERC20/extensions/ERC20Permit.sol +++ b/contracts/token/ERC20/extensions/ERC20Permit.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/ERC20Permit.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/extensions/ERC20Permit.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC20/extensions/ERC20Votes.sol b/contracts/token/ERC20/extensions/ERC20Votes.sol index 1dc9e91b96d..3c25bed9886 100644 --- a/contracts/token/ERC20/extensions/ERC20Votes.sol +++ b/contracts/token/ERC20/extensions/ERC20Votes.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/ERC20Votes.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/extensions/ERC20Votes.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC20/extensions/ERC4626.sol b/contracts/token/ERC20/extensions/ERC4626.sol index 201972815a0..8c0825a13b8 100644 --- a/contracts/token/ERC20/extensions/ERC4626.sol +++ b/contracts/token/ERC20/extensions/ERC4626.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/ERC4626.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/extensions/ERC4626.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC20/extensions/IERC20Permit.sol b/contracts/token/ERC20/extensions/IERC20Permit.sol index ae388b8de81..2477946b98b 100644 --- a/contracts/token/ERC20/extensions/IERC20Permit.sol +++ b/contracts/token/ERC20/extensions/IERC20Permit.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Permit.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/extensions/IERC20Permit.sol) pragma solidity >=0.4.16; diff --git a/contracts/token/ERC20/utils/SafeERC20.sol b/contracts/token/ERC20/utils/SafeERC20.sol index 388bf991b04..47f26e681d4 100644 --- a/contracts/token/ERC20/utils/SafeERC20.sol +++ b/contracts/token/ERC20/utils/SafeERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC6909/ERC6909.sol b/contracts/token/ERC6909/ERC6909.sol index e77cf4ea194..266e73fd15f 100644 --- a/contracts/token/ERC6909/ERC6909.sol +++ b/contracts/token/ERC6909/ERC6909.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC6909/ERC6909.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC6909/ERC6909.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC6909/extensions/ERC6909ContentURI.sol b/contracts/token/ERC6909/extensions/ERC6909ContentURI.sol index 23c67135f13..92e6047a229 100644 --- a/contracts/token/ERC6909/extensions/ERC6909ContentURI.sol +++ b/contracts/token/ERC6909/extensions/ERC6909ContentURI.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC6909/extensions/ERC6909ContentURI.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC6909/extensions/ERC6909ContentURI.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC6909/extensions/ERC6909Metadata.sol b/contracts/token/ERC6909/extensions/ERC6909Metadata.sol index 220fc880ff9..88aa482428d 100644 --- a/contracts/token/ERC6909/extensions/ERC6909Metadata.sol +++ b/contracts/token/ERC6909/extensions/ERC6909Metadata.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC6909/extensions/ERC6909Metadata.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC6909/extensions/ERC6909Metadata.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC6909/extensions/ERC6909TokenSupply.sol b/contracts/token/ERC6909/extensions/ERC6909TokenSupply.sol index e4e21523918..9e67d9722b9 100644 --- a/contracts/token/ERC6909/extensions/ERC6909TokenSupply.sol +++ b/contracts/token/ERC6909/extensions/ERC6909TokenSupply.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC6909/extensions/ERC6909TokenSupply.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC6909/extensions/ERC6909TokenSupply.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC721/ERC721.sol b/contracts/token/ERC721/ERC721.sol index 85943e4bad3..859d2002b99 100644 --- a/contracts/token/ERC721/ERC721.sol +++ b/contracts/token/ERC721/ERC721.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC721/ERC721.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Burnable.sol b/contracts/token/ERC721/extensions/ERC721Burnable.sol index 06babdcf259..9eab09713f5 100644 --- a/contracts/token/ERC721/extensions/ERC721Burnable.sol +++ b/contracts/token/ERC721/extensions/ERC721Burnable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Burnable.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Burnable.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Consecutive.sol b/contracts/token/ERC721/extensions/ERC721Consecutive.sol index 34f62324b53..775c640512a 100644 --- a/contracts/token/ERC721/extensions/ERC721Consecutive.sol +++ b/contracts/token/ERC721/extensions/ERC721Consecutive.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/extensions/ERC721Consecutive.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Consecutive.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Enumerable.sol b/contracts/token/ERC721/extensions/ERC721Enumerable.sol index 91021db06db..d80a47eb4a2 100644 --- a/contracts/token/ERC721/extensions/ERC721Enumerable.sol +++ b/contracts/token/ERC721/extensions/ERC721Enumerable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC721/extensions/ERC721Enumerable.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Enumerable.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Pausable.sol b/contracts/token/ERC721/extensions/ERC721Pausable.sol index 0404488664f..2b3d5e5b7d9 100644 --- a/contracts/token/ERC721/extensions/ERC721Pausable.sol +++ b/contracts/token/ERC721/extensions/ERC721Pausable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Pausable.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Pausable.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Royalty.sol b/contracts/token/ERC721/extensions/ERC721Royalty.sol index 21a4c217a46..e618ea44f43 100644 --- a/contracts/token/ERC721/extensions/ERC721Royalty.sol +++ b/contracts/token/ERC721/extensions/ERC721Royalty.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC721/extensions/ERC721Royalty.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Royalty.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721URIStorage.sol b/contracts/token/ERC721/extensions/ERC721URIStorage.sol index bc59ec159ab..04a6690f973 100644 --- a/contracts/token/ERC721/extensions/ERC721URIStorage.sol +++ b/contracts/token/ERC721/extensions/ERC721URIStorage.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC721/extensions/ERC721URIStorage.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721URIStorage.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Votes.sol b/contracts/token/ERC721/extensions/ERC721Votes.sol index 4b2ddd61284..58f95859785 100644 --- a/contracts/token/ERC721/extensions/ERC721Votes.sol +++ b/contracts/token/ERC721/extensions/ERC721Votes.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Votes.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Votes.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Wrapper.sol b/contracts/token/ERC721/extensions/ERC721Wrapper.sol index ac714072f46..0fd90d3385d 100644 --- a/contracts/token/ERC721/extensions/ERC721Wrapper.sol +++ b/contracts/token/ERC721/extensions/ERC721Wrapper.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Wrapper.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Wrapper.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/utils/ERC721Holder.sol b/contracts/token/ERC721/utils/ERC721Holder.sol index fd8c1b17aa1..bf89465e3bf 100644 --- a/contracts/token/ERC721/utils/ERC721Holder.sol +++ b/contracts/token/ERC721/utils/ERC721Holder.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/utils/ERC721Holder.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/utils/ERC721Holder.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC721/utils/ERC721Utils.sol b/contracts/token/ERC721/utils/ERC721Utils.sol index 87801f04bff..069e1d0f3ff 100644 --- a/contracts/token/ERC721/utils/ERC721Utils.sol +++ b/contracts/token/ERC721/utils/ERC721Utils.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC721/utils/ERC721Utils.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/utils/ERC721Utils.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Address.sol b/contracts/utils/Address.sol index 52b5a0a7044..9cb6c8daa5a 100644 --- a/contracts/utils/Address.sol +++ b/contracts/utils/Address.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/Address.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Address.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Base58.sol b/contracts/utils/Base58.sol index 9fefe637497..001b767f202 100644 --- a/contracts/utils/Base58.sol +++ b/contracts/utils/Base58.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Base58.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Base64.sol b/contracts/utils/Base64.sol index d54bdab453e..f85873e630e 100644 --- a/contracts/utils/Base64.sol +++ b/contracts/utils/Base64.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/Base64.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Base64.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Blockhash.sol b/contracts/utils/Blockhash.sol index def5973b6bf..46a908b711b 100644 --- a/contracts/utils/Blockhash.sol +++ b/contracts/utils/Blockhash.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/Blockhash.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Blockhash.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Bytes.sol b/contracts/utils/Bytes.sol index 7a7d20553b6..14919b0d6db 100644 --- a/contracts/utils/Bytes.sol +++ b/contracts/utils/Bytes.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/Bytes.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Bytes.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/Create2.sol b/contracts/utils/Create2.sol index 9406edf6cce..3ba12d1df6b 100644 --- a/contracts/utils/Create2.sol +++ b/contracts/utils/Create2.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (utils/Create2.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Create2.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/LowLevelCall.sol b/contracts/utils/LowLevelCall.sol index a5c015dad34..d1113329103 100644 --- a/contracts/utils/LowLevelCall.sol +++ b/contracts/utils/LowLevelCall.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/LowLevelCall.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Memory.sol b/contracts/utils/Memory.sol index 7327c741db0..d4c09a3f48f 100644 --- a/contracts/utils/Memory.sol +++ b/contracts/utils/Memory.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Memory.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/Multicall.sol b/contracts/utils/Multicall.sol index c986c3c7cde..929bb5922b4 100644 --- a/contracts/utils/Multicall.sol +++ b/contracts/utils/Multicall.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (utils/Multicall.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Multicall.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/RLP.sol b/contracts/utils/RLP.sol index 4066e296ff5..84cfd7c1c79 100644 --- a/contracts/utils/RLP.sol +++ b/contracts/utils/RLP.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/RLP.sol) pragma solidity ^0.8.27; import {Math} from "./math/Math.sol"; diff --git a/contracts/utils/ReentrancyGuard.sol b/contracts/utils/ReentrancyGuard.sol index 6e44894dc0f..e082bdf0715 100644 --- a/contracts/utils/ReentrancyGuard.sol +++ b/contracts/utils/ReentrancyGuard.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/ReentrancyGuardTransient.sol b/contracts/utils/ReentrancyGuardTransient.sol index 80723cd77cc..522b71aa3ce 100644 --- a/contracts/utils/ReentrancyGuardTransient.sol +++ b/contracts/utils/ReentrancyGuardTransient.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (utils/ReentrancyGuardTransient.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/ReentrancyGuardTransient.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/RelayedCall.sol b/contracts/utils/RelayedCall.sol index 29ca4331ab0..e037fd1ef5a 100644 --- a/contracts/utils/RelayedCall.sol +++ b/contracts/utils/RelayedCall.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/RelayedCall.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/ShortStrings.sol b/contracts/utils/ShortStrings.sol index e5d84468b9b..ed5d2e5af02 100644 --- a/contracts/utils/ShortStrings.sol +++ b/contracts/utils/ShortStrings.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (utils/ShortStrings.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/ShortStrings.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/SlotDerivation.sol b/contracts/utils/SlotDerivation.sol index 74dfbbded44..32dee2f71b1 100644 --- a/contracts/utils/SlotDerivation.sol +++ b/contracts/utils/SlotDerivation.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (utils/SlotDerivation.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/SlotDerivation.sol) // This file was procedurally generated from scripts/generate/templates/SlotDerivation.js. pragma solidity ^0.8.20; diff --git a/contracts/utils/Strings.sol b/contracts/utils/Strings.sol index 69f0f5e2b10..fe0a9bab6e7 100644 --- a/contracts/utils/Strings.sol +++ b/contracts/utils/Strings.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/Strings.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Strings.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/ECDSA.sol b/contracts/utils/cryptography/ECDSA.sol index cec4e839711..94fee3abc5c 100644 --- a/contracts/utils/cryptography/ECDSA.sol +++ b/contracts/utils/cryptography/ECDSA.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/ECDSA.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/cryptography/EIP712.sol b/contracts/utils/cryptography/EIP712.sol index 0eaef9d27e0..955fe69e16c 100644 --- a/contracts/utils/cryptography/EIP712.sol +++ b/contracts/utils/cryptography/EIP712.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/cryptography/EIP712.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/EIP712.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/MessageHashUtils.sol b/contracts/utils/cryptography/MessageHashUtils.sol index 232090f31db..a9eee7980b6 100644 --- a/contracts/utils/cryptography/MessageHashUtils.sol +++ b/contracts/utils/cryptography/MessageHashUtils.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (utils/cryptography/MessageHashUtils.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/MessageHashUtils.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/SignatureChecker.sol b/contracts/utils/cryptography/SignatureChecker.sol index 4290c57ddf1..db63cbfedfc 100644 --- a/contracts/utils/cryptography/SignatureChecker.sol +++ b/contracts/utils/cryptography/SignatureChecker.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/cryptography/SignatureChecker.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/SignatureChecker.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/WebAuthn.sol b/contracts/utils/cryptography/WebAuthn.sol index 2a2e5ea2fc3..c8e3ebe30e2 100644 --- a/contracts/utils/cryptography/WebAuthn.sol +++ b/contracts/utils/cryptography/WebAuthn.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/WebAuthn.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/draft-ERC7739Utils.sol b/contracts/utils/cryptography/draft-ERC7739Utils.sol index 07d4ea8affe..af4ca61198b 100644 --- a/contracts/utils/cryptography/draft-ERC7739Utils.sol +++ b/contracts/utils/cryptography/draft-ERC7739Utils.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/cryptography/draft-ERC7739Utils.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/draft-ERC7739Utils.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/cryptography/signers/SignerEIP7702.sol b/contracts/utils/cryptography/signers/SignerEIP7702.sol index 652ab37df24..3065113ada3 100644 --- a/contracts/utils/cryptography/signers/SignerEIP7702.sol +++ b/contracts/utils/cryptography/signers/SignerEIP7702.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/cryptography/signers/SignerEIP7702.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/signers/SignerEIP7702.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/cryptography/signers/SignerWebAuthn.sol b/contracts/utils/cryptography/signers/SignerWebAuthn.sol index 8eb7dd237fd..90bc522a4f8 100644 --- a/contracts/utils/cryptography/signers/SignerWebAuthn.sol +++ b/contracts/utils/cryptography/signers/SignerWebAuthn.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/signers/SignerWebAuthn.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/signers/draft-ERC7739.sol b/contracts/utils/cryptography/signers/draft-ERC7739.sol index ffbf6a35fac..b504e6aab71 100644 --- a/contracts/utils/cryptography/signers/draft-ERC7739.sol +++ b/contracts/utils/cryptography/signers/draft-ERC7739.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/cryptography/signers/draft-ERC7739.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/signers/draft-ERC7739.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sol b/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sol index bf3dc3a73a5..42e19fd3db0 100644 --- a/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sol +++ b/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/cryptography/verifiers/ERC7913P256Verifier.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/verifiers/ERC7913P256Verifier.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sol b/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sol index 7d47c63ff55..f074601900b 100644 --- a/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sol +++ b/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/cryptography/verifiers/ERC7913RSAVerifier.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/verifiers/ERC7913RSAVerifier.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol b/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol index a5fb5b829b9..639822db48f 100644 --- a/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol +++ b/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/draft-InteroperableAddress.sol b/contracts/utils/draft-InteroperableAddress.sol index 94feb2133db..7ab16483c17 100644 --- a/contracts/utils/draft-InteroperableAddress.sol +++ b/contracts/utils/draft-InteroperableAddress.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/draft-InteroperableAddress.sol) pragma solidity ^0.8.26; diff --git a/contracts/utils/introspection/ERC165Checker.sol b/contracts/utils/introspection/ERC165Checker.sol index 60e1b966316..cbbbcff5b66 100644 --- a/contracts/utils/introspection/ERC165Checker.sol +++ b/contracts/utils/introspection/ERC165Checker.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165Checker.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/introspection/ERC165Checker.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/math/Math.sol b/contracts/utils/math/Math.sol index d7fd2f64d15..bce6852b9fc 100644 --- a/contracts/utils/math/Math.sol +++ b/contracts/utils/math/Math.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/math/Math.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/structs/Accumulators.sol b/contracts/utils/structs/Accumulators.sol index db58ba540de..af08d5505ba 100644 --- a/contracts/utils/structs/Accumulators.sol +++ b/contracts/utils/structs/Accumulators.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/structs/Accumulators.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/structs/Checkpoints.sol b/contracts/utils/structs/Checkpoints.sol index 70bd74c0922..c7976258099 100644 --- a/contracts/utils/structs/Checkpoints.sol +++ b/contracts/utils/structs/Checkpoints.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/structs/Checkpoints.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/structs/Checkpoints.sol) // This file was procedurally generated from scripts/generate/templates/Checkpoints.js. pragma solidity ^0.8.20; diff --git a/contracts/utils/structs/CircularBuffer.sol b/contracts/utils/structs/CircularBuffer.sol index 8a479c3044d..ba50e125a15 100644 --- a/contracts/utils/structs/CircularBuffer.sol +++ b/contracts/utils/structs/CircularBuffer.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (utils/structs/CircularBuffer.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/structs/CircularBuffer.sol) pragma solidity ^0.8.20; import {Math} from "../math/Math.sol"; diff --git a/contracts/utils/types/Time.sol b/contracts/utils/types/Time.sol index a96b92d50e3..7d8ea123c8a 100644 --- a/contracts/utils/types/Time.sol +++ b/contracts/utils/types/Time.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (utils/types/Time.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/types/Time.sol) pragma solidity ^0.8.20; diff --git a/docs/antora.yml b/docs/antora.yml index 4bc06b36a38..46c7444e03d 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -1,7 +1,7 @@ name: contracts title: Contracts -version: 5.x -prerelease: false +version: 5.x-rc +prerelease: true nav: - modules/ROOT/nav.adoc - modules/api/nav.adoc diff --git a/package.json b/package.json index c01775bd963..be7f38a17ac 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "openzeppelin-solidity", "description": "Secure Smart Contract library for Solidity", - "version": "5.4.0", + "version": "5.5.0-rc.0", "private": true, "files": [ "/contracts/**/*.sol", From d6ef4ce75ba68ea88a6ae7bf79380c6b4a7ccbad Mon Sep 17 00:00:00 2001 From: GarmashAlex Date: Fri, 3 Oct 2025 14:33:41 +0300 Subject: [PATCH 03/17] Prevent revert in isModuleInstalled for fallback modules on short additionalContext (#5961) Co-authored-by: Hadrien Croubois Co-authored-by: ernestognw Signed-off-by: Hadrien Croubois --- CHANGELOG.md | 1 + .../account/extensions/draft-AccountERC7579.sol | 4 +++- .../extensions/AccountERC7579.behavior.js | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9c60e9a376..5fa4d1ca47b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Bug fixes - `ERC165Checker`: Ensure the `supportsERC165` function returns false if the target reverts during the `supportsInterface(0xffffffff)` call. ([#5810](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5880)) +- `AccountERC7579`: Prevent revert in `isModuleInstalled` for fallback modules when `additionalContext` has fewer than 4 bytes. The function now returns `false` instead of reverting, ensuring ERC-7579 compliance. ([#5961](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5961)) ### Breaking changes diff --git a/contracts/account/extensions/draft-AccountERC7579.sol b/contracts/account/extensions/draft-AccountERC7579.sol index b16f9dbd54e..320d7bd0794 100644 --- a/contracts/account/extensions/draft-AccountERC7579.sol +++ b/contracts/account/extensions/draft-AccountERC7579.sol @@ -149,7 +149,9 @@ abstract contract AccountERC7579 is Account, IERC1271, IERC7579Execution, IERC75 ) public view virtual returns (bool) { if (moduleTypeId == MODULE_TYPE_VALIDATOR) return _validators.contains(module); if (moduleTypeId == MODULE_TYPE_EXECUTOR) return _executors.contains(module); - if (moduleTypeId == MODULE_TYPE_FALLBACK) return _fallbacks[bytes4(additionalContext[0:4])] == module; + if (moduleTypeId == MODULE_TYPE_FALLBACK) + // ERC-7579 requires this function to return bool, never revert. Check length to avoid out-of-bounds access. + return additionalContext.length > 3 && _fallbacks[bytes4(additionalContext[0:4])] == module; return false; } diff --git a/test/account/extensions/AccountERC7579.behavior.js b/test/account/extensions/AccountERC7579.behavior.js index 7bf52f311aa..d531db7e046 100644 --- a/test/account/extensions/AccountERC7579.behavior.js +++ b/test/account/extensions/AccountERC7579.behavior.js @@ -91,6 +91,22 @@ function shouldBehaveLikeAccountERC7579({ withHooks = false } = {}) { }); }); + describe('isModuleInstalled', function () { + it('should not revert if calldata is empty or too short', async function () { + await expect( + this.mock.isModuleInstalled(MODULE_TYPE_FALLBACK, this.modules[MODULE_TYPE_FALLBACK], '0x'), + ).to.eventually.equal(false); + + await expect( + this.mock.isModuleInstalled(MODULE_TYPE_FALLBACK, this.modules[MODULE_TYPE_FALLBACK], '0x123456'), + ).to.eventually.equal(false); + + await expect( + this.mock.isModuleInstalled(MODULE_TYPE_FALLBACK, this.modules[MODULE_TYPE_FALLBACK], '0x12345678'), + ).to.eventually.equal(false); + }); + }); + describe('module installation', function () { it('should revert if the caller is not the canonical entrypoint or the account itself', async function () { await expect(this.mock.connect(this.other).installModule(MODULE_TYPE_VALIDATOR, this.mock, '0x')) From f858c54d475e43f5c6ea8fec5f28d961880a1712 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 3 Oct 2025 16:59:41 +0200 Subject: [PATCH 04/17] Mark ERC7913WebAuthnVerifier as stateless (#5954) Signed-off-by: Hadrien Croubois --- contracts/mocks/Stateless.sol | 1 + .../utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol | 2 ++ 2 files changed, 3 insertions(+) diff --git a/contracts/mocks/Stateless.sol b/contracts/mocks/Stateless.sol index 08d6795ad8f..5b11eb657b8 100644 --- a/contracts/mocks/Stateless.sol +++ b/contracts/mocks/Stateless.sol @@ -33,6 +33,7 @@ import {ERC4337Utils} from "../account/utils/draft-ERC4337Utils.sol"; import {ERC7579Utils} from "../account/utils/draft-ERC7579Utils.sol"; import {ERC7913P256Verifier} from "../utils/cryptography/verifiers/ERC7913P256Verifier.sol"; import {ERC7913RSAVerifier} from "../utils/cryptography/verifiers/ERC7913RSAVerifier.sol"; +import {ERC7913WebAuthnVerifier} from "../utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol"; import {Heap} from "../utils/structs/Heap.sol"; import {InteroperableAddress} from "../utils/draft-InteroperableAddress.sol"; import {LowLevelCall} from "../utils/LowLevelCall.sol"; diff --git a/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol b/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol index 639822db48f..b5b68ba44e0 100644 --- a/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol +++ b/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol @@ -17,6 +17,8 @@ import {IERC7913SignatureVerifier} from "../../../interfaces/IERC7913.sol"; * WebAuthn checks: type validation, challenge matching, and cryptographic signature verification. * * NOTE: Wallets that may require default P256 validation may install a P256 verifier separately. + * + * @custom:stateless */ contract ERC7913WebAuthnVerifier is IERC7913SignatureVerifier { /// @inheritdoc IERC7913SignatureVerifier From 9067b195bdec1d11cd387508d4003aaba45cd949 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 7 Oct 2025 09:18:29 +0200 Subject: [PATCH 05/17] Fix invalid length check in SignatureChecker (#5973) Signed-off-by: Hadrien Croubois --- contracts/utils/cryptography/SignatureChecker.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/SignatureChecker.sol b/contracts/utils/cryptography/SignatureChecker.sol index db63cbfedfc..b65b37ea970 100644 --- a/contracts/utils/cryptography/SignatureChecker.sol +++ b/contracts/utils/cryptography/SignatureChecker.sol @@ -83,7 +83,7 @@ library SignatureChecker { mcopy(add(ptr, 0x44), signature, add(length, 0x20)) let success := staticcall(gas(), signer, ptr, add(length, 0x64), 0x00, 0x20) - result := and(success, and(gt(returndatasize(), 0x19), eq(mload(0x00), selector))) + result := and(success, and(gt(returndatasize(), 0x1f), eq(mload(0x00), selector))) } } From 84763017f296209548bce8df04cd3ae5b66df2c3 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Tue, 7 Oct 2025 17:39:27 +0200 Subject: [PATCH 06/17] ERC7579: prevent installing/uninstalling without proper initData (#5974) Co-authored-by: ernestognw Signed-off-by: Hadrien Croubois --- CHANGELOG.md | 1 + certora/specs/Account.spec | 2 +- .../extensions/draft-AccountERC7579.sol | 8 ++++++- .../extensions/AccountERC7579.behavior.js | 22 +++++++++++++++++++ 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fa4d1ca47b..ad636f8f223 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - `SignerERC7702` is renamed as `SignerEIP7702`. Imports and inheritance must be updated to that new name and path. Behavior is unmodified. ([#5932](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5932)) - `ERC721Holder`, `ERC1155Holder`, `ReentrancyGuard` and `ReentrancyGuardTransient` are flagged as stateless and are no longer transpiled. Developers using their upgradeable variants from `@openzeppelin/contracts-upgradeable` must update their imports to use the equivalent version available in `@openzeppelin/contracts`. ([#5944](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5944), [#5942](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5942)) - Update minimum pragma to 0.8.24 in `Votes`, `VotesExtended`, `ERC20Votes`, `Strings`, `ERC1155URIStorage`, `MessageHashUtils`, `ERC721URIStorage`, `ERC721Votes`, `ERC721Wrapper`, `ERC721Burnable`, `ERC721Consecutive`, `ERC721Enumerable`, `ERC721Pausable`, `ERC721Royalty`, `ERC721Wrapper`, `EIP712`, `ERC4626` and `ERC7739`. ([#5726](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5726)) +- `AccountERC7579`: Installing and uninstalling fallback modules now require the corresponding `initData` and `deInitData` arguments to be at least 4 bytes long (matching the selector to which the fallback module is registered). It now reverts with `ERC7579CannotDecodeFallbackData` instead of treating the missing bytes as `0x00`. ### Deprecation diff --git a/certora/specs/Account.spec b/certora/specs/Account.spec index 638cdc838dd..941621e6e58 100644 --- a/certora/specs/Account.spec +++ b/certora/specs/Account.spec @@ -205,7 +205,7 @@ invariant absentExecutorIsNotStored(address module, uint256 index) */ // This guarantees that at most one fallback module is active for a given initData (i.e. selector) rule fallbackModule(address module, bytes initData) { - assert isModuleInstalled(FALLBACK_TYPE(), module, initData) <=> getFallbackHandler(getDataSelector(initData)) == module; + assert isModuleInstalled(FALLBACK_TYPE(), module, initData) <=> (initData.length >= 4 && getFallbackHandler(getDataSelector(initData)) == module); } rule moduleManagementRule(env e, method f, calldataarg args, uint256 moduleTypeId, address module, bytes additionalContext) diff --git a/contracts/account/extensions/draft-AccountERC7579.sol b/contracts/account/extensions/draft-AccountERC7579.sol index 320d7bd0794..71a35f0b722 100644 --- a/contracts/account/extensions/draft-AccountERC7579.sol +++ b/contracts/account/extensions/draft-AccountERC7579.sol @@ -68,6 +68,9 @@ abstract contract AccountERC7579 is Account, IERC1271, IERC7579Execution, IERC75 /// @dev The account's {fallback} was called with a selector that doesn't have an installed handler. error ERC7579MissingFallbackHandler(bytes4 selector); + /// @dev The provided initData/deInitData for a fallback module is too short to extract a selector. + error ERC7579CannotDecodeFallbackData(); + /// @dev Modifier that checks if the caller is an installed module of the given type. modifier onlyModule(uint256 moduleTypeId, bytes calldata additionalContext) { _checkModule(moduleTypeId, msg.sender, additionalContext); @@ -380,11 +383,13 @@ abstract contract AccountERC7579 is Account, IERC1271, IERC7579Execution, IERC75 * https://github.com/erc7579/erc7579-implementation/blob/16138d1afd4e9711f6c1425133538837bd7787b5/src/MSAAdvanced.sol#L296[ERC7579 reference implementation]. * * This is not standardized in ERC-7579 (or in any follow-up ERC). Some accounts may want to override these internal functions. + * + * NOTE: This function expects the signature to be at least 20 bytes long. Panics with {Panic-ARRAY_OUT_OF_BOUNDS} (0x32) otherwise. */ function _extractSignatureValidator( bytes calldata signature ) internal pure virtual returns (address module, bytes calldata innerSignature) { - return (address(bytes20(signature[0:20])), signature[20:]); + return (address(bytes20(signature)), signature[20:]); } /** @@ -399,6 +404,7 @@ abstract contract AccountERC7579 is Account, IERC1271, IERC7579Execution, IERC75 function _decodeFallbackData( bytes memory data ) internal pure virtual returns (bytes4 selector, bytes memory remaining) { + require(data.length > 3, ERC7579CannotDecodeFallbackData()); return (bytes4(data), data.slice(4)); } diff --git a/test/account/extensions/AccountERC7579.behavior.js b/test/account/extensions/AccountERC7579.behavior.js index d531db7e046..e02fdec58d0 100644 --- a/test/account/extensions/AccountERC7579.behavior.js +++ b/test/account/extensions/AccountERC7579.behavior.js @@ -167,6 +167,17 @@ function shouldBehaveLikeAccountERC7579({ withHooks = false } = {}) { }); } + it('should revert when installing a fallback module with an initData that is not long enough to encode a function selector', async function () { + const instance = this.modules[MODULE_TYPE_FALLBACK]; + await expect( + this.mockFromEntrypoint.installModule(MODULE_TYPE_FALLBACK, instance, '0x'), + ).to.be.revertedWithCustomError(this.mock, 'ERC7579CannotDecodeFallbackData'); + + await expect( + this.mockFromEntrypoint.installModule(MODULE_TYPE_FALLBACK, instance, '0x123456'), + ).to.be.revertedWithCustomError(this.mock, 'ERC7579CannotDecodeFallbackData'); + }); + withHooks && describe('with hook', function () { beforeEach(async function () { @@ -240,6 +251,17 @@ function shouldBehaveLikeAccountERC7579({ withHooks = false } = {}) { }); } + it('should revert when uninstalling a fallback module with an initData that is not long enough to encode a function selector', async function () { + const instance = this.modules[MODULE_TYPE_FALLBACK]; + await expect( + this.mockFromEntrypoint.uninstallModule(MODULE_TYPE_FALLBACK, instance, '0x'), + ).to.be.revertedWithCustomError(this.mock, 'ERC7579CannotDecodeFallbackData'); + + await expect( + this.mockFromEntrypoint.uninstallModule(MODULE_TYPE_FALLBACK, instance, '0x123456'), + ).to.be.revertedWithCustomError(this.mock, 'ERC7579CannotDecodeFallbackData'); + }); + it('should revert uninstalling a module of type MODULE_TYPE_FALLBACK if a different module was installed for the provided selector', async function () { const instance = this.modules[MODULE_TYPE_FALLBACK]; const anotherInstance = await ethers.deployContract('$ERC7579ModuleMock', [MODULE_TYPE_FALLBACK]); From e3626d0887cc1bd05fc030e662a8c9a139163b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20Garc=C3=ADa?= Date: Thu, 9 Oct 2025 09:19:35 -0600 Subject: [PATCH 07/17] Add `signature` argument to internal `_validateUserOp` in Account.sol (#5976) Co-authored-by: Hadrien Croubois Signed-off-by: Hadrien Croubois --- CHANGELOG.md | 3 ++- contracts/account/Account.sol | 12 +++++++++--- .../account/extensions/draft-AccountERC7579.sol | 5 +++-- contracts/mocks/account/AccountMock.sol | 5 +++-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad636f8f223..47bdbc5a900 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,8 @@ - `SignerERC7702` is renamed as `SignerEIP7702`. Imports and inheritance must be updated to that new name and path. Behavior is unmodified. ([#5932](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5932)) - `ERC721Holder`, `ERC1155Holder`, `ReentrancyGuard` and `ReentrancyGuardTransient` are flagged as stateless and are no longer transpiled. Developers using their upgradeable variants from `@openzeppelin/contracts-upgradeable` must update their imports to use the equivalent version available in `@openzeppelin/contracts`. ([#5944](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5944), [#5942](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5942)) - Update minimum pragma to 0.8.24 in `Votes`, `VotesExtended`, `ERC20Votes`, `Strings`, `ERC1155URIStorage`, `MessageHashUtils`, `ERC721URIStorage`, `ERC721Votes`, `ERC721Wrapper`, `ERC721Burnable`, `ERC721Consecutive`, `ERC721Enumerable`, `ERC721Pausable`, `ERC721Royalty`, `ERC721Wrapper`, `EIP712`, `ERC4626` and `ERC7739`. ([#5726](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5726)) -- `AccountERC7579`: Installing and uninstalling fallback modules now require the corresponding `initData` and `deInitData` arguments to be at least 4 bytes long (matching the selector to which the fallback module is registered). It now reverts with `ERC7579CannotDecodeFallbackData` instead of treating the missing bytes as `0x00`. +- `Account`: Add `signature` argument to the internal `_validateUserOp` function for custom signature handling logic. Developers overriding it must now provide the signature from the user operation (i.e. `userOp.signature`) to keep compatibility. ([#5976](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5976)) +- `AccountERC7579`: Installing and uninstalling fallback modules now require the corresponding `initData` and `deInitData` arguments to be at least 4 bytes long (matching the selector to which the fallback module is registered). It now reverts with `ERC7579CannotDecodeFallbackData` instead of treating the missing bytes as `0x00`. ([#5974](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5974)) ### Deprecation diff --git a/contracts/account/Account.sol b/contracts/account/Account.sol index 5ea213bc390..743cf2a135b 100644 --- a/contracts/account/Account.sol +++ b/contracts/account/Account.sol @@ -75,7 +75,7 @@ abstract contract Account is AbstractSigner, IAccount { bytes32 userOpHash, uint256 missingAccountFunds ) public virtual onlyEntryPoint returns (uint256) { - uint256 validationData = _validateUserOp(userOp, userOpHash); + uint256 validationData = _validateUserOp(userOp, userOpHash, userOp.signature); _payPrefund(missingAccountFunds); return validationData; } @@ -84,15 +84,21 @@ abstract contract Account is AbstractSigner, IAccount { * @dev Returns the validationData for a given user operation. By default, this checks the signature of the * signable hash (produced by {_signableUserOpHash}) using the abstract signer ({AbstractSigner-_rawSignatureValidation}). * + * The `signature` parameter is taken directly from the user operation's `signature` field. + * This design enables derived contracts to implement custom signature handling logic, + * such as embedding additional data within the signature and processing it by overriding this function + * and optionally invoking `super`. + * * NOTE: The userOpHash is assumed to be correct. Calling this function with a userOpHash that does not match the * userOp will result in undefined behavior. */ function _validateUserOp( PackedUserOperation calldata userOp, - bytes32 userOpHash + bytes32 userOpHash, + bytes calldata signature ) internal virtual returns (uint256) { return - _rawSignatureValidation(_signableUserOpHash(userOp, userOpHash), userOp.signature) + _rawSignatureValidation(_signableUserOpHash(userOp, userOpHash), signature) ? ERC4337Utils.SIG_VALIDATION_SUCCESS : ERC4337Utils.SIG_VALIDATION_FAILED; } diff --git a/contracts/account/extensions/draft-AccountERC7579.sol b/contracts/account/extensions/draft-AccountERC7579.sol index 71a35f0b722..134bc92bd80 100644 --- a/contracts/account/extensions/draft-AccountERC7579.sol +++ b/contracts/account/extensions/draft-AccountERC7579.sol @@ -210,13 +210,14 @@ abstract contract AccountERC7579 is Account, IERC1271, IERC7579Execution, IERC75 */ function _validateUserOp( PackedUserOperation calldata userOp, - bytes32 userOpHash + bytes32 userOpHash, + bytes calldata signature ) internal virtual override returns (uint256) { address module = _extractUserOpValidator(userOp); return isModuleInstalled(MODULE_TYPE_VALIDATOR, module, Calldata.emptyBytes()) ? IERC7579Validator(module).validateUserOp(userOp, _signableUserOpHash(userOp, userOpHash)) - : super._validateUserOp(userOp, userOpHash); + : super._validateUserOp(userOp, userOpHash, signature); } /** diff --git a/contracts/mocks/account/AccountMock.sol b/contracts/mocks/account/AccountMock.sol index b9617ca7454..b5e17bf42c7 100644 --- a/contracts/mocks/account/AccountMock.sol +++ b/contracts/mocks/account/AccountMock.sol @@ -102,9 +102,10 @@ abstract contract AccountERC7702WithModulesMock is { function _validateUserOp( PackedUserOperation calldata userOp, - bytes32 userOpHash + bytes32 userOpHash, + bytes calldata signature ) internal virtual override(Account, AccountERC7579) returns (uint256) { - return super._validateUserOp(userOp, userOpHash); + return super._validateUserOp(userOp, userOpHash, signature); } /// @dev Resolve implementation of ERC-1271 by both ERC7739 and AccountERC7579 to support both schemes. From fd99f692259a9b1de4506fd6896a75bc9bd2c1ee Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Thu, 9 Oct 2025 17:47:54 +0200 Subject: [PATCH 08/17] Add `Array.slice` and `Array.splice` for value type arrays (#5965) --- .changeset/swift-planets-juggle.md | 5 + CHANGELOG.md | 2 +- .../extensions/AccessControlEnumerable.sol | 2 +- contracts/token/ERC1155/ERC1155.sol | 2 +- .../ERC1155/extensions/ERC1155Burnable.sol | 2 +- .../ERC1155/extensions/ERC1155Pausable.sol | 2 +- .../ERC1155/extensions/ERC1155Supply.sol | 2 +- contracts/utils/Arrays.sol | 185 ++++++++++++++- contracts/utils/Bytes.sol | 8 +- contracts/utils/structs/CircularBuffer.sol | 2 +- contracts/utils/structs/EnumerableMap.sol | 2 +- contracts/utils/structs/EnumerableSet.sol | 2 +- contracts/utils/structs/Heap.sol | 2 +- contracts/utils/structs/MerkleTree.sol | 2 +- scripts/generate/templates/Arrays.js | 70 +++++- scripts/generate/templates/EnumerableMap.js | 2 +- scripts/generate/templates/EnumerableSet.js | 2 +- test/utils/Arrays.t.sol | 219 +++++++++++++++++- test/utils/Arrays.test.js | 87 +++++-- test/utils/Bytes.t.sol | 2 +- 20 files changed, 566 insertions(+), 36 deletions(-) create mode 100644 .changeset/swift-planets-juggle.md diff --git a/.changeset/swift-planets-juggle.md b/.changeset/swift-planets-juggle.md new file mode 100644 index 00000000000..526a0b709ad --- /dev/null +++ b/.changeset/swift-planets-juggle.md @@ -0,0 +1,5 @@ +--- +'openzeppelin-solidity': minor +--- + +`Arrays`: Add `slice` and `splice` functions for value types (`uint256[]`, `bytes32[]`, `address[]`). diff --git a/CHANGELOG.md b/CHANGELOG.md index 47bdbc5a900..61d337e4096 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ - `ERC6909` and its extensions (`ERC6909ContentURI`, `ERC6909Metadata` and `ERC6909TokenSupply`) are no longer marked as draft since [EIP-6909](https://eips.ethereum.org/EIPS/eip-6909) is now final. Developers must update the import paths. Contracts behavior is not modified. ([#5929](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5929)) - `SignerERC7702` is renamed as `SignerEIP7702`. Imports and inheritance must be updated to that new name and path. Behavior is unmodified. ([#5932](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5932)) - `ERC721Holder`, `ERC1155Holder`, `ReentrancyGuard` and `ReentrancyGuardTransient` are flagged as stateless and are no longer transpiled. Developers using their upgradeable variants from `@openzeppelin/contracts-upgradeable` must update their imports to use the equivalent version available in `@openzeppelin/contracts`. ([#5944](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5944), [#5942](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5942)) -- Update minimum pragma to 0.8.24 in `Votes`, `VotesExtended`, `ERC20Votes`, `Strings`, `ERC1155URIStorage`, `MessageHashUtils`, `ERC721URIStorage`, `ERC721Votes`, `ERC721Wrapper`, `ERC721Burnable`, `ERC721Consecutive`, `ERC721Enumerable`, `ERC721Pausable`, `ERC721Royalty`, `ERC721Wrapper`, `EIP712`, `ERC4626` and `ERC7739`. ([#5726](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5726)) +- Update minimum pragma to 0.8.24 in `AccessControlEnumerable`, `Arrays`, `CircularBuffer`, `EIP712`, `EnumerableMap`, `EnumerableSet`, `ERC1155`, `ERC1155Burnable`, `ERC1155Pausable`, `ERC1155Supply`, `ERC1155URIStorage`, `ERC20Votes`, `ERC4626`,`ERC721Burnable`, `ERC721Consecutive`, `ERC721Enumerable`, `ERC721Pausable`, `ERC721Royalty`, `ERC721URIStorage`, `ERC721Votes`, `ERC721Wrapper`, `ERC7739`, `Heap`, `MerkleTree`, `MessageHashUtils`, `Strings`, `Votes` and `VotesExtended`. ([#5723](https://github.com/OpenZeppelin/openzeppelin-contracts/issues/5723), [#5726](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5726), [#5965](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5965)) - `Account`: Add `signature` argument to the internal `_validateUserOp` function for custom signature handling logic. Developers overriding it must now provide the signature from the user operation (i.e. `userOp.signature`) to keep compatibility. ([#5976](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5976)) - `AccountERC7579`: Installing and uninstalling fallback modules now require the corresponding `initData` and `deInitData` arguments to be at least 4 bytes long (matching the selector to which the fallback module is registered). It now reverts with `ERC7579CannotDecodeFallbackData` instead of treating the missing bytes as `0x00`. ([#5974](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5974)) diff --git a/contracts/access/extensions/AccessControlEnumerable.sol b/contracts/access/extensions/AccessControlEnumerable.sol index f2d79fd57c5..caf50a32923 100644 --- a/contracts/access/extensions/AccessControlEnumerable.sol +++ b/contracts/access/extensions/AccessControlEnumerable.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.4.0) (access/extensions/AccessControlEnumerable.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {IAccessControlEnumerable} from "./IAccessControlEnumerable.sol"; import {AccessControl} from "../AccessControl.sol"; diff --git a/contracts/token/ERC1155/ERC1155.sol b/contracts/token/ERC1155/ERC1155.sol index 8582e0cbd49..f5f01c51001 100644 --- a/contracts/token/ERC1155/ERC1155.sol +++ b/contracts/token/ERC1155/ERC1155.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.4.0) (token/ERC1155/ERC1155.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {IERC1155} from "./IERC1155.sol"; import {IERC1155MetadataURI} from "./extensions/IERC1155MetadataURI.sol"; diff --git a/contracts/token/ERC1155/extensions/ERC1155Burnable.sol b/contracts/token/ERC1155/extensions/ERC1155Burnable.sol index fd6ad61ddde..b355804fb58 100644 --- a/contracts/token/ERC1155/extensions/ERC1155Burnable.sol +++ b/contracts/token/ERC1155/extensions/ERC1155Burnable.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC1155/extensions/ERC1155Burnable.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC1155} from "../ERC1155.sol"; diff --git a/contracts/token/ERC1155/extensions/ERC1155Pausable.sol b/contracts/token/ERC1155/extensions/ERC1155Pausable.sol index a0de999f0cf..240413411cc 100644 --- a/contracts/token/ERC1155/extensions/ERC1155Pausable.sol +++ b/contracts/token/ERC1155/extensions/ERC1155Pausable.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC1155/extensions/ERC1155Pausable.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC1155} from "../ERC1155.sol"; import {Pausable} from "../../../utils/Pausable.sol"; diff --git a/contracts/token/ERC1155/extensions/ERC1155Supply.sol b/contracts/token/ERC1155/extensions/ERC1155Supply.sol index 96d5e606f4f..55fe9c78a17 100644 --- a/contracts/token/ERC1155/extensions/ERC1155Supply.sol +++ b/contracts/token/ERC1155/extensions/ERC1155Supply.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.4.0) (token/ERC1155/extensions/ERC1155Supply.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC1155} from "../ERC1155.sol"; import {Arrays} from "../../../utils/Arrays.sol"; diff --git a/contracts/utils/Arrays.sol b/contracts/utils/Arrays.sol index 511354a5f67..e8ea749fb61 100644 --- a/contracts/utils/Arrays.sol +++ b/contracts/utils/Arrays.sol @@ -2,7 +2,7 @@ // OpenZeppelin Contracts (last updated v5.4.0) (utils/Arrays.sol) // This file was procedurally generated from scripts/generate/templates/Arrays.js. -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Comparators} from "./Comparators.sol"; import {SlotDerivation} from "./SlotDerivation.sol"; @@ -375,6 +375,189 @@ library Arrays { return low; } + /** + * @dev Copies the content of `array`, from `start` (included) to the end of `array` into a new address array in + * memory. + * + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`] + */ + function slice(address[] memory array, uint256 start) internal pure returns (address[] memory) { + return slice(array, start, array.length); + } + + /** + * @dev Copies the content of `array`, from `start` (included) to `end` (excluded) into a new address array in + * memory. The `end` argument is truncated to the length of the `array`. + * + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`] + */ + function slice(address[] memory array, uint256 start, uint256 end) internal pure returns (address[] memory) { + // sanitize + end = Math.min(end, array.length); + start = Math.min(start, end); + + // allocate and copy + address[] memory result = new address[](end - start); + assembly ("memory-safe") { + mcopy(add(result, 0x20), add(add(array, 0x20), mul(start, 0x20)), mul(sub(end, start), 0x20)) + } + + return result; + } + + /** + * @dev Copies the content of `array`, from `start` (included) to the end of `array` into a new bytes32 array in + * memory. + * + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`] + */ + function slice(bytes32[] memory array, uint256 start) internal pure returns (bytes32[] memory) { + return slice(array, start, array.length); + } + + /** + * @dev Copies the content of `array`, from `start` (included) to `end` (excluded) into a new bytes32 array in + * memory. The `end` argument is truncated to the length of the `array`. + * + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`] + */ + function slice(bytes32[] memory array, uint256 start, uint256 end) internal pure returns (bytes32[] memory) { + // sanitize + end = Math.min(end, array.length); + start = Math.min(start, end); + + // allocate and copy + bytes32[] memory result = new bytes32[](end - start); + assembly ("memory-safe") { + mcopy(add(result, 0x20), add(add(array, 0x20), mul(start, 0x20)), mul(sub(end, start), 0x20)) + } + + return result; + } + + /** + * @dev Copies the content of `array`, from `start` (included) to the end of `array` into a new uint256 array in + * memory. + * + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`] + */ + function slice(uint256[] memory array, uint256 start) internal pure returns (uint256[] memory) { + return slice(array, start, array.length); + } + + /** + * @dev Copies the content of `array`, from `start` (included) to `end` (excluded) into a new uint256 array in + * memory. The `end` argument is truncated to the length of the `array`. + * + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`] + */ + function slice(uint256[] memory array, uint256 start, uint256 end) internal pure returns (uint256[] memory) { + // sanitize + end = Math.min(end, array.length); + start = Math.min(start, end); + + // allocate and copy + uint256[] memory result = new uint256[](end - start); + assembly ("memory-safe") { + mcopy(add(result, 0x20), add(add(array, 0x20), mul(start, 0x20)), mul(sub(end, start), 0x20)) + } + + return result; + } + + /** + * @dev Moves the content of `array`, from `start` (included) to the end of `array` to the start of that array. + * + * NOTE: This function modifies the provided array in place. If you need to preserve the original array, use {slice} instead. + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice[Javascript's `Array.splice`] + */ + function splice(address[] memory array, uint256 start) internal pure returns (address[] memory) { + return splice(array, start, array.length); + } + + /** + * @dev Moves the content of `array`, from `start` (included) to `end` (excluded) to the start of that array. The + * `end` argument is truncated to the length of the `array`. + * + * NOTE: This function modifies the provided array in place. If you need to preserve the original array, use {slice} instead. + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice[Javascript's `Array.splice`] + */ + function splice(address[] memory array, uint256 start, uint256 end) internal pure returns (address[] memory) { + // sanitize + end = Math.min(end, array.length); + start = Math.min(start, end); + + // move and resize + assembly ("memory-safe") { + mcopy(add(array, 0x20), add(add(array, 0x20), mul(start, 0x20)), mul(sub(end, start), 0x20)) + mstore(array, sub(end, start)) + } + + return array; + } + + /** + * @dev Moves the content of `array`, from `start` (included) to the end of `array` to the start of that array. + * + * NOTE: This function modifies the provided array in place. If you need to preserve the original array, use {slice} instead. + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice[Javascript's `Array.splice`] + */ + function splice(bytes32[] memory array, uint256 start) internal pure returns (bytes32[] memory) { + return splice(array, start, array.length); + } + + /** + * @dev Moves the content of `array`, from `start` (included) to `end` (excluded) to the start of that array. The + * `end` argument is truncated to the length of the `array`. + * + * NOTE: This function modifies the provided array in place. If you need to preserve the original array, use {slice} instead. + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice[Javascript's `Array.splice`] + */ + function splice(bytes32[] memory array, uint256 start, uint256 end) internal pure returns (bytes32[] memory) { + // sanitize + end = Math.min(end, array.length); + start = Math.min(start, end); + + // move and resize + assembly ("memory-safe") { + mcopy(add(array, 0x20), add(add(array, 0x20), mul(start, 0x20)), mul(sub(end, start), 0x20)) + mstore(array, sub(end, start)) + } + + return array; + } + + /** + * @dev Moves the content of `array`, from `start` (included) to the end of `array` to the start of that array. + * + * NOTE: This function modifies the provided array in place. If you need to preserve the original array, use {slice} instead. + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice[Javascript's `Array.splice`] + */ + function splice(uint256[] memory array, uint256 start) internal pure returns (uint256[] memory) { + return splice(array, start, array.length); + } + + /** + * @dev Moves the content of `array`, from `start` (included) to `end` (excluded) to the start of that array. The + * `end` argument is truncated to the length of the `array`. + * + * NOTE: This function modifies the provided array in place. If you need to preserve the original array, use {slice} instead. + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice[Javascript's `Array.splice`] + */ + function splice(uint256[] memory array, uint256 start, uint256 end) internal pure returns (uint256[] memory) { + // sanitize + end = Math.min(end, array.length); + start = Math.min(start, end); + + // move and resize + assembly ("memory-safe") { + mcopy(add(array, 0x20), add(add(array, 0x20), mul(start, 0x20)), mul(sub(end, start), 0x20)) + mstore(array, sub(end, start)) + } + + return array; + } + /** * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. * diff --git a/contracts/utils/Bytes.sol b/contracts/utils/Bytes.sol index 14919b0d6db..f1781214372 100644 --- a/contracts/utils/Bytes.sol +++ b/contracts/utils/Bytes.sol @@ -85,8 +85,7 @@ library Bytes { */ function slice(bytes memory buffer, uint256 start, uint256 end) internal pure returns (bytes memory) { // sanitize - uint256 length = buffer.length; - end = Math.min(end, length); + end = Math.min(end, buffer.length); start = Math.min(start, end); // allocate and copy @@ -102,6 +101,7 @@ library Bytes { * @dev Moves the content of `buffer`, from `start` (included) to the end of `buffer` to the start of that buffer. * * NOTE: This function modifies the provided buffer in place. If you need to preserve the original buffer, use {slice} instead + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice[Javascript's `Array.splice`] */ function splice(bytes memory buffer, uint256 start) internal pure returns (bytes memory) { return splice(buffer, start, buffer.length); @@ -112,11 +112,11 @@ library Bytes { * `end` argument is truncated to the length of the `buffer`. * * NOTE: This function modifies the provided buffer in place. If you need to preserve the original buffer, use {slice} instead + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice[Javascript's `Array.splice`] */ function splice(bytes memory buffer, uint256 start, uint256 end) internal pure returns (bytes memory) { // sanitize - uint256 length = buffer.length; - end = Math.min(end, length); + end = Math.min(end, buffer.length); start = Math.min(start, end); // allocate and copy diff --git a/contracts/utils/structs/CircularBuffer.sol b/contracts/utils/structs/CircularBuffer.sol index ba50e125a15..30021a3922b 100644 --- a/contracts/utils/structs/CircularBuffer.sol +++ b/contracts/utils/structs/CircularBuffer.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/structs/CircularBuffer.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Math} from "../math/Math.sol"; import {Arrays} from "../Arrays.sol"; diff --git a/contracts/utils/structs/EnumerableMap.sol b/contracts/utils/structs/EnumerableMap.sol index 68ce32230a3..3f2819803ac 100644 --- a/contracts/utils/structs/EnumerableMap.sol +++ b/contracts/utils/structs/EnumerableMap.sol @@ -2,7 +2,7 @@ // OpenZeppelin Contracts (last updated v5.4.0) (utils/structs/EnumerableMap.sol) // This file was procedurally generated from scripts/generate/templates/EnumerableMap.js. -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {EnumerableSet} from "./EnumerableSet.sol"; diff --git a/contracts/utils/structs/EnumerableSet.sol b/contracts/utils/structs/EnumerableSet.sol index fbf742a60e7..fae15074cc6 100644 --- a/contracts/utils/structs/EnumerableSet.sol +++ b/contracts/utils/structs/EnumerableSet.sol @@ -2,7 +2,7 @@ // OpenZeppelin Contracts (last updated v5.4.0) (utils/structs/EnumerableSet.sol) // This file was procedurally generated from scripts/generate/templates/EnumerableSet.js. -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Arrays} from "../Arrays.sol"; import {Math} from "../math/Math.sol"; diff --git a/contracts/utils/structs/Heap.sol b/contracts/utils/structs/Heap.sol index c97bb432a33..377994087aa 100644 --- a/contracts/utils/structs/Heap.sol +++ b/contracts/utils/structs/Heap.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (utils/structs/Heap.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Math} from "../math/Math.sol"; import {SafeCast} from "../math/SafeCast.sol"; diff --git a/contracts/utils/structs/MerkleTree.sol b/contracts/utils/structs/MerkleTree.sol index 010ccfe8b6b..6e4c1248cb4 100644 --- a/contracts/utils/structs/MerkleTree.sol +++ b/contracts/utils/structs/MerkleTree.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.3.0) (utils/structs/MerkleTree.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Hashes} from "../cryptography/Hashes.sol"; import {Arrays} from "../Arrays.sol"; diff --git a/scripts/generate/templates/Arrays.js b/scripts/generate/templates/Arrays.js index 6f9380a4355..ff618025c8f 100644 --- a/scripts/generate/templates/Arrays.js +++ b/scripts/generate/templates/Arrays.js @@ -3,7 +3,7 @@ const { capitalize } = require('../../helpers'); const { TYPES } = require('./Arrays.opts'); const header = `\ -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Comparators} from "./Comparators.sol"; import {SlotDerivation} from "./SlotDerivation.sol"; @@ -359,6 +359,71 @@ function unsafeSetLength(${type.name}[] storage array, uint256 len) internal { } `; +const slice = type => `\ +/** + * @dev Copies the content of \`array\`, from \`start\` (included) to the end of \`array\` into a new ${type.name} array in + * memory. + * + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's \`Array.slice\`] + */ +function slice(${type.name}[] memory array, uint256 start) internal pure returns (${type.name}[] memory) { + return slice(array, start, array.length); +} + +/** + * @dev Copies the content of \`array\`, from \`start\` (included) to \`end\` (excluded) into a new ${type.name} array in + * memory. The \`end\` argument is truncated to the length of the \`array\`. + * + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's \`Array.slice\`] + */ +function slice(${type.name}[] memory array, uint256 start, uint256 end) internal pure returns (${type.name}[] memory) { + // sanitize + end = Math.min(end, array.length); + start = Math.min(start, end); + + // allocate and copy + ${type.name}[] memory result = new ${type.name}[](end - start); + assembly ("memory-safe") { + mcopy(add(result, 0x20), add(add(array, 0x20), mul(start, 0x20)), mul(sub(end, start), 0x20)) + } + + return result; +} +`; + +const splice = type => `\ +/** + * @dev Moves the content of \`array\`, from \`start\` (included) to the end of \`array\` to the start of that array. + * + * NOTE: This function modifies the provided array in place. If you need to preserve the original array, use {slice} instead. + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice[Javascript's \`Array.splice\`] + */ +function splice(${type.name}[] memory array, uint256 start) internal pure returns (${type.name}[] memory) { + return splice(array, start, array.length); +} + +/** + * @dev Moves the content of \`array\`, from \`start\` (included) to \`end\` (excluded) to the start of that array. The + * \`end\` argument is truncated to the length of the \`array\`. + * + * NOTE: This function modifies the provided array in place. If you need to preserve the original array, use {slice} instead. + * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice[Javascript's \`Array.splice\`] + */ +function splice(${type.name}[] memory array, uint256 start, uint256 end) internal pure returns (${type.name}[] memory) { + // sanitize + end = Math.min(end, array.length); + start = Math.min(start, end); + + // move and resize + assembly ("memory-safe") { + mcopy(add(array, 0x20), add(add(array, 0x20), mul(start, 0x20)), mul(sub(end, start), 0x20)) + mstore(array, sub(end, start)) + } + + return array; +} +`; + // GENERATE module.exports = format( header.trimEnd(), @@ -376,6 +441,9 @@ module.exports = format( TYPES.filter(type => type.isValueType && type.name !== 'uint256').map(castComparator), // lookup search, + // slice and splice for value types only + TYPES.filter(type => type.isValueType).map(slice), + TYPES.filter(type => type.isValueType).map(splice), // unsafe (direct) storage and memory access TYPES.map(unsafeAccessStorage), TYPES.map(unsafeAccessMemory), diff --git a/scripts/generate/templates/EnumerableMap.js b/scripts/generate/templates/EnumerableMap.js index f8deb88f85d..a7d061d771a 100644 --- a/scripts/generate/templates/EnumerableMap.js +++ b/scripts/generate/templates/EnumerableMap.js @@ -3,7 +3,7 @@ const { fromBytes32, toBytes32 } = require('./conversion'); const { MAP_TYPES } = require('./Enumerable.opts'); const header = `\ -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {EnumerableSet} from "./EnumerableSet.sol"; diff --git a/scripts/generate/templates/EnumerableSet.js b/scripts/generate/templates/EnumerableSet.js index eb6a0a26c00..f69faea8566 100644 --- a/scripts/generate/templates/EnumerableSet.js +++ b/scripts/generate/templates/EnumerableSet.js @@ -3,7 +3,7 @@ const { fromBytes32, toBytes32 } = require('./conversion'); const { SET_TYPES } = require('./Enumerable.opts'); const header = `\ -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Arrays} from "../Arrays.sol"; import {Math} from "../math/Math.sol"; diff --git a/test/utils/Arrays.t.sol b/test/utils/Arrays.t.sol index e45d29c919d..0daac5e3713 100644 --- a/test/utils/Arrays.t.sol +++ b/test/utils/Arrays.t.sol @@ -1,10 +1,11 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Test} from "forge-std/Test.sol"; import {SymTest} from "halmos-cheatcodes/SymTest.sol"; import {Arrays} from "@openzeppelin/contracts/utils/Arrays.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; contract ArraysTest is Test, SymTest { function testSort(uint256[] memory values) public pure { @@ -21,6 +22,166 @@ contract ArraysTest is Test, SymTest { _assertSort(values); } + /// Slice + + function testSliceAddressWithStartOnly(address[] memory values, uint256 start) public pure { + address[] memory originalValues = _copyArray(values); + address[] memory result = Arrays.slice(values, start); + + // Original buffer was not modified + assertEq(values, originalValues); + + // Result should match originalValues over the specified slice + uint256 expectedLength = Math.saturatingSub(values.length, start); + _assertSliceOf(result, originalValues, start, expectedLength); + } + + function testSliceAddress(address[] memory values, uint256 start, uint256 end) public pure { + address[] memory originalValues = _copyArray(values); + address[] memory result = Arrays.slice(values, start, end); + + // Original buffer was not modified + assertEq(values, originalValues); + + // Calculate expected bounds after sanitization + uint256 sanitizedEnd = Math.min(end, values.length); + uint256 sanitizedStart = Math.min(start, sanitizedEnd); + uint256 expectedLength = sanitizedEnd - sanitizedStart; + _assertSliceOf(result, originalValues, sanitizedStart, expectedLength); + } + + function testSliceBytes32WithStartOnly(bytes32[] memory values, uint256 start) public pure { + bytes32[] memory originalValues = _copyArray(values); + bytes32[] memory result = Arrays.slice(values, start); + + // Original buffer was not modified + assertEq(values, originalValues); + + // Result should match originalValues over the specified slice + uint256 expectedLength = Math.saturatingSub(values.length, start); + _assertSliceOf(result, originalValues, start, expectedLength); + } + + function testSliceBytes32(bytes32[] memory values, uint256 start, uint256 end) public pure { + bytes32[] memory originalValues = _copyArray(values); + bytes32[] memory result = Arrays.slice(values, start, end); + + // Original buffer was not modified + assertEq(values, originalValues); + + // Calculate expected bounds after sanitization + uint256 sanitizedEnd = Math.min(end, values.length); + uint256 sanitizedStart = Math.min(start, sanitizedEnd); + uint256 expectedLength = sanitizedEnd - sanitizedStart; + _assertSliceOf(result, originalValues, sanitizedStart, expectedLength); + } + + function testSliceUint256WithStartOnly(uint256[] memory values, uint256 start) public pure { + uint256[] memory originalValues = _copyArray(values); + uint256[] memory result = Arrays.slice(values, start); + + // Original buffer was not modified + assertEq(values, originalValues); + + // Result should match originalValues over the specified slice + uint256 expectedLength = Math.saturatingSub(values.length, start); + _assertSliceOf(result, originalValues, start, expectedLength); + } + + function testSliceUint256(uint256[] memory values, uint256 start, uint256 end) public pure { + uint256[] memory originalValues = _copyArray(values); + uint256[] memory result = Arrays.slice(values, start, end); + + // Original buffer was not modified + assertEq(values, originalValues); + + // Calculate expected bounds after sanitization + uint256 sanitizedEnd = Math.min(end, values.length); + uint256 sanitizedStart = Math.min(start, sanitizedEnd); + uint256 expectedLength = sanitizedEnd - sanitizedStart; + _assertSliceOf(result, originalValues, sanitizedStart, expectedLength); + } + + /// Splice + + function testSpliceAddressWithStartOnly(address[] memory values, uint256 start) public pure { + address[] memory originalValues = _copyArray(values); + address[] memory result = Arrays.splice(values, start); + + // Result should be the same object as input (modified in place) + assertEq(result, values); + + // Result should match originalValues over the specified slice + uint256 expectedLength = Math.saturatingSub(originalValues.length, start); + _assertSliceOf(result, originalValues, start, expectedLength); + } + + function testSpliceAddress(address[] memory values, uint256 start, uint256 end) public pure { + address[] memory originalValues = _copyArray(values); + address[] memory result = Arrays.splice(values, start, end); + + // Result should be the same object as input (modified in place) + assertEq(result, values); + + // Calculate expected bounds after sanitization + uint256 sanitizedEnd = Math.min(end, originalValues.length); + uint256 sanitizedStart = Math.min(start, sanitizedEnd); + uint256 expectedLength = sanitizedEnd - sanitizedStart; + _assertSliceOf(result, originalValues, sanitizedStart, expectedLength); + } + + function testSpliceBytes32WithStartOnly(bytes32[] memory values, uint256 start) public pure { + bytes32[] memory originalValues = _copyArray(values); + bytes32[] memory result = Arrays.splice(values, start); + + // Result should be the same object as input (modified in place) + assertEq(result, values); + + // Result should match originalValues over the specified slice + uint256 expectedLength = Math.saturatingSub(originalValues.length, start); + _assertSliceOf(result, originalValues, start, expectedLength); + } + + function testSpliceBytes32(bytes32[] memory values, uint256 start, uint256 end) public pure { + bytes32[] memory originalValues = _copyArray(values); + bytes32[] memory result = Arrays.splice(values, start, end); + + // Result should be the same object as input (modified in place) + assertEq(result, values); + + // Calculate expected bounds after sanitization + uint256 sanitizedEnd = Math.min(end, originalValues.length); + uint256 sanitizedStart = Math.min(start, sanitizedEnd); + uint256 expectedLength = sanitizedEnd - sanitizedStart; + _assertSliceOf(result, originalValues, sanitizedStart, expectedLength); + } + + function testSpliceUint256WithStartOnly(uint256[] memory values, uint256 start) public pure { + uint256[] memory originalValues = _copyArray(values); + uint256[] memory result = Arrays.splice(values, start); + + // Result should be the same object as input (modified in place) + assertEq(result, values); + + // Result should match originalValues over the specified slice + uint256 expectedLength = Math.saturatingSub(originalValues.length, start); + _assertSliceOf(result, originalValues, start, expectedLength); + } + + function testSpliceUint256(uint256[] memory values, uint256 start, uint256 end) public pure { + uint256[] memory originalValues = _copyArray(values); + uint256[] memory result = Arrays.splice(values, start, end); + + // Result should be the same object as input (modified in place) + assertEq(result, values); + + // Calculate expected bounds after sanitization + uint256 sanitizedEnd = Math.min(end, originalValues.length); + uint256 sanitizedStart = Math.min(start, sanitizedEnd); + uint256 expectedLength = sanitizedEnd - sanitizedStart; + _assertSliceOf(result, originalValues, sanitizedStart, expectedLength); + } + /// Asserts function _assertSort(uint256[] memory values) internal pure { @@ -28,4 +189,60 @@ contract ArraysTest is Test, SymTest { assertLe(values[i - 1], values[i]); } } + + function _assertSliceOf( + address[] memory result, + address[] memory original, + uint256 offset, + uint256 expectedLength + ) internal pure { + assertEq(result.length, expectedLength); + for (uint256 i = 0; i < expectedLength; ++i) { + assertEq(result[i], original[offset + i]); + } + } + + function _assertSliceOf( + bytes32[] memory result, + bytes32[] memory original, + uint256 offset, + uint256 expectedLength + ) internal pure { + assertEq(result.length, expectedLength); + for (uint256 i = 0; i < expectedLength; ++i) { + assertEq(result[i], original[offset + i]); + } + } + + function _assertSliceOf( + uint256[] memory result, + uint256[] memory original, + uint256 offset, + uint256 expectedLength + ) internal pure { + assertEq(result.length, expectedLength); + for (uint256 i = 0; i < expectedLength; ++i) { + assertEq(result[i], original[offset + i]); + } + } + + /// Helpers + + function _copyArray(uint256[] memory values) internal pure returns (uint256[] memory) { + uint256[] memory copy = new uint256[](values.length); + for (uint256 i = 0; i < values.length; ++i) copy[i] = values[i]; + return copy; + } + + function _copyArray(bytes32[] memory values) internal pure returns (bytes32[] memory) { + bytes32[] memory copy = new bytes32[](values.length); + for (uint256 i = 0; i < values.length; ++i) copy[i] = values[i]; + return copy; + } + + function _copyArray(address[] memory values) internal pure returns (address[] memory) { + address[] memory copy = new address[](values.length); + for (uint256 i = 0; i < values.length; ++i) copy[i] = values[i]; + return copy; + } } diff --git a/test/utils/Arrays.test.js b/test/utils/Arrays.test.js index a4bc9d701f7..c3bee1492c9 100644 --- a/test/utils/Arrays.test.js +++ b/test/utils/Arrays.test.js @@ -98,20 +98,20 @@ describe('Arrays', function () { it('[deprecated] findUpperBound', async function () { // findUpperBound does not support duplicated if (hasDuplicates(array)) { - expect(await this.instance.findUpperBound(input)).to.equal(upperBound(array, input) - 1); + await expect(this.instance.findUpperBound(input)).to.eventually.equal(upperBound(array, input) - 1); } else { - expect(await this.instance.findUpperBound(input)).to.equal(lowerBound(array, input)); + await expect(this.instance.findUpperBound(input)).to.eventually.equal(lowerBound(array, input)); } }); it('lowerBound', async function () { - expect(await this.instance.lowerBound(input)).to.equal(lowerBound(array, input)); - expect(await this.instance.lowerBoundMemory(array, input)).to.equal(lowerBound(array, input)); + await expect(this.instance.lowerBound(input)).to.eventually.equal(lowerBound(array, input)); + await expect(this.instance.lowerBoundMemory(array, input)).to.eventually.equal(lowerBound(array, input)); }); it('upperBound', async function () { - expect(await this.instance.upperBound(input)).to.equal(upperBound(array, input)); - expect(await this.instance.upperBoundMemory(array, input)).to.equal(upperBound(array, input)); + await expect(this.instance.upperBound(input)).to.eventually.equal(upperBound(array, input)); + await expect(this.instance.upperBoundMemory(array, input)).to.eventually.equal(upperBound(array, input)); }); }); } @@ -142,8 +142,8 @@ describe('Arrays', function () { afterEach(async function () { const expected = Array.from(this.array).sort(comparator); const reversed = Array.from(expected).reverse(); - expect(await this.instance.sort(this.array)).to.deep.equal(expected); - expect(await this.instance.sortReverse(this.array)).to.deep.equal(reversed); + await expect(this.instance.sort(this.array)).to.eventually.deep.equal(expected); + await expect(this.instance.sortReverse(this.array)).to.eventually.deep.equal(reversed); }); it('sort array', async function () { @@ -175,13 +175,70 @@ describe('Arrays', function () { }); } }); + + for (const fn of ['slice', 'splice']) { + const array = Array.from({ length: 10 }, generators[name]); + + describe(fn, function () { + const fragment = `$${fn}(${name}[] arr, uint256 start)`; + const rangeFragment = `$${fn}(${name}[] arr, uint256 start, uint256 end)`; + + it(`${fn} from start to end`, async function () { + const start = 2; + const end = 7; + await expect(this.mock[rangeFragment](array, start, end)).to.eventually.deep.equal( + array.slice(start, end), + ); + }); + + it(`${fn} from start to end of array`, async function () { + const start = 3; + await expect(this.mock[fragment](array, start)).to.eventually.deep.equal(array.slice(start)); + }); + + it(`${fn} entire array`, async function () { + await expect(this.mock[fragment](array, 0)).to.eventually.deep.equal(array); + await expect(this.mock[rangeFragment](array, 0, array.length)).to.eventually.deep.equal(array); + }); + + it(`${fn} empty range`, async function () { + await expect(this.mock[rangeFragment](array, 5, 5)).to.eventually.deep.equal([]); + await expect(this.mock[rangeFragment](array, 7, 3)).to.eventually.deep.equal([]); + }); + + it(`${fn} with out of bounds indices`, async function () { + // start beyond array length + await expect(this.mock[fragment](array, array.length + 5)).to.eventually.deep.equal([]); + + // end beyond array length (should be truncated) + const start = 5; + await expect(this.mock[rangeFragment](array, start, array.length + 10)).to.eventually.deep.equal( + array.slice(start), + ); + }); + + it(`${fn} empty array`, async function () { + const emptyArray = []; + await expect(this.mock[fragment](emptyArray, 0)).to.eventually.deep.equal([]); + await expect(this.mock[fragment](emptyArray, 5)).to.eventually.deep.equal([]); + await expect(this.mock[rangeFragment](emptyArray, 0, 5)).to.eventually.deep.equal([]); + }); + + it(`${fn} single element`, async function () { + const singleArray = [array[0]]; + await expect(this.mock[fragment](singleArray, 0)).to.eventually.deep.equal(singleArray); + await expect(this.mock[fragment](singleArray, 1)).to.eventually.deep.equal([]); + await expect(this.mock[rangeFragment](singleArray, 0, 1)).to.eventually.deep.equal(singleArray); + }); + }); + } } describe('unsafeAccess', function () { describe('storage', function () { for (const i in elements) { it(`unsafeAccess within bounds #${i}`, async function () { - expect(await this.instance.unsafeAccess(i)).to.equal(elements[i]); + await expect(this.instance.unsafeAccess(i)).to.eventually.equal(elements[i]); }); } @@ -192,9 +249,9 @@ describe('Arrays', function () { it('unsafeSetLength changes the length or the array', async function () { const newLength = generators.uint256(); - expect(await this.instance.length()).to.equal(elements.length); + await expect(this.instance.length()).to.eventually.equal(elements.length); await expect(this.instance.unsafeSetLength(newLength)).to.not.be.rejected; - expect(await this.instance.length()).to.equal(newLength); + await expect(this.instance.length()).to.eventually.equal(newLength); }); }); @@ -203,7 +260,7 @@ describe('Arrays', function () { for (const i in elements) { it(`unsafeMemoryAccess within bounds #${i}`, async function () { - expect(await this.mock[fragment](elements, i)).to.equal(elements[i]); + await expect(this.mock[fragment](elements, i)).to.eventually.equal(elements[i]); }); } @@ -213,11 +270,11 @@ describe('Arrays', function () { it('unsafeMemoryAccess loop around', async function () { for (let i = 251n; i < 256n; ++i) { - expect(await this.mock[fragment](elements, 2n ** i - 1n)).to.equal( + await expect(this.mock[fragment](elements, 2n ** i - 1n)).to.eventually.equal( isValueType ? BigInt(elements.length) : generators[name].zero, ); - expect(await this.mock[fragment](elements, 2n ** i + 0n)).to.equal(elements[0]); - expect(await this.mock[fragment](elements, 2n ** i + 1n)).to.equal(elements[1]); + await expect(this.mock[fragment](elements, 2n ** i + 0n)).to.eventually.equal(elements[0]); + await expect(this.mock[fragment](elements, 2n ** i + 1n)).to.eventually.equal(elements[1]); } }); }); diff --git a/test/utils/Bytes.t.sol b/test/utils/Bytes.t.sol index e01d933460d..9412ed53c98 100644 --- a/test/utils/Bytes.t.sol +++ b/test/utils/Bytes.t.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Test} from "forge-std/Test.sol"; import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; From 5cc987894a9b69cf05f8a06e201edcd64657e2d0 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Thu, 9 Oct 2025 21:10:34 +0200 Subject: [PATCH 09/17] Refresh pragmas (#5984) Signed-off-by: Hadrien Croubois --- contracts/crosschain/ERC7786Recipient.sol | 2 +- contracts/utils/RLP.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/crosschain/ERC7786Recipient.sol b/contracts/crosschain/ERC7786Recipient.sol index 6353819aae8..f65134aeddd 100644 --- a/contracts/crosschain/ERC7786Recipient.sol +++ b/contracts/crosschain/ERC7786Recipient.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.5.0-rc.0) (crosschain/ERC7786Recipient.sol) -pragma solidity ^0.8.27; +pragma solidity ^0.8.20; import {IERC7786Recipient} from "../interfaces/draft-IERC7786.sol"; import {BitMaps} from "../utils/structs/BitMaps.sol"; diff --git a/contracts/utils/RLP.sol b/contracts/utils/RLP.sol index 84cfd7c1c79..7f6d9f49bdb 100644 --- a/contracts/utils/RLP.sol +++ b/contracts/utils/RLP.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/RLP.sol) -pragma solidity ^0.8.27; +pragma solidity ^0.8.26; import {Math} from "./math/Math.sol"; import {Accumulators} from "./structs/Accumulators.sol"; From 41e30cdee60d34fadbf94f8dc230657f9c11e2c9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 15:13:59 +0200 Subject: [PATCH 10/17] Release v5.5.0 (rc) (#5983) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Hadrien Croubois --- .changeset/pre.json | 1 + CHANGELOG.md | 20 ++++++++++++++++--- .../extensions/AccessControlEnumerable.sol | 2 +- contracts/account/Account.sol | 2 +- .../extensions/draft-AccountERC7579.sol | 2 +- contracts/crosschain/ERC7786Recipient.sol | 2 +- contracts/package.json | 2 +- contracts/token/ERC1155/ERC1155.sol | 2 +- .../ERC1155/extensions/ERC1155Burnable.sol | 2 +- .../ERC1155/extensions/ERC1155Pausable.sol | 2 +- .../ERC1155/extensions/ERC1155Supply.sol | 2 +- contracts/utils/Arrays.sol | 2 +- contracts/utils/Bytes.sol | 2 +- contracts/utils/RLP.sol | 2 +- .../utils/cryptography/SignatureChecker.sol | 2 +- .../verifiers/ERC7913WebAuthnVerifier.sol | 2 +- contracts/utils/structs/CircularBuffer.sol | 2 +- contracts/utils/structs/EnumerableMap.sol | 2 +- contracts/utils/structs/EnumerableSet.sol | 2 +- contracts/utils/structs/Heap.sol | 2 +- contracts/utils/structs/MerkleTree.sol | 2 +- package.json | 2 +- 22 files changed, 38 insertions(+), 23 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 3d761f49c8e..4bfbd6a52a0 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -29,6 +29,7 @@ "shiny-dolphins-lick", "silent-zebras-press", "solid-cobras-talk", + "swift-planets-juggle", "ten-steaks-try", "tender-dolls-nail", "three-parents-argue", diff --git a/CHANGELOG.md b/CHANGELOG.md index 61d337e4096..dee3aa49e04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,28 @@ # Changelog +## 5.5.0-rc.1 (2025-10-09) + +### Bug fixes + +- `AccountERC7579`: Prevent revert in `isModuleInstalled` for fallback modules when `additionalContext` has fewer than 4 bytes. The function now returns `false` instead of reverting, ensuring ERC-7579 compliance. ([#5961](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5961)) + +### Breaking changes + +- `Account`: Add `signature` argument to the internal `_validateUserOp` function for custom signature handling logic. Developers overriding it must now provide the signature from the user operation (i.e. `userOp.signature`) to keep compatibility. ([#5976](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5976)) +- `AccountERC7579`: Installing and uninstalling fallback modules now require the corresponding `initData` and `deInitData` arguments to be at least 4 bytes long (matching the selector to which the fallback module is registered). It now reverts with `ERC7579CannotDecodeFallbackData` instead of treating the missing bytes as `0x00`. ([#5974](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5974)) + +### Changes by category + +#### Utils + +- `Arrays`: Add `slice` and `splice` functions for value types (`uint256[]`, `bytes32[]`, `address[]`). ([#5983](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5983)) + ## 5.5.0-rc.0 (2025-09-26) ### Bug fixes - `ERC165Checker`: Ensure the `supportsERC165` function returns false if the target reverts during the `supportsInterface(0xffffffff)` call. ([#5810](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5880)) -- `AccountERC7579`: Prevent revert in `isModuleInstalled` for fallback modules when `additionalContext` has fewer than 4 bytes. The function now returns `false` instead of reverting, ensuring ERC-7579 compliance. ([#5961](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5961)) ### Breaking changes @@ -14,8 +30,6 @@ - `SignerERC7702` is renamed as `SignerEIP7702`. Imports and inheritance must be updated to that new name and path. Behavior is unmodified. ([#5932](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5932)) - `ERC721Holder`, `ERC1155Holder`, `ReentrancyGuard` and `ReentrancyGuardTransient` are flagged as stateless and are no longer transpiled. Developers using their upgradeable variants from `@openzeppelin/contracts-upgradeable` must update their imports to use the equivalent version available in `@openzeppelin/contracts`. ([#5944](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5944), [#5942](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5942)) - Update minimum pragma to 0.8.24 in `AccessControlEnumerable`, `Arrays`, `CircularBuffer`, `EIP712`, `EnumerableMap`, `EnumerableSet`, `ERC1155`, `ERC1155Burnable`, `ERC1155Pausable`, `ERC1155Supply`, `ERC1155URIStorage`, `ERC20Votes`, `ERC4626`,`ERC721Burnable`, `ERC721Consecutive`, `ERC721Enumerable`, `ERC721Pausable`, `ERC721Royalty`, `ERC721URIStorage`, `ERC721Votes`, `ERC721Wrapper`, `ERC7739`, `Heap`, `MerkleTree`, `MessageHashUtils`, `Strings`, `Votes` and `VotesExtended`. ([#5723](https://github.com/OpenZeppelin/openzeppelin-contracts/issues/5723), [#5726](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5726), [#5965](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5965)) -- `Account`: Add `signature` argument to the internal `_validateUserOp` function for custom signature handling logic. Developers overriding it must now provide the signature from the user operation (i.e. `userOp.signature`) to keep compatibility. ([#5976](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5976)) -- `AccountERC7579`: Installing and uninstalling fallback modules now require the corresponding `initData` and `deInitData` arguments to be at least 4 bytes long (matching the selector to which the fallback module is registered). It now reverts with `ERC7579CannotDecodeFallbackData` instead of treating the missing bytes as `0x00`. ([#5974](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5974)) ### Deprecation diff --git a/contracts/access/extensions/AccessControlEnumerable.sol b/contracts/access/extensions/AccessControlEnumerable.sol index caf50a32923..feab7bff860 100644 --- a/contracts/access/extensions/AccessControlEnumerable.sol +++ b/contracts/access/extensions/AccessControlEnumerable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (access/extensions/AccessControlEnumerable.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (access/extensions/AccessControlEnumerable.sol) pragma solidity ^0.8.24; diff --git a/contracts/account/Account.sol b/contracts/account/Account.sol index 743cf2a135b..2175616c788 100644 --- a/contracts/account/Account.sol +++ b/contracts/account/Account.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (account/Account.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (account/Account.sol) pragma solidity ^0.8.20; diff --git a/contracts/account/extensions/draft-AccountERC7579.sol b/contracts/account/extensions/draft-AccountERC7579.sol index 134bc92bd80..152f7364b27 100644 --- a/contracts/account/extensions/draft-AccountERC7579.sol +++ b/contracts/account/extensions/draft-AccountERC7579.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (account/extensions/draft-AccountERC7579.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (account/extensions/draft-AccountERC7579.sol) pragma solidity ^0.8.26; diff --git a/contracts/crosschain/ERC7786Recipient.sol b/contracts/crosschain/ERC7786Recipient.sol index f65134aeddd..ec64df9f622 100644 --- a/contracts/crosschain/ERC7786Recipient.sol +++ b/contracts/crosschain/ERC7786Recipient.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (crosschain/ERC7786Recipient.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (crosschain/ERC7786Recipient.sol) pragma solidity ^0.8.20; diff --git a/contracts/package.json b/contracts/package.json index aab10f04f19..c12011a4502 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -1,7 +1,7 @@ { "name": "@openzeppelin/contracts", "description": "Secure Smart Contract library for Solidity", - "version": "5.5.0-rc.0", + "version": "5.5.0-rc.1", "files": [ "**/*.sol", "/build/contracts/*.json", diff --git a/contracts/token/ERC1155/ERC1155.sol b/contracts/token/ERC1155/ERC1155.sol index f5f01c51001..2bc44d219b9 100644 --- a/contracts/token/ERC1155/ERC1155.sol +++ b/contracts/token/ERC1155/ERC1155.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC1155/ERC1155.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (token/ERC1155/ERC1155.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC1155/extensions/ERC1155Burnable.sol b/contracts/token/ERC1155/extensions/ERC1155Burnable.sol index b355804fb58..02b8b9a12ce 100644 --- a/contracts/token/ERC1155/extensions/ERC1155Burnable.sol +++ b/contracts/token/ERC1155/extensions/ERC1155Burnable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC1155/extensions/ERC1155Burnable.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (token/ERC1155/extensions/ERC1155Burnable.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC1155/extensions/ERC1155Pausable.sol b/contracts/token/ERC1155/extensions/ERC1155Pausable.sol index 240413411cc..d9a22af6e42 100644 --- a/contracts/token/ERC1155/extensions/ERC1155Pausable.sol +++ b/contracts/token/ERC1155/extensions/ERC1155Pausable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC1155/extensions/ERC1155Pausable.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (token/ERC1155/extensions/ERC1155Pausable.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC1155/extensions/ERC1155Supply.sol b/contracts/token/ERC1155/extensions/ERC1155Supply.sol index 55fe9c78a17..c0209c55807 100644 --- a/contracts/token/ERC1155/extensions/ERC1155Supply.sol +++ b/contracts/token/ERC1155/extensions/ERC1155Supply.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC1155/extensions/ERC1155Supply.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (token/ERC1155/extensions/ERC1155Supply.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/Arrays.sol b/contracts/utils/Arrays.sol index e8ea749fb61..14c18c03afa 100644 --- a/contracts/utils/Arrays.sol +++ b/contracts/utils/Arrays.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/Arrays.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/Arrays.sol) // This file was procedurally generated from scripts/generate/templates/Arrays.js. pragma solidity ^0.8.24; diff --git a/contracts/utils/Bytes.sol b/contracts/utils/Bytes.sol index f1781214372..72d3d7fa759 100644 --- a/contracts/utils/Bytes.sol +++ b/contracts/utils/Bytes.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Bytes.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/Bytes.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/RLP.sol b/contracts/utils/RLP.sol index 7f6d9f49bdb..bfb300ec645 100644 --- a/contracts/utils/RLP.sol +++ b/contracts/utils/RLP.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/RLP.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/RLP.sol) pragma solidity ^0.8.26; import {Math} from "./math/Math.sol"; diff --git a/contracts/utils/cryptography/SignatureChecker.sol b/contracts/utils/cryptography/SignatureChecker.sol index b65b37ea970..f5197af9c05 100644 --- a/contracts/utils/cryptography/SignatureChecker.sol +++ b/contracts/utils/cryptography/SignatureChecker.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/SignatureChecker.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/cryptography/SignatureChecker.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol b/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol index b5b68ba44e0..e24a13155ae 100644 --- a/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol +++ b/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/structs/CircularBuffer.sol b/contracts/utils/structs/CircularBuffer.sol index 30021a3922b..e178df4f348 100644 --- a/contracts/utils/structs/CircularBuffer.sol +++ b/contracts/utils/structs/CircularBuffer.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/structs/CircularBuffer.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/structs/CircularBuffer.sol) pragma solidity ^0.8.24; import {Math} from "../math/Math.sol"; diff --git a/contracts/utils/structs/EnumerableMap.sol b/contracts/utils/structs/EnumerableMap.sol index 3f2819803ac..e799bb2f83a 100644 --- a/contracts/utils/structs/EnumerableMap.sol +++ b/contracts/utils/structs/EnumerableMap.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/structs/EnumerableMap.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/structs/EnumerableMap.sol) // This file was procedurally generated from scripts/generate/templates/EnumerableMap.js. pragma solidity ^0.8.24; diff --git a/contracts/utils/structs/EnumerableSet.sol b/contracts/utils/structs/EnumerableSet.sol index fae15074cc6..1cd645ae221 100644 --- a/contracts/utils/structs/EnumerableSet.sol +++ b/contracts/utils/structs/EnumerableSet.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.4.0) (utils/structs/EnumerableSet.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/structs/EnumerableSet.sol) // This file was procedurally generated from scripts/generate/templates/EnumerableSet.js. pragma solidity ^0.8.24; diff --git a/contracts/utils/structs/Heap.sol b/contracts/utils/structs/Heap.sol index 377994087aa..530821b0616 100644 --- a/contracts/utils/structs/Heap.sol +++ b/contracts/utils/structs/Heap.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.1.0) (utils/structs/Heap.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/structs/Heap.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/structs/MerkleTree.sol b/contracts/utils/structs/MerkleTree.sol index 6e4c1248cb4..553d5a8dd69 100644 --- a/contracts/utils/structs/MerkleTree.sol +++ b/contracts/utils/structs/MerkleTree.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.3.0) (utils/structs/MerkleTree.sol) +// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/structs/MerkleTree.sol) pragma solidity ^0.8.24; diff --git a/package.json b/package.json index be7f38a17ac..83fa262bcba 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "openzeppelin-solidity", "description": "Secure Smart Contract library for Solidity", - "version": "5.5.0-rc.0", + "version": "5.5.0-rc.1", "private": true, "files": [ "/contracts/**/*.sol", From f1081f922ac08dda41c598ae230f3ca3c9d50f9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20Garc=C3=ADa?= Date: Mon, 13 Oct 2025 09:02:02 -0600 Subject: [PATCH 11/17] Clarify how ECDSA signatures are parsed (#5990) --- contracts/utils/cryptography/ECDSA.sol | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/contracts/utils/cryptography/ECDSA.sol b/contracts/utils/cryptography/ECDSA.sol index 94fee3abc5c..ff8e2171cef 100644 --- a/contracts/utils/cryptography/ECDSA.sol +++ b/contracts/utils/cryptography/ECDSA.sol @@ -207,7 +207,12 @@ library ECDSA { /** * @dev Parse a signature into its `v`, `r` and `s` components. Supports 65-byte and 64-byte (ERC-2098) - * formats. Returns (0,0,0) for invalid signatures. Consider skipping {tryRecover} or {recover} if so. + * formats. Returns (0,0,0) for invalid signatures. + * + * For 64-byte signatures, `v` is automatically normalized to 27 or 28. + * For 65-byte signatures, `v` is returned as-is and MUST already be 27 or 28 for use with ecrecover. + * + * Consider validating the result before use, or use {tryRecover}/{recover} which perform full validation. */ function parse(bytes memory signature) internal pure returns (uint8 v, bytes32 r, bytes32 s) { assembly ("memory-safe") { From f2f7b1938dda07fbe03d59e11f6174b46eefb158 Mon Sep 17 00:00:00 2001 From: James Toussaint <33313130+james-toussaint@users.noreply.github.com> Date: Thu, 30 Oct 2025 08:27:28 +0100 Subject: [PATCH 12/17] Fix release tag commit (#6021) --- scripts/release/workflow/github-release.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release/workflow/github-release.js b/scripts/release/workflow/github-release.js index f213106b8a8..6d85a4a2611 100644 --- a/scripts/release/workflow/github-release.js +++ b/scripts/release/workflow/github-release.js @@ -9,7 +9,7 @@ module.exports = async ({ github, context }) => { owner: context.repo.owner, repo: context.repo.repo, tag_name: `v${version}`, - target_commitish: github.ref_name, + target_commitish: context.sha, body: extractSection(changelog, version), prerelease: process.env.PRERELEASE === 'true', }); From 08b9f7c22c858aff77bddd8da0b201aa41bd7661 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 14:26:58 +0000 Subject: [PATCH 13/17] Exit release candidate --- .changeset/pre.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 4bfbd6a52a0..d5624d5da9c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,5 +1,5 @@ { - "mode": "pre", + "mode": "exit", "tag": "rc", "initialVersions": { "openzeppelin-solidity": "5.4.0" From fcbae5394ae8ad52d8e580a3477db99814b9d565 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 08:41:55 -0600 Subject: [PATCH 14/17] Release v5.5.0 (#6033) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ernesto García Co-authored-by: Hadrien Croubois --- .changeset/afraid-chicken-attack.md | 5 --- .changeset/all-geese-stand.md | 5 --- .changeset/angry-waves-film.md | 5 --- .changeset/clear-tools-refuse.md | 5 --- .changeset/dull-students-eat.md | 5 --- .changeset/eight-radios-check.md | 5 --- .changeset/fast-beans-pull.md | 5 --- .changeset/funny-donuts-follow.md | 5 --- .changeset/itchy-turkeys-allow.md | 5 --- .changeset/loose-lamps-bake.md | 5 --- .changeset/major-feet-write.md | 5 --- .changeset/modern-moments-raise.md | 5 --- .changeset/new-days-tease.md | 5 --- .changeset/old-memes-dress.md | 5 --- .changeset/petite-seas-shake.md | 5 --- .changeset/plain-times-itch.md | 5 --- .changeset/pre.json | 43 ------------------- .changeset/public-crabs-heal.md | 5 --- .changeset/quick-pianos-press.md | 5 --- .changeset/rich-cows-repair.md | 5 --- .changeset/ripe-bears-hide.md | 5 --- .changeset/sharp-scissors-drum.md | 5 --- .changeset/shiny-dolphins-lick.md | 5 --- .changeset/silent-zebras-press.md | 5 --- .changeset/solid-cobras-talk.md | 5 --- .changeset/swift-planets-juggle.md | 5 --- .changeset/ten-steaks-try.md | 5 --- .changeset/tender-dolls-nail.md | 5 --- .changeset/three-parents-argue.md | 5 --- .changeset/violet-turtles-like.md | 5 --- .changeset/whole-cats-find.md | 5 --- .changeset/whole-plums-speak.md | 5 --- .changeset/wild-baths-buy.md | 5 --- .changeset/wise-webs-fly.md | 5 --- .changeset/witty-hats-flow.md | 5 --- CHANGELOG.md | 20 ++------- .../AccessControlDefaultAdminRules.sol | 2 +- .../extensions/AccessControlEnumerable.sol | 2 +- .../IAccessControlDefaultAdminRules.sol | 2 +- contracts/access/manager/AccessManager.sol | 2 +- contracts/access/manager/IAccessManager.sol | 2 +- contracts/account/Account.sol | 2 +- .../extensions/draft-AccountERC7579.sol | 2 +- .../account/extensions/draft-ERC7821.sol | 2 +- contracts/account/utils/EIP7702Utils.sol | 2 +- .../account/utils/draft-ERC7579Utils.sol | 2 +- contracts/crosschain/ERC7786Recipient.sol | 2 +- contracts/finance/VestingWallet.sol | 2 +- contracts/governance/Governor.sol | 2 +- contracts/governance/IGovernor.sol | 2 +- contracts/governance/TimelockController.sol | 2 +- .../extensions/GovernorProposalGuardian.sol | 2 +- .../governance/extensions/GovernorStorage.sol | 2 +- .../extensions/GovernorSuperQuorum.sol | 2 +- .../extensions/GovernorTimelockCompound.sol | 2 +- .../extensions/GovernorTimelockControl.sol | 2 +- .../GovernorVotesQuorumFraction.sol | 2 +- .../GovernorVotesSuperQuorumFraction.sol | 2 +- contracts/governance/utils/IVotes.sol | 2 +- contracts/governance/utils/Votes.sol | 2 +- contracts/governance/utils/VotesExtended.sol | 2 +- contracts/interfaces/IERC3156FlashLender.sol | 2 +- contracts/interfaces/IERC4626.sol | 2 +- contracts/interfaces/IERC6909.sol | 2 +- contracts/interfaces/IERC7751.sol | 2 +- contracts/interfaces/draft-IERC6093.sol | 2 +- contracts/interfaces/draft-IERC7579.sol | 2 +- contracts/interfaces/draft-IERC7786.sol | 2 +- contracts/interfaces/draft-IERC7802.sol | 2 +- contracts/metatx/ERC2771Context.sol | 2 +- contracts/metatx/ERC2771Forwarder.sol | 2 +- contracts/package.json | 2 +- contracts/proxy/Clones.sol | 2 +- contracts/proxy/Proxy.sol | 2 +- .../TransparentUpgradeableProxy.sol | 2 +- contracts/proxy/utils/UUPSUpgradeable.sol | 2 +- contracts/token/ERC1155/ERC1155.sol | 2 +- .../ERC1155/extensions/ERC1155Burnable.sol | 2 +- .../ERC1155/extensions/ERC1155Pausable.sol | 2 +- .../ERC1155/extensions/ERC1155Supply.sol | 2 +- .../ERC1155/extensions/ERC1155URIStorage.sol | 2 +- .../token/ERC1155/utils/ERC1155Holder.sol | 2 +- contracts/token/ERC20/ERC20.sol | 2 +- .../token/ERC20/extensions/ERC20Permit.sol | 2 +- .../token/ERC20/extensions/ERC20Votes.sol | 2 +- contracts/token/ERC20/extensions/ERC4626.sol | 2 +- .../token/ERC20/extensions/IERC20Permit.sol | 2 +- contracts/token/ERC20/utils/SafeERC20.sol | 2 +- contracts/token/ERC6909/ERC6909.sol | 2 +- .../ERC6909/extensions/ERC6909ContentURI.sol | 2 +- .../ERC6909/extensions/ERC6909Metadata.sol | 2 +- .../ERC6909/extensions/ERC6909TokenSupply.sol | 2 +- contracts/token/ERC721/ERC721.sol | 2 +- .../ERC721/extensions/ERC721Burnable.sol | 2 +- .../ERC721/extensions/ERC721Consecutive.sol | 2 +- .../ERC721/extensions/ERC721Enumerable.sol | 2 +- .../ERC721/extensions/ERC721Pausable.sol | 2 +- .../token/ERC721/extensions/ERC721Royalty.sol | 2 +- .../ERC721/extensions/ERC721URIStorage.sol | 2 +- .../token/ERC721/extensions/ERC721Votes.sol | 2 +- .../token/ERC721/extensions/ERC721Wrapper.sol | 2 +- contracts/token/ERC721/utils/ERC721Holder.sol | 2 +- contracts/token/ERC721/utils/ERC721Utils.sol | 2 +- contracts/utils/Address.sol | 2 +- contracts/utils/Arrays.sol | 2 +- contracts/utils/Base58.sol | 2 +- contracts/utils/Base64.sol | 2 +- contracts/utils/Blockhash.sol | 2 +- contracts/utils/Bytes.sol | 2 +- contracts/utils/Create2.sol | 2 +- contracts/utils/LowLevelCall.sol | 2 +- contracts/utils/Memory.sol | 2 +- contracts/utils/Multicall.sol | 2 +- contracts/utils/RLP.sol | 3 +- contracts/utils/ReentrancyGuard.sol | 2 +- contracts/utils/ReentrancyGuardTransient.sol | 2 +- contracts/utils/RelayedCall.sol | 2 +- contracts/utils/ShortStrings.sol | 2 +- contracts/utils/SlotDerivation.sol | 2 +- contracts/utils/Strings.sol | 2 +- contracts/utils/cryptography/ECDSA.sol | 2 +- contracts/utils/cryptography/EIP712.sol | 2 +- .../utils/cryptography/MessageHashUtils.sol | 2 +- .../utils/cryptography/SignatureChecker.sol | 2 +- contracts/utils/cryptography/WebAuthn.sol | 2 +- .../utils/cryptography/draft-ERC7739Utils.sol | 2 +- .../cryptography/signers/SignerEIP7702.sol | 2 +- .../cryptography/signers/SignerWebAuthn.sol | 2 +- .../cryptography/signers/draft-ERC7739.sol | 2 +- .../verifiers/ERC7913P256Verifier.sol | 2 +- .../verifiers/ERC7913RSAVerifier.sol | 2 +- .../verifiers/ERC7913WebAuthnVerifier.sol | 2 +- .../utils/draft-InteroperableAddress.sol | 2 +- .../utils/introspection/ERC165Checker.sol | 2 +- contracts/utils/math/Math.sol | 2 +- contracts/utils/structs/Accumulators.sol | 2 +- contracts/utils/structs/Checkpoints.sol | 2 +- contracts/utils/structs/CircularBuffer.sol | 3 +- contracts/utils/structs/EnumerableMap.sol | 2 +- contracts/utils/structs/EnumerableSet.sol | 2 +- contracts/utils/structs/Heap.sol | 2 +- contracts/utils/structs/MerkleTree.sol | 2 +- contracts/utils/types/Time.sol | 2 +- docs/antora.yml | 4 +- package.json | 2 +- 145 files changed, 115 insertions(+), 340 deletions(-) delete mode 100644 .changeset/afraid-chicken-attack.md delete mode 100644 .changeset/all-geese-stand.md delete mode 100644 .changeset/angry-waves-film.md delete mode 100644 .changeset/clear-tools-refuse.md delete mode 100644 .changeset/dull-students-eat.md delete mode 100644 .changeset/eight-radios-check.md delete mode 100644 .changeset/fast-beans-pull.md delete mode 100644 .changeset/funny-donuts-follow.md delete mode 100644 .changeset/itchy-turkeys-allow.md delete mode 100644 .changeset/loose-lamps-bake.md delete mode 100644 .changeset/major-feet-write.md delete mode 100644 .changeset/modern-moments-raise.md delete mode 100644 .changeset/new-days-tease.md delete mode 100644 .changeset/old-memes-dress.md delete mode 100644 .changeset/petite-seas-shake.md delete mode 100644 .changeset/plain-times-itch.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/public-crabs-heal.md delete mode 100644 .changeset/quick-pianos-press.md delete mode 100644 .changeset/rich-cows-repair.md delete mode 100644 .changeset/ripe-bears-hide.md delete mode 100644 .changeset/sharp-scissors-drum.md delete mode 100644 .changeset/shiny-dolphins-lick.md delete mode 100644 .changeset/silent-zebras-press.md delete mode 100644 .changeset/solid-cobras-talk.md delete mode 100644 .changeset/swift-planets-juggle.md delete mode 100644 .changeset/ten-steaks-try.md delete mode 100644 .changeset/tender-dolls-nail.md delete mode 100644 .changeset/three-parents-argue.md delete mode 100644 .changeset/violet-turtles-like.md delete mode 100644 .changeset/whole-cats-find.md delete mode 100644 .changeset/whole-plums-speak.md delete mode 100644 .changeset/wild-baths-buy.md delete mode 100644 .changeset/wise-webs-fly.md delete mode 100644 .changeset/witty-hats-flow.md diff --git a/.changeset/afraid-chicken-attack.md b/.changeset/afraid-chicken-attack.md deleted file mode 100644 index 9baefdc2ca7..00000000000 --- a/.changeset/afraid-chicken-attack.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Bytes`: Add `splice(bytes,uint256)` and `splice(bytes,uint256,uint256)` functions that move a specified range of bytes to the start of the buffer and truncate it in place, as an alternative to `slice`. diff --git a/.changeset/all-geese-stand.md b/.changeset/all-geese-stand.md deleted file mode 100644 index 44e6f256365..00000000000 --- a/.changeset/all-geese-stand.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': patch ---- - -Add constructors to the different signers. diff --git a/.changeset/angry-waves-film.md b/.changeset/angry-waves-film.md deleted file mode 100644 index aa316f9551e..00000000000 --- a/.changeset/angry-waves-film.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`WebAuthn`: Add a library for verifying WebAuthn Authentication Assertions. diff --git a/.changeset/clear-tools-refuse.md b/.changeset/clear-tools-refuse.md deleted file mode 100644 index 96e838e6c98..00000000000 --- a/.changeset/clear-tools-refuse.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`RelayedCall`: Add a library to perform indirect calls through minimal and predictable relayers. diff --git a/.changeset/dull-students-eat.md b/.changeset/dull-students-eat.md deleted file mode 100644 index 94c4fc21ef2..00000000000 --- a/.changeset/dull-students-eat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Memory`: Add library with utilities to manipulate memory diff --git a/.changeset/eight-radios-check.md b/.changeset/eight-radios-check.md deleted file mode 100644 index 431c7fcb115..00000000000 --- a/.changeset/eight-radios-check.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Checkpoints`: Add a new checkpoint variant `Checkpoint256` using `uint256` type for the value and key. diff --git a/.changeset/fast-beans-pull.md b/.changeset/fast-beans-pull.md deleted file mode 100644 index df80408d25b..00000000000 --- a/.changeset/fast-beans-pull.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Bytes`: Add a `clz` function to count the leading zero bits in a `bytes` buffer. diff --git a/.changeset/funny-donuts-follow.md b/.changeset/funny-donuts-follow.md deleted file mode 100644 index 01c19a901db..00000000000 --- a/.changeset/funny-donuts-follow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`IERC7751`: Add the interface for custom error wrapping of bubbled up reverts. diff --git a/.changeset/itchy-turkeys-allow.md b/.changeset/itchy-turkeys-allow.md deleted file mode 100644 index caab673c15c..00000000000 --- a/.changeset/itchy-turkeys-allow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`RLP`: Add a library for encoding and decoding data in Ethereum's Recursive Length Prefix format. diff --git a/.changeset/loose-lamps-bake.md b/.changeset/loose-lamps-bake.md deleted file mode 100644 index bc4703817ae..00000000000 --- a/.changeset/loose-lamps-bake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Base58`: Add a library for encoding and decoding bytes buffers into base58 strings. diff --git a/.changeset/major-feet-write.md b/.changeset/major-feet-write.md deleted file mode 100644 index ebae3abef8f..00000000000 --- a/.changeset/major-feet-write.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Bytes`: Add `reverseBytes32`, `reverseBytes16`, `reverseBytes8`, `reverseBytes4`, and `reverseBytes2` functions to reverse byte order for converting between little-endian and big-endian representations. diff --git a/.changeset/modern-moments-raise.md b/.changeset/modern-moments-raise.md deleted file mode 100644 index 3e7f91c5390..00000000000 --- a/.changeset/modern-moments-raise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Memory`: Add a UDVT for handling slices on memory space similarly to calldata slices. diff --git a/.changeset/new-days-tease.md b/.changeset/new-days-tease.md deleted file mode 100644 index b8d1da7cdd4..00000000000 --- a/.changeset/new-days-tease.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Strings`: Add `toHexString(bytes)`. diff --git a/.changeset/old-memes-dress.md b/.changeset/old-memes-dress.md deleted file mode 100644 index b022bdf7bfc..00000000000 --- a/.changeset/old-memes-dress.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Bytes`: Add `concat` that merges a `bytes[]` array of buffers into a single `bytes` buffer. diff --git a/.changeset/petite-seas-shake.md b/.changeset/petite-seas-shake.md deleted file mode 100644 index d3db0a3273b..00000000000 --- a/.changeset/petite-seas-shake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`SignerWebAuthn`: Add an abstract signer that verifies WebAuthn signatures, with a P256 fallback. diff --git a/.changeset/plain-times-itch.md b/.changeset/plain-times-itch.md deleted file mode 100644 index 2fc84ffbe5e..00000000000 --- a/.changeset/plain-times-itch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`ECDSA`: Add `parse` and `parseCalldata` to parse bytes signatures of length 65 or 64 (erc-2098) into its v,r,s components. diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index d5624d5da9c..00000000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "mode": "exit", - "tag": "rc", - "initialVersions": { - "openzeppelin-solidity": "5.4.0" - }, - "changesets": [ - "afraid-chicken-attack", - "all-geese-stand", - "angry-waves-film", - "clear-tools-refuse", - "dull-students-eat", - "eight-radios-check", - "fast-beans-pull", - "funny-donuts-follow", - "itchy-turkeys-allow", - "loose-lamps-bake", - "major-feet-write", - "modern-moments-raise", - "new-days-tease", - "old-memes-dress", - "petite-seas-shake", - "plain-times-itch", - "public-crabs-heal", - "quick-pianos-press", - "rich-cows-repair", - "ripe-bears-hide", - "sharp-scissors-drum", - "shiny-dolphins-lick", - "silent-zebras-press", - "solid-cobras-talk", - "swift-planets-juggle", - "ten-steaks-try", - "tender-dolls-nail", - "three-parents-argue", - "violet-turtles-like", - "whole-cats-find", - "whole-plums-speak", - "wild-baths-buy", - "wise-webs-fly", - "witty-hats-flow" - ] -} diff --git a/.changeset/public-crabs-heal.md b/.changeset/public-crabs-heal.md deleted file mode 100644 index 463dc988731..00000000000 --- a/.changeset/public-crabs-heal.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`MultiSignerERC7913Weighted`: Extension of `MultiSignerERC7913` that supports assigning different weights to each signer, enabling more flexible governance schemes. diff --git a/.changeset/quick-pianos-press.md b/.changeset/quick-pianos-press.md deleted file mode 100644 index e9eae71946c..00000000000 --- a/.changeset/quick-pianos-press.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`ReentrancyGuard` and `ReentrancyGuardTransient`: Add `nonReentrantView`, a read-only version of the `nonReentrant` modifier. diff --git a/.changeset/rich-cows-repair.md b/.changeset/rich-cows-repair.md deleted file mode 100644 index 013f6529f88..00000000000 --- a/.changeset/rich-cows-repair.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`InteroperableAddress`: Add a library for formatting and parsing ERC-7930 interoperable addresses. diff --git a/.changeset/ripe-bears-hide.md b/.changeset/ripe-bears-hide.md deleted file mode 100644 index 7fa165492c5..00000000000 --- a/.changeset/ripe-bears-hide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`ERC20Bridgeable`: Implementation of ERC-7802 that makes an ERC-20 compatible with crosschain bridges. diff --git a/.changeset/sharp-scissors-drum.md b/.changeset/sharp-scissors-drum.md deleted file mode 100644 index b701eccf3fa..00000000000 --- a/.changeset/sharp-scissors-drum.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`LowLevelCall`: Add a library to perform low-level calls and deal with the `returndata` more granularly. diff --git a/.changeset/shiny-dolphins-lick.md b/.changeset/shiny-dolphins-lick.md deleted file mode 100644 index 508e7f4304c..00000000000 --- a/.changeset/shiny-dolphins-lick.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`ERC4626`: compute `maxWithdraw` using `maxRedeem` and `previewRedeem` so that changes to the preview functions affect the max functions. diff --git a/.changeset/silent-zebras-press.md b/.changeset/silent-zebras-press.md deleted file mode 100644 index 18db1470ef9..00000000000 --- a/.changeset/silent-zebras-press.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`ERC7786Recipient`: Generic ERC-7786 cross-chain message recipient contract. diff --git a/.changeset/solid-cobras-talk.md b/.changeset/solid-cobras-talk.md deleted file mode 100644 index 8d79402566c..00000000000 --- a/.changeset/solid-cobras-talk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Base64`: Add a new `decode` function that parses base64 encoded strings. diff --git a/.changeset/swift-planets-juggle.md b/.changeset/swift-planets-juggle.md deleted file mode 100644 index 526a0b709ad..00000000000 --- a/.changeset/swift-planets-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Arrays`: Add `slice` and `splice` functions for value types (`uint256[]`, `bytes32[]`, `address[]`). diff --git a/.changeset/ten-steaks-try.md b/.changeset/ten-steaks-try.md deleted file mode 100644 index a734f5fdb45..00000000000 --- a/.changeset/ten-steaks-try.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Bytes`: Add an `equal` function to compare byte buffers. diff --git a/.changeset/tender-dolls-nail.md b/.changeset/tender-dolls-nail.md deleted file mode 100644 index 328ae8fb304..00000000000 --- a/.changeset/tender-dolls-nail.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`ERC7913WebAuthnVerifier`: Add an ERC-7913 verifier that verifies WebAuthn Authentication Assertions for P256 identities. diff --git a/.changeset/three-parents-argue.md b/.changeset/three-parents-argue.md deleted file mode 100644 index b4986fc6a21..00000000000 --- a/.changeset/three-parents-argue.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': patch ---- - -`ReentrancyGuard`, `ReentrancyGuardTransient`: Add an internal `_reentrancyGuardStorageSlot` function allowing slot customization via override. diff --git a/.changeset/violet-turtles-like.md b/.changeset/violet-turtles-like.md deleted file mode 100644 index 493f0629de5..00000000000 --- a/.changeset/violet-turtles-like.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`ECDSA`: Add `recoverCalldata` and `tryRecoverCalldata`, variants of `recover` and `tryRecover` that are more efficient when signatures are in calldata. diff --git a/.changeset/whole-cats-find.md b/.changeset/whole-cats-find.md deleted file mode 100644 index cdc0b75ca72..00000000000 --- a/.changeset/whole-cats-find.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Math`: Add a `clz` function to count the leading zero bits in a `uint256` value. diff --git a/.changeset/whole-plums-speak.md b/.changeset/whole-plums-speak.md deleted file mode 100644 index c58d9f8f064..00000000000 --- a/.changeset/whole-plums-speak.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`SignatureChecker`: Add `isValidSignatureNowCalldata(address,bytes32,bytes calldata)` for efficient processing of calldata signatures. diff --git a/.changeset/wild-baths-buy.md b/.changeset/wild-baths-buy.md deleted file mode 100644 index e2d978fa1ba..00000000000 --- a/.changeset/wild-baths-buy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`IERC7786`: Add the (draft) interface for ERC-7786 "Cross-Chain Messaging Gateway" diff --git a/.changeset/wise-webs-fly.md b/.changeset/wise-webs-fly.md deleted file mode 100644 index 5fe2c548c6f..00000000000 --- a/.changeset/wise-webs-fly.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Accumulators`: A library for merging an arbitrary dynamic number of bytes buffers. diff --git a/.changeset/witty-hats-flow.md b/.changeset/witty-hats-flow.md deleted file mode 100644 index 757b8af24de..00000000000 --- a/.changeset/witty-hats-flow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': patch ---- - -`Bytes`: Fix `lastIndexOf(bytes,byte,uint256)` with empty buffers and finite position to correctly return `type(uint256).max` instead of accessing uninitialized memory sections. diff --git a/CHANGELOG.md b/CHANGELOG.md index dee3aa49e04..981382196af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,31 +1,16 @@ # Changelog - -## 5.5.0-rc.1 (2025-10-09) +## 5.5.0 (2025-10-31) ### Bug fixes - `AccountERC7579`: Prevent revert in `isModuleInstalled` for fallback modules when `additionalContext` has fewer than 4 bytes. The function now returns `false` instead of reverting, ensuring ERC-7579 compliance. ([#5961](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5961)) +- `ERC165Checker`: Ensure the `supportsERC165` function returns false if the target reverts during the `supportsInterface(0xffffffff)` call. ([#5810](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5880)) ### Breaking changes - `Account`: Add `signature` argument to the internal `_validateUserOp` function for custom signature handling logic. Developers overriding it must now provide the signature from the user operation (i.e. `userOp.signature`) to keep compatibility. ([#5976](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5976)) - `AccountERC7579`: Installing and uninstalling fallback modules now require the corresponding `initData` and `deInitData` arguments to be at least 4 bytes long (matching the selector to which the fallback module is registered). It now reverts with `ERC7579CannotDecodeFallbackData` instead of treating the missing bytes as `0x00`. ([#5974](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5974)) - -### Changes by category - -#### Utils - -- `Arrays`: Add `slice` and `splice` functions for value types (`uint256[]`, `bytes32[]`, `address[]`). ([#5983](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5983)) - -## 5.5.0-rc.0 (2025-09-26) - -### Bug fixes - -- `ERC165Checker`: Ensure the `supportsERC165` function returns false if the target reverts during the `supportsInterface(0xffffffff)` call. ([#5810](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5880)) - -### Breaking changes - - `ERC6909` and its extensions (`ERC6909ContentURI`, `ERC6909Metadata` and `ERC6909TokenSupply`) are no longer marked as draft since [EIP-6909](https://eips.ethereum.org/EIPS/eip-6909) is now final. Developers must update the import paths. Contracts behavior is not modified. ([#5929](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5929)) - `SignerERC7702` is renamed as `SignerEIP7702`. Imports and inheritance must be updated to that new name and path. Behavior is unmodified. ([#5932](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5932)) - `ERC721Holder`, `ERC1155Holder`, `ReentrancyGuard` and `ReentrancyGuardTransient` are flagged as stateless and are no longer transpiled. Developers using their upgradeable variants from `@openzeppelin/contracts-upgradeable` must update their imports to use the equivalent version available in `@openzeppelin/contracts`. ([#5944](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5944), [#5942](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5942)) @@ -73,6 +58,7 @@ #### Utils +- `Arrays`: Add `slice` and `splice` functions for value types (`uint256[]`, `bytes32[]`, `address[]`). ([#5983](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5983)) - `Base58`: Add a library for encoding and decoding bytes buffers into base58 strings. ([#5762](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5762)) - `Base64`: Add a new `decode` function that parses base64 encoded strings. ([#5765](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5765)) - `Bytes`: Add `concat` that merges a `bytes[]` array of buffers into a single `bytes` buffer. ([#5882](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5882)) diff --git a/contracts/access/extensions/AccessControlDefaultAdminRules.sol b/contracts/access/extensions/AccessControlDefaultAdminRules.sol index b98dd58267f..0be96d9ae12 100644 --- a/contracts/access/extensions/AccessControlDefaultAdminRules.sol +++ b/contracts/access/extensions/AccessControlDefaultAdminRules.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (access/extensions/AccessControlDefaultAdminRules.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (access/extensions/AccessControlDefaultAdminRules.sol) pragma solidity ^0.8.20; diff --git a/contracts/access/extensions/AccessControlEnumerable.sol b/contracts/access/extensions/AccessControlEnumerable.sol index feab7bff860..26a159426de 100644 --- a/contracts/access/extensions/AccessControlEnumerable.sol +++ b/contracts/access/extensions/AccessControlEnumerable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (access/extensions/AccessControlEnumerable.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (access/extensions/AccessControlEnumerable.sol) pragma solidity ^0.8.24; diff --git a/contracts/access/extensions/IAccessControlDefaultAdminRules.sol b/contracts/access/extensions/IAccessControlDefaultAdminRules.sol index 4552f7c11b5..1d9139908b9 100644 --- a/contracts/access/extensions/IAccessControlDefaultAdminRules.sol +++ b/contracts/access/extensions/IAccessControlDefaultAdminRules.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (access/extensions/IAccessControlDefaultAdminRules.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (access/extensions/IAccessControlDefaultAdminRules.sol) pragma solidity >=0.8.4; diff --git a/contracts/access/manager/AccessManager.sol b/contracts/access/manager/AccessManager.sol index d4f36b37377..12a734d4075 100644 --- a/contracts/access/manager/AccessManager.sol +++ b/contracts/access/manager/AccessManager.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (access/manager/AccessManager.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (access/manager/AccessManager.sol) pragma solidity ^0.8.20; diff --git a/contracts/access/manager/IAccessManager.sol b/contracts/access/manager/IAccessManager.sol index 22d21c101b5..749fe2654a3 100644 --- a/contracts/access/manager/IAccessManager.sol +++ b/contracts/access/manager/IAccessManager.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (access/manager/IAccessManager.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (access/manager/IAccessManager.sol) pragma solidity >=0.8.4; diff --git a/contracts/account/Account.sol b/contracts/account/Account.sol index 2175616c788..0b335383b28 100644 --- a/contracts/account/Account.sol +++ b/contracts/account/Account.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (account/Account.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (account/Account.sol) pragma solidity ^0.8.20; diff --git a/contracts/account/extensions/draft-AccountERC7579.sol b/contracts/account/extensions/draft-AccountERC7579.sol index 152f7364b27..2302d8359b6 100644 --- a/contracts/account/extensions/draft-AccountERC7579.sol +++ b/contracts/account/extensions/draft-AccountERC7579.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (account/extensions/draft-AccountERC7579.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (account/extensions/draft-AccountERC7579.sol) pragma solidity ^0.8.26; diff --git a/contracts/account/extensions/draft-ERC7821.sol b/contracts/account/extensions/draft-ERC7821.sol index 5d215af7504..f7e0573f9cf 100644 --- a/contracts/account/extensions/draft-ERC7821.sol +++ b/contracts/account/extensions/draft-ERC7821.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (account/extensions/draft-ERC7821.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (account/extensions/draft-ERC7821.sol) pragma solidity ^0.8.20; diff --git a/contracts/account/utils/EIP7702Utils.sol b/contracts/account/utils/EIP7702Utils.sol index 7e926b3efad..df9ca8acc81 100644 --- a/contracts/account/utils/EIP7702Utils.sol +++ b/contracts/account/utils/EIP7702Utils.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (account/utils/EIP7702Utils.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (account/utils/EIP7702Utils.sol) pragma solidity ^0.8.20; diff --git a/contracts/account/utils/draft-ERC7579Utils.sol b/contracts/account/utils/draft-ERC7579Utils.sol index b23b24b3e57..07bd924944b 100644 --- a/contracts/account/utils/draft-ERC7579Utils.sol +++ b/contracts/account/utils/draft-ERC7579Utils.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (account/utils/draft-ERC7579Utils.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (account/utils/draft-ERC7579Utils.sol) pragma solidity ^0.8.20; diff --git a/contracts/crosschain/ERC7786Recipient.sol b/contracts/crosschain/ERC7786Recipient.sol index ec64df9f622..0035aee4b25 100644 --- a/contracts/crosschain/ERC7786Recipient.sol +++ b/contracts/crosschain/ERC7786Recipient.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (crosschain/ERC7786Recipient.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (crosschain/ERC7786Recipient.sol) pragma solidity ^0.8.20; diff --git a/contracts/finance/VestingWallet.sol b/contracts/finance/VestingWallet.sol index b8017fa17ff..c627d4c40c5 100644 --- a/contracts/finance/VestingWallet.sol +++ b/contracts/finance/VestingWallet.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (finance/VestingWallet.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (finance/VestingWallet.sol) pragma solidity ^0.8.20; import {IERC20} from "../token/ERC20/IERC20.sol"; diff --git a/contracts/governance/Governor.sol b/contracts/governance/Governor.sol index 5e770762fc8..6d49f110734 100644 --- a/contracts/governance/Governor.sol +++ b/contracts/governance/Governor.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/Governor.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/Governor.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/IGovernor.sol b/contracts/governance/IGovernor.sol index 3c7b41cc49e..0988b4e91ca 100644 --- a/contracts/governance/IGovernor.sol +++ b/contracts/governance/IGovernor.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/IGovernor.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/IGovernor.sol) pragma solidity >=0.8.4; diff --git a/contracts/governance/TimelockController.sol b/contracts/governance/TimelockController.sol index 1272a2862ef..52aadcee19e 100644 --- a/contracts/governance/TimelockController.sol +++ b/contracts/governance/TimelockController.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/TimelockController.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/TimelockController.sol) pragma solidity ^0.8.20; diff --git a/contracts/governance/extensions/GovernorProposalGuardian.sol b/contracts/governance/extensions/GovernorProposalGuardian.sol index e84897db6e7..618f66c8682 100644 --- a/contracts/governance/extensions/GovernorProposalGuardian.sol +++ b/contracts/governance/extensions/GovernorProposalGuardian.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorProposalGuardian.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/extensions/GovernorProposalGuardian.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorStorage.sol b/contracts/governance/extensions/GovernorStorage.sol index 7219fa5d0d2..b93a4065eac 100644 --- a/contracts/governance/extensions/GovernorStorage.sol +++ b/contracts/governance/extensions/GovernorStorage.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorStorage.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/extensions/GovernorStorage.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorSuperQuorum.sol b/contracts/governance/extensions/GovernorSuperQuorum.sol index 2b9fffbada4..293f61a1603 100644 --- a/contracts/governance/extensions/GovernorSuperQuorum.sol +++ b/contracts/governance/extensions/GovernorSuperQuorum.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorSuperQuorum.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/extensions/GovernorSuperQuorum.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorTimelockCompound.sol b/contracts/governance/extensions/GovernorTimelockCompound.sol index 0e766d991f5..8f6183e8b89 100644 --- a/contracts/governance/extensions/GovernorTimelockCompound.sol +++ b/contracts/governance/extensions/GovernorTimelockCompound.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorTimelockCompound.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/extensions/GovernorTimelockCompound.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorTimelockControl.sol b/contracts/governance/extensions/GovernorTimelockControl.sol index 6eeed38db24..082952ae4ec 100644 --- a/contracts/governance/extensions/GovernorTimelockControl.sol +++ b/contracts/governance/extensions/GovernorTimelockControl.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorTimelockControl.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/extensions/GovernorTimelockControl.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorVotesQuorumFraction.sol b/contracts/governance/extensions/GovernorVotesQuorumFraction.sol index 3ca89e61622..de67172e49c 100644 --- a/contracts/governance/extensions/GovernorVotesQuorumFraction.sol +++ b/contracts/governance/extensions/GovernorVotesQuorumFraction.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorVotesQuorumFraction.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/extensions/GovernorVotesQuorumFraction.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol b/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol index 2fa4cec6110..53a7049a637 100644 --- a/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol +++ b/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/extensions/GovernorVotesSuperQuorumFraction.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/extensions/GovernorVotesSuperQuorumFraction.sol) pragma solidity ^0.8.24; diff --git a/contracts/governance/utils/IVotes.sol b/contracts/governance/utils/IVotes.sol index 5ef6bb2e764..87db0e8251f 100644 --- a/contracts/governance/utils/IVotes.sol +++ b/contracts/governance/utils/IVotes.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/utils/IVotes.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/utils/IVotes.sol) pragma solidity >=0.8.4; diff --git a/contracts/governance/utils/Votes.sol b/contracts/governance/utils/Votes.sol index 846f0e0cfa7..d1a236985fc 100644 --- a/contracts/governance/utils/Votes.sol +++ b/contracts/governance/utils/Votes.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/utils/Votes.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/utils/Votes.sol) pragma solidity ^0.8.24; import {IERC5805} from "../../interfaces/IERC5805.sol"; diff --git a/contracts/governance/utils/VotesExtended.sol b/contracts/governance/utils/VotesExtended.sol index c34552084e1..3585c9b83e1 100644 --- a/contracts/governance/utils/VotesExtended.sol +++ b/contracts/governance/utils/VotesExtended.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (governance/utils/VotesExtended.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (governance/utils/VotesExtended.sol) pragma solidity ^0.8.24; import {Checkpoints} from "../../utils/structs/Checkpoints.sol"; diff --git a/contracts/interfaces/IERC3156FlashLender.sol b/contracts/interfaces/IERC3156FlashLender.sol index 5c2bc87886b..83076d4a148 100644 --- a/contracts/interfaces/IERC3156FlashLender.sol +++ b/contracts/interfaces/IERC3156FlashLender.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/IERC3156FlashLender.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/IERC3156FlashLender.sol) pragma solidity >=0.5.0; diff --git a/contracts/interfaces/IERC4626.sol b/contracts/interfaces/IERC4626.sol index 4f99d05f4b0..66e83390ec1 100644 --- a/contracts/interfaces/IERC4626.sol +++ b/contracts/interfaces/IERC4626.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/IERC4626.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/IERC4626.sol) pragma solidity >=0.6.2; diff --git a/contracts/interfaces/IERC6909.sol b/contracts/interfaces/IERC6909.sol index a5aa8bb4905..dd90d625888 100644 --- a/contracts/interfaces/IERC6909.sol +++ b/contracts/interfaces/IERC6909.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/IERC6909.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/IERC6909.sol) pragma solidity >=0.6.2; diff --git a/contracts/interfaces/IERC7751.sol b/contracts/interfaces/IERC7751.sol index d26637b39b1..1755b0b5b71 100644 --- a/contracts/interfaces/IERC7751.sol +++ b/contracts/interfaces/IERC7751.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/IERC7751.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/IERC7751.sol) pragma solidity >=0.8.4; diff --git a/contracts/interfaces/draft-IERC6093.sol b/contracts/interfaces/draft-IERC6093.sol index e70efe01121..e9d6249ef52 100644 --- a/contracts/interfaces/draft-IERC6093.sol +++ b/contracts/interfaces/draft-IERC6093.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/draft-IERC6093.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/draft-IERC6093.sol) pragma solidity >=0.8.4; diff --git a/contracts/interfaces/draft-IERC7579.sol b/contracts/interfaces/draft-IERC7579.sol index 20b6b9c8e81..7688dbcc725 100644 --- a/contracts/interfaces/draft-IERC7579.sol +++ b/contracts/interfaces/draft-IERC7579.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/draft-IERC7579.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/draft-IERC7579.sol) pragma solidity >=0.8.4; diff --git a/contracts/interfaces/draft-IERC7786.sol b/contracts/interfaces/draft-IERC7786.sol index 081a9e4f3d7..553ae1200ac 100644 --- a/contracts/interfaces/draft-IERC7786.sol +++ b/contracts/interfaces/draft-IERC7786.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/draft-IERC7786.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/draft-IERC7786.sol) pragma solidity >=0.8.4; diff --git a/contracts/interfaces/draft-IERC7802.sol b/contracts/interfaces/draft-IERC7802.sol index a6e5fafb7f9..ab845d064fa 100644 --- a/contracts/interfaces/draft-IERC7802.sol +++ b/contracts/interfaces/draft-IERC7802.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (interfaces/draft-IERC7802.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/draft-IERC7802.sol) pragma solidity >=0.6.2; diff --git a/contracts/metatx/ERC2771Context.sol b/contracts/metatx/ERC2771Context.sol index 7316a90e0c9..ce6eca82c0c 100644 --- a/contracts/metatx/ERC2771Context.sol +++ b/contracts/metatx/ERC2771Context.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (metatx/ERC2771Context.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (metatx/ERC2771Context.sol) pragma solidity ^0.8.20; diff --git a/contracts/metatx/ERC2771Forwarder.sol b/contracts/metatx/ERC2771Forwarder.sol index 6562aae748e..0ad433d8046 100644 --- a/contracts/metatx/ERC2771Forwarder.sol +++ b/contracts/metatx/ERC2771Forwarder.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (metatx/ERC2771Forwarder.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (metatx/ERC2771Forwarder.sol) pragma solidity ^0.8.24; diff --git a/contracts/package.json b/contracts/package.json index c12011a4502..3535a2f56b4 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -1,7 +1,7 @@ { "name": "@openzeppelin/contracts", "description": "Secure Smart Contract library for Solidity", - "version": "5.5.0-rc.1", + "version": "5.5.0", "files": [ "**/*.sol", "/build/contracts/*.json", diff --git a/contracts/proxy/Clones.sol b/contracts/proxy/Clones.sol index 0c7ac5b7732..bf12368bdbd 100644 --- a/contracts/proxy/Clones.sol +++ b/contracts/proxy/Clones.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (proxy/Clones.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (proxy/Clones.sol) pragma solidity ^0.8.20; diff --git a/contracts/proxy/Proxy.sol b/contracts/proxy/Proxy.sol index 0507cfe2276..1f9d8ec48a3 100644 --- a/contracts/proxy/Proxy.sol +++ b/contracts/proxy/Proxy.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (proxy/Proxy.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (proxy/Proxy.sol) pragma solidity ^0.8.20; diff --git a/contracts/proxy/transparent/TransparentUpgradeableProxy.sol b/contracts/proxy/transparent/TransparentUpgradeableProxy.sol index d2c0f5f9544..39008aab021 100644 --- a/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +++ b/contracts/proxy/transparent/TransparentUpgradeableProxy.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (proxy/transparent/TransparentUpgradeableProxy.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (proxy/transparent/TransparentUpgradeableProxy.sol) pragma solidity ^0.8.22; diff --git a/contracts/proxy/utils/UUPSUpgradeable.sol b/contracts/proxy/utils/UUPSUpgradeable.sol index 51be97b826b..da3eac79de7 100644 --- a/contracts/proxy/utils/UUPSUpgradeable.sol +++ b/contracts/proxy/utils/UUPSUpgradeable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (proxy/utils/UUPSUpgradeable.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (proxy/utils/UUPSUpgradeable.sol) pragma solidity ^0.8.22; diff --git a/contracts/token/ERC1155/ERC1155.sol b/contracts/token/ERC1155/ERC1155.sol index 2bc44d219b9..1af455cc6e2 100644 --- a/contracts/token/ERC1155/ERC1155.sol +++ b/contracts/token/ERC1155/ERC1155.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (token/ERC1155/ERC1155.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC1155/ERC1155.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC1155/extensions/ERC1155Burnable.sol b/contracts/token/ERC1155/extensions/ERC1155Burnable.sol index 02b8b9a12ce..41d36bd7236 100644 --- a/contracts/token/ERC1155/extensions/ERC1155Burnable.sol +++ b/contracts/token/ERC1155/extensions/ERC1155Burnable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (token/ERC1155/extensions/ERC1155Burnable.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC1155/extensions/ERC1155Burnable.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC1155/extensions/ERC1155Pausable.sol b/contracts/token/ERC1155/extensions/ERC1155Pausable.sol index d9a22af6e42..03a3d62f008 100644 --- a/contracts/token/ERC1155/extensions/ERC1155Pausable.sol +++ b/contracts/token/ERC1155/extensions/ERC1155Pausable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (token/ERC1155/extensions/ERC1155Pausable.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC1155/extensions/ERC1155Pausable.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC1155/extensions/ERC1155Supply.sol b/contracts/token/ERC1155/extensions/ERC1155Supply.sol index c0209c55807..54a7fe3f51b 100644 --- a/contracts/token/ERC1155/extensions/ERC1155Supply.sol +++ b/contracts/token/ERC1155/extensions/ERC1155Supply.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (token/ERC1155/extensions/ERC1155Supply.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC1155/extensions/ERC1155Supply.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol b/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol index 01c4c337ddc..9973b55edd9 100644 --- a/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol +++ b/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC1155/extensions/ERC1155URIStorage.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC1155/extensions/ERC1155URIStorage.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC1155/utils/ERC1155Holder.sol b/contracts/token/ERC1155/utils/ERC1155Holder.sol index f4ab35dcd6b..329f8234153 100644 --- a/contracts/token/ERC1155/utils/ERC1155Holder.sol +++ b/contracts/token/ERC1155/utils/ERC1155Holder.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC1155/utils/ERC1155Holder.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC1155/utils/ERC1155Holder.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC20/ERC20.sol b/contracts/token/ERC20/ERC20.sol index 3f646438174..4d9d6b6d1c1 100644 --- a/contracts/token/ERC20/ERC20.sol +++ b/contracts/token/ERC20/ERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/ERC20.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC20/extensions/ERC20Permit.sol b/contracts/token/ERC20/extensions/ERC20Permit.sol index 222285c5a87..77e796591fa 100644 --- a/contracts/token/ERC20/extensions/ERC20Permit.sol +++ b/contracts/token/ERC20/extensions/ERC20Permit.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/extensions/ERC20Permit.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/extensions/ERC20Permit.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC20/extensions/ERC20Votes.sol b/contracts/token/ERC20/extensions/ERC20Votes.sol index 3c25bed9886..227f0d883ba 100644 --- a/contracts/token/ERC20/extensions/ERC20Votes.sol +++ b/contracts/token/ERC20/extensions/ERC20Votes.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/extensions/ERC20Votes.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/extensions/ERC20Votes.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC20/extensions/ERC4626.sol b/contracts/token/ERC20/extensions/ERC4626.sol index 8c0825a13b8..5054ef49fcb 100644 --- a/contracts/token/ERC20/extensions/ERC4626.sol +++ b/contracts/token/ERC20/extensions/ERC4626.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/extensions/ERC4626.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/extensions/ERC4626.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC20/extensions/IERC20Permit.sol b/contracts/token/ERC20/extensions/IERC20Permit.sol index 2477946b98b..29c811dfd36 100644 --- a/contracts/token/ERC20/extensions/IERC20Permit.sol +++ b/contracts/token/ERC20/extensions/IERC20Permit.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/extensions/IERC20Permit.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/extensions/IERC20Permit.sol) pragma solidity >=0.4.16; diff --git a/contracts/token/ERC20/utils/SafeERC20.sol b/contracts/token/ERC20/utils/SafeERC20.sol index 47f26e681d4..b1e4b6e67db 100644 --- a/contracts/token/ERC20/utils/SafeERC20.sol +++ b/contracts/token/ERC20/utils/SafeERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC20/utils/SafeERC20.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC6909/ERC6909.sol b/contracts/token/ERC6909/ERC6909.sol index 266e73fd15f..b1f16450678 100644 --- a/contracts/token/ERC6909/ERC6909.sol +++ b/contracts/token/ERC6909/ERC6909.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC6909/ERC6909.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC6909/ERC6909.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC6909/extensions/ERC6909ContentURI.sol b/contracts/token/ERC6909/extensions/ERC6909ContentURI.sol index 92e6047a229..353de29c5df 100644 --- a/contracts/token/ERC6909/extensions/ERC6909ContentURI.sol +++ b/contracts/token/ERC6909/extensions/ERC6909ContentURI.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC6909/extensions/ERC6909ContentURI.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC6909/extensions/ERC6909ContentURI.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC6909/extensions/ERC6909Metadata.sol b/contracts/token/ERC6909/extensions/ERC6909Metadata.sol index 88aa482428d..6ada69a14d5 100644 --- a/contracts/token/ERC6909/extensions/ERC6909Metadata.sol +++ b/contracts/token/ERC6909/extensions/ERC6909Metadata.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC6909/extensions/ERC6909Metadata.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC6909/extensions/ERC6909Metadata.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC6909/extensions/ERC6909TokenSupply.sol b/contracts/token/ERC6909/extensions/ERC6909TokenSupply.sol index 9e67d9722b9..f4a9c607c6a 100644 --- a/contracts/token/ERC6909/extensions/ERC6909TokenSupply.sol +++ b/contracts/token/ERC6909/extensions/ERC6909TokenSupply.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC6909/extensions/ERC6909TokenSupply.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC6909/extensions/ERC6909TokenSupply.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC721/ERC721.sol b/contracts/token/ERC721/ERC721.sol index 859d2002b99..f4783f1e2ab 100644 --- a/contracts/token/ERC721/ERC721.sol +++ b/contracts/token/ERC721/ERC721.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/ERC721.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Burnable.sol b/contracts/token/ERC721/extensions/ERC721Burnable.sol index 9eab09713f5..c47be18fd47 100644 --- a/contracts/token/ERC721/extensions/ERC721Burnable.sol +++ b/contracts/token/ERC721/extensions/ERC721Burnable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Burnable.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC721/extensions/ERC721Burnable.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Consecutive.sol b/contracts/token/ERC721/extensions/ERC721Consecutive.sol index 775c640512a..a391923e8dc 100644 --- a/contracts/token/ERC721/extensions/ERC721Consecutive.sol +++ b/contracts/token/ERC721/extensions/ERC721Consecutive.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Consecutive.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC721/extensions/ERC721Consecutive.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Enumerable.sol b/contracts/token/ERC721/extensions/ERC721Enumerable.sol index d80a47eb4a2..07e2202dab5 100644 --- a/contracts/token/ERC721/extensions/ERC721Enumerable.sol +++ b/contracts/token/ERC721/extensions/ERC721Enumerable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Enumerable.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC721/extensions/ERC721Enumerable.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Pausable.sol b/contracts/token/ERC721/extensions/ERC721Pausable.sol index 2b3d5e5b7d9..746febcba02 100644 --- a/contracts/token/ERC721/extensions/ERC721Pausable.sol +++ b/contracts/token/ERC721/extensions/ERC721Pausable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Pausable.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC721/extensions/ERC721Pausable.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Royalty.sol b/contracts/token/ERC721/extensions/ERC721Royalty.sol index e618ea44f43..ff915ab6e9e 100644 --- a/contracts/token/ERC721/extensions/ERC721Royalty.sol +++ b/contracts/token/ERC721/extensions/ERC721Royalty.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Royalty.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC721/extensions/ERC721Royalty.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721URIStorage.sol b/contracts/token/ERC721/extensions/ERC721URIStorage.sol index 04a6690f973..92e9f77db90 100644 --- a/contracts/token/ERC721/extensions/ERC721URIStorage.sol +++ b/contracts/token/ERC721/extensions/ERC721URIStorage.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721URIStorage.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC721/extensions/ERC721URIStorage.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Votes.sol b/contracts/token/ERC721/extensions/ERC721Votes.sol index 58f95859785..8a4a2c2ccf6 100644 --- a/contracts/token/ERC721/extensions/ERC721Votes.sol +++ b/contracts/token/ERC721/extensions/ERC721Votes.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Votes.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC721/extensions/ERC721Votes.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/extensions/ERC721Wrapper.sol b/contracts/token/ERC721/extensions/ERC721Wrapper.sol index 0fd90d3385d..07a97628435 100644 --- a/contracts/token/ERC721/extensions/ERC721Wrapper.sol +++ b/contracts/token/ERC721/extensions/ERC721Wrapper.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/extensions/ERC721Wrapper.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC721/extensions/ERC721Wrapper.sol) pragma solidity ^0.8.24; diff --git a/contracts/token/ERC721/utils/ERC721Holder.sol b/contracts/token/ERC721/utils/ERC721Holder.sol index bf89465e3bf..674334e0c0d 100644 --- a/contracts/token/ERC721/utils/ERC721Holder.sol +++ b/contracts/token/ERC721/utils/ERC721Holder.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/utils/ERC721Holder.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC721/utils/ERC721Holder.sol) pragma solidity ^0.8.20; diff --git a/contracts/token/ERC721/utils/ERC721Utils.sol b/contracts/token/ERC721/utils/ERC721Utils.sol index 069e1d0f3ff..2ae87ba6780 100644 --- a/contracts/token/ERC721/utils/ERC721Utils.sol +++ b/contracts/token/ERC721/utils/ERC721Utils.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (token/ERC721/utils/ERC721Utils.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC721/utils/ERC721Utils.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Address.sol b/contracts/utils/Address.sol index 9cb6c8daa5a..e31fdb3fcc2 100644 --- a/contracts/utils/Address.sol +++ b/contracts/utils/Address.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Address.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/Address.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Arrays.sol b/contracts/utils/Arrays.sol index 14c18c03afa..e49be484d80 100644 --- a/contracts/utils/Arrays.sol +++ b/contracts/utils/Arrays.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/Arrays.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/Arrays.sol) // This file was procedurally generated from scripts/generate/templates/Arrays.js. pragma solidity ^0.8.24; diff --git a/contracts/utils/Base58.sol b/contracts/utils/Base58.sol index 001b767f202..13f81b070bf 100644 --- a/contracts/utils/Base58.sol +++ b/contracts/utils/Base58.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Base58.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/Base58.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Base64.sol b/contracts/utils/Base64.sol index f85873e630e..7c665c85f2e 100644 --- a/contracts/utils/Base64.sol +++ b/contracts/utils/Base64.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Base64.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/Base64.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Blockhash.sol b/contracts/utils/Blockhash.sol index 46a908b711b..a8692522093 100644 --- a/contracts/utils/Blockhash.sol +++ b/contracts/utils/Blockhash.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Blockhash.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/Blockhash.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Bytes.sol b/contracts/utils/Bytes.sol index 72d3d7fa759..e1c3f807134 100644 --- a/contracts/utils/Bytes.sol +++ b/contracts/utils/Bytes.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/Bytes.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/Bytes.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/Create2.sol b/contracts/utils/Create2.sol index 3ba12d1df6b..7ebbd50eb3b 100644 --- a/contracts/utils/Create2.sol +++ b/contracts/utils/Create2.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Create2.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/Create2.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/LowLevelCall.sol b/contracts/utils/LowLevelCall.sol index d1113329103..06276930231 100644 --- a/contracts/utils/LowLevelCall.sol +++ b/contracts/utils/LowLevelCall.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/LowLevelCall.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/LowLevelCall.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/Memory.sol b/contracts/utils/Memory.sol index d4c09a3f48f..378d247c041 100644 --- a/contracts/utils/Memory.sol +++ b/contracts/utils/Memory.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Memory.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/Memory.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/Multicall.sol b/contracts/utils/Multicall.sol index 929bb5922b4..c78b9623c9a 100644 --- a/contracts/utils/Multicall.sol +++ b/contracts/utils/Multicall.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Multicall.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/Multicall.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/RLP.sol b/contracts/utils/RLP.sol index bfb300ec645..19572acf431 100644 --- a/contracts/utils/RLP.sol +++ b/contracts/utils/RLP.sol @@ -1,5 +1,6 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/RLP.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/RLP.sol) + pragma solidity ^0.8.26; import {Math} from "./math/Math.sol"; diff --git a/contracts/utils/ReentrancyGuard.sol b/contracts/utils/ReentrancyGuard.sol index e082bdf0715..c156fa1cc96 100644 --- a/contracts/utils/ReentrancyGuard.sol +++ b/contracts/utils/ReentrancyGuard.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/ReentrancyGuard.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/ReentrancyGuardTransient.sol b/contracts/utils/ReentrancyGuardTransient.sol index 522b71aa3ce..273a5dcd308 100644 --- a/contracts/utils/ReentrancyGuardTransient.sol +++ b/contracts/utils/ReentrancyGuardTransient.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/ReentrancyGuardTransient.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/ReentrancyGuardTransient.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/RelayedCall.sol b/contracts/utils/RelayedCall.sol index e037fd1ef5a..e7e5ee02089 100644 --- a/contracts/utils/RelayedCall.sol +++ b/contracts/utils/RelayedCall.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/RelayedCall.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/RelayedCall.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/ShortStrings.sol b/contracts/utils/ShortStrings.sol index ed5d2e5af02..79332317aad 100644 --- a/contracts/utils/ShortStrings.sol +++ b/contracts/utils/ShortStrings.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/ShortStrings.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/ShortStrings.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/SlotDerivation.sol b/contracts/utils/SlotDerivation.sol index 32dee2f71b1..5d41be5fa7f 100644 --- a/contracts/utils/SlotDerivation.sol +++ b/contracts/utils/SlotDerivation.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/SlotDerivation.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/SlotDerivation.sol) // This file was procedurally generated from scripts/generate/templates/SlotDerivation.js. pragma solidity ^0.8.20; diff --git a/contracts/utils/Strings.sol b/contracts/utils/Strings.sol index fe0a9bab6e7..2fcd286d6e8 100644 --- a/contracts/utils/Strings.sol +++ b/contracts/utils/Strings.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/Strings.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/Strings.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/ECDSA.sol b/contracts/utils/cryptography/ECDSA.sol index ff8e2171cef..838fe26225e 100644 --- a/contracts/utils/cryptography/ECDSA.sol +++ b/contracts/utils/cryptography/ECDSA.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/ECDSA.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/ECDSA.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/cryptography/EIP712.sol b/contracts/utils/cryptography/EIP712.sol index 955fe69e16c..2bc45a4b2c7 100644 --- a/contracts/utils/cryptography/EIP712.sol +++ b/contracts/utils/cryptography/EIP712.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/EIP712.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/EIP712.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/MessageHashUtils.sol b/contracts/utils/cryptography/MessageHashUtils.sol index a9eee7980b6..cef8af23d1b 100644 --- a/contracts/utils/cryptography/MessageHashUtils.sol +++ b/contracts/utils/cryptography/MessageHashUtils.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/MessageHashUtils.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/MessageHashUtils.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/SignatureChecker.sol b/contracts/utils/cryptography/SignatureChecker.sol index f5197af9c05..de619568990 100644 --- a/contracts/utils/cryptography/SignatureChecker.sol +++ b/contracts/utils/cryptography/SignatureChecker.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/cryptography/SignatureChecker.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/SignatureChecker.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/WebAuthn.sol b/contracts/utils/cryptography/WebAuthn.sol index c8e3ebe30e2..aa0c474eebc 100644 --- a/contracts/utils/cryptography/WebAuthn.sol +++ b/contracts/utils/cryptography/WebAuthn.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/WebAuthn.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/WebAuthn.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/draft-ERC7739Utils.sol b/contracts/utils/cryptography/draft-ERC7739Utils.sol index af4ca61198b..94fd1b6c0db 100644 --- a/contracts/utils/cryptography/draft-ERC7739Utils.sol +++ b/contracts/utils/cryptography/draft-ERC7739Utils.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/draft-ERC7739Utils.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/draft-ERC7739Utils.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/cryptography/signers/SignerEIP7702.sol b/contracts/utils/cryptography/signers/SignerEIP7702.sol index 3065113ada3..a129445eda2 100644 --- a/contracts/utils/cryptography/signers/SignerEIP7702.sol +++ b/contracts/utils/cryptography/signers/SignerEIP7702.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/signers/SignerEIP7702.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/signers/SignerEIP7702.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/cryptography/signers/SignerWebAuthn.sol b/contracts/utils/cryptography/signers/SignerWebAuthn.sol index 90bc522a4f8..7352950bd46 100644 --- a/contracts/utils/cryptography/signers/SignerWebAuthn.sol +++ b/contracts/utils/cryptography/signers/SignerWebAuthn.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/signers/SignerWebAuthn.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/signers/SignerWebAuthn.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/signers/draft-ERC7739.sol b/contracts/utils/cryptography/signers/draft-ERC7739.sol index b504e6aab71..455246469a0 100644 --- a/contracts/utils/cryptography/signers/draft-ERC7739.sol +++ b/contracts/utils/cryptography/signers/draft-ERC7739.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/signers/draft-ERC7739.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/signers/draft-ERC7739.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sol b/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sol index 42e19fd3db0..bd37d64258e 100644 --- a/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sol +++ b/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/verifiers/ERC7913P256Verifier.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/verifiers/ERC7913P256Verifier.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sol b/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sol index f074601900b..815958eb22f 100644 --- a/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sol +++ b/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/cryptography/verifiers/ERC7913RSAVerifier.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/verifiers/ERC7913RSAVerifier.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol b/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol index e24a13155ae..35428608485 100644 --- a/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol +++ b/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/draft-InteroperableAddress.sol b/contracts/utils/draft-InteroperableAddress.sol index 7ab16483c17..d00cc6d100a 100644 --- a/contracts/utils/draft-InteroperableAddress.sol +++ b/contracts/utils/draft-InteroperableAddress.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/draft-InteroperableAddress.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/draft-InteroperableAddress.sol) pragma solidity ^0.8.26; diff --git a/contracts/utils/introspection/ERC165Checker.sol b/contracts/utils/introspection/ERC165Checker.sol index cbbbcff5b66..bfbfbadf485 100644 --- a/contracts/utils/introspection/ERC165Checker.sol +++ b/contracts/utils/introspection/ERC165Checker.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/introspection/ERC165Checker.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/introspection/ERC165Checker.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/math/Math.sol b/contracts/utils/math/Math.sol index bce6852b9fc..3c20905e376 100644 --- a/contracts/utils/math/Math.sol +++ b/contracts/utils/math/Math.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/math/Math.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/math/Math.sol) pragma solidity ^0.8.20; diff --git a/contracts/utils/structs/Accumulators.sol b/contracts/utils/structs/Accumulators.sol index af08d5505ba..696d930c14d 100644 --- a/contracts/utils/structs/Accumulators.sol +++ b/contracts/utils/structs/Accumulators.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/structs/Accumulators.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/structs/Accumulators.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/structs/Checkpoints.sol b/contracts/utils/structs/Checkpoints.sol index c7976258099..6f67317ae64 100644 --- a/contracts/utils/structs/Checkpoints.sol +++ b/contracts/utils/structs/Checkpoints.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/structs/Checkpoints.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/structs/Checkpoints.sol) // This file was procedurally generated from scripts/generate/templates/Checkpoints.js. pragma solidity ^0.8.20; diff --git a/contracts/utils/structs/CircularBuffer.sol b/contracts/utils/structs/CircularBuffer.sol index e178df4f348..8d7801d1f72 100644 --- a/contracts/utils/structs/CircularBuffer.sol +++ b/contracts/utils/structs/CircularBuffer.sol @@ -1,5 +1,6 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/structs/CircularBuffer.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/structs/CircularBuffer.sol) + pragma solidity ^0.8.24; import {Math} from "../math/Math.sol"; diff --git a/contracts/utils/structs/EnumerableMap.sol b/contracts/utils/structs/EnumerableMap.sol index e799bb2f83a..3173623b92f 100644 --- a/contracts/utils/structs/EnumerableMap.sol +++ b/contracts/utils/structs/EnumerableMap.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/structs/EnumerableMap.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/structs/EnumerableMap.sol) // This file was procedurally generated from scripts/generate/templates/EnumerableMap.js. pragma solidity ^0.8.24; diff --git a/contracts/utils/structs/EnumerableSet.sol b/contracts/utils/structs/EnumerableSet.sol index 1cd645ae221..12479caf0b7 100644 --- a/contracts/utils/structs/EnumerableSet.sol +++ b/contracts/utils/structs/EnumerableSet.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/structs/EnumerableSet.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/structs/EnumerableSet.sol) // This file was procedurally generated from scripts/generate/templates/EnumerableSet.js. pragma solidity ^0.8.24; diff --git a/contracts/utils/structs/Heap.sol b/contracts/utils/structs/Heap.sol index 530821b0616..b5f0730ef69 100644 --- a/contracts/utils/structs/Heap.sol +++ b/contracts/utils/structs/Heap.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/structs/Heap.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/structs/Heap.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/structs/MerkleTree.sol b/contracts/utils/structs/MerkleTree.sol index 553d5a8dd69..792b9963a6a 100644 --- a/contracts/utils/structs/MerkleTree.sol +++ b/contracts/utils/structs/MerkleTree.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.1) (utils/structs/MerkleTree.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/structs/MerkleTree.sol) pragma solidity ^0.8.24; diff --git a/contracts/utils/types/Time.sol b/contracts/utils/types/Time.sol index 7d8ea123c8a..8402e53bdf1 100644 --- a/contracts/utils/types/Time.sol +++ b/contracts/utils/types/Time.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.5.0-rc.0) (utils/types/Time.sol) +// OpenZeppelin Contracts (last updated v5.5.0) (utils/types/Time.sol) pragma solidity ^0.8.20; diff --git a/docs/antora.yml b/docs/antora.yml index 46c7444e03d..4bc06b36a38 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -1,7 +1,7 @@ name: contracts title: Contracts -version: 5.x-rc -prerelease: true +version: 5.x +prerelease: false nav: - modules/ROOT/nav.adoc - modules/api/nav.adoc diff --git a/package.json b/package.json index 83fa262bcba..7374ce0d66c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "openzeppelin-solidity", "description": "Secure Smart Contract library for Solidity", - "version": "5.5.0-rc.1", + "version": "5.5.0", "private": true, "files": [ "/contracts/**/*.sol", From 84785f1bbf418cce455ca8c8d2d511fbab89011c Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 31 Oct 2025 16:04:50 +0100 Subject: [PATCH 15/17] Fix CHANGELOG.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd58dca98a2..d1983f07d10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ ### Bug fixes - `AccountERC7579`: Prevent revert in `isModuleInstalled` for fallback modules when `additionalContext` has fewer than 4 bytes. The function now returns `false` instead of reverting, ensuring ERC-7579 compliance. ([#5961](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5961)) -- `ERC165Checker`: Ensure the `supportsERC165` function returns false if the target reverts during the `supportsInterface(0xffffffff)` call. ([#5810](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5880)) +- `ERC165Checker`: Ensure the `supportsERC165` function returns false if the target reverts during the `supportsInterface(0xffffffff)` call. ([#5880](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5880)) - `AccountERC7579`: Prevent revert in `isModuleInstalled` for fallback modules when `additionalContext` has fewer than 4 bytes. The function now returns `false` instead of reverting, ensuring ERC-7579 compliance. ([#5961](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5961)) ### Breaking changes From bb66d1152945db2b0779304545d0cd04e1526395 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 31 Oct 2025 16:06:18 +0100 Subject: [PATCH 16/17] Update contracts/finance/VestingWallet.sol --- contracts/finance/VestingWallet.sol | 1 + 1 file changed, 1 insertion(+) diff --git a/contracts/finance/VestingWallet.sol b/contracts/finance/VestingWallet.sol index c627d4c40c5..914998a77fe 100644 --- a/contracts/finance/VestingWallet.sol +++ b/contracts/finance/VestingWallet.sol @@ -1,5 +1,6 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.5.0) (finance/VestingWallet.sol) + pragma solidity ^0.8.20; import {IERC20} from "../token/ERC20/IERC20.sol"; From 128ae5aa1609515d3b6618ba753f0c21f78964c3 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 31 Oct 2025 16:07:41 +0100 Subject: [PATCH 17/17] Apply suggestions from code review --- contracts/governance/utils/Votes.sol | 1 + contracts/governance/utils/VotesExtended.sol | 1 + 2 files changed, 2 insertions(+) diff --git a/contracts/governance/utils/Votes.sol b/contracts/governance/utils/Votes.sol index d1a236985fc..1eebb7e23d1 100644 --- a/contracts/governance/utils/Votes.sol +++ b/contracts/governance/utils/Votes.sol @@ -1,5 +1,6 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.5.0) (governance/utils/Votes.sol) + pragma solidity ^0.8.24; import {IERC5805} from "../../interfaces/IERC5805.sol"; diff --git a/contracts/governance/utils/VotesExtended.sol b/contracts/governance/utils/VotesExtended.sol index 3585c9b83e1..25a72209d73 100644 --- a/contracts/governance/utils/VotesExtended.sol +++ b/contracts/governance/utils/VotesExtended.sol @@ -1,5 +1,6 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.5.0) (governance/utils/VotesExtended.sol) + pragma solidity ^0.8.24; import {Checkpoints} from "../../utils/structs/Checkpoints.sol";