From f667f78bde2c79d7a3b3c744a064c75d768008b9 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Sun, 8 Jun 2025 19:13:52 -0600 Subject: [PATCH 1/6] Update pragma to 0.8.24 in String dependencies --- CHANGELOG.md | 2 +- contracts/token/ERC1155/extensions/ERC1155URIStorage.sol | 2 +- contracts/token/ERC721/extensions/ERC721Burnable.sol | 2 +- contracts/token/ERC721/extensions/ERC721Consecutive.sol | 2 +- contracts/token/ERC721/extensions/ERC721Enumerable.sol | 2 +- contracts/token/ERC721/extensions/ERC721Pausable.sol | 2 +- contracts/token/ERC721/extensions/ERC721URIStorage.sol | 2 +- contracts/token/ERC721/extensions/ERC721Votes.sol | 2 +- contracts/utils/Strings.sol | 2 +- contracts/utils/cryptography/EIP712.sol | 2 +- contracts/utils/cryptography/MessageHashUtils.sol | 2 +- contracts/utils/cryptography/signers/ERC7739.sol | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fec1725f61d..119d083848b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ### Breaking changes -- Update minimum pragma to 0.8.24 in `SignatureChecker`, `Governor` and Governor's extensions. ([#5716](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5716)). +pdate minimum pragma to 0.8.24 in `SignatureChecker`, `Governor`, Governor's extensions, `Strings`, `ERC1155URIStorage`, `MessageHashUtils`, `ERC721URIStorage`, `ERC721Votes`, `ERC721Wrapper`, `ERC721Burnable`, `ERC721Consecutive`, `ERC721Enumerable`, `ERC721Pausable`, `EIP712` and `ERC7739`. ([#5716](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5716)), ([#5680](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5680)) ## 5.3.0 (2025-04-09) diff --git a/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol b/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol index 5abf319d327..85143ef099c 100644 --- a/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol +++ b/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC1155/extensions/ERC1155URIStorage.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Strings} from "../../../utils/Strings.sol"; import {ERC1155} from "../ERC1155.sol"; diff --git a/contracts/token/ERC721/extensions/ERC721Burnable.sol b/contracts/token/ERC721/extensions/ERC721Burnable.sol index c6d22455761..06babdcf259 100644 --- a/contracts/token/ERC721/extensions/ERC721Burnable.sol +++ b/contracts/token/ERC721/extensions/ERC721Burnable.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Burnable.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721} from "../ERC721.sol"; import {Context} from "../../../utils/Context.sol"; diff --git a/contracts/token/ERC721/extensions/ERC721Consecutive.sol b/contracts/token/ERC721/extensions/ERC721Consecutive.sol index 0f3267364f2..ec3abe02e54 100644 --- a/contracts/token/ERC721/extensions/ERC721Consecutive.sol +++ b/contracts/token/ERC721/extensions/ERC721Consecutive.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/extensions/ERC721Consecutive.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721} from "../ERC721.sol"; import {IERC2309} from "../../../interfaces/IERC2309.sol"; diff --git a/contracts/token/ERC721/extensions/ERC721Enumerable.sol b/contracts/token/ERC721/extensions/ERC721Enumerable.sol index 6d699429db4..4f76f97bc60 100644 --- a/contracts/token/ERC721/extensions/ERC721Enumerable.sol +++ b/contracts/token/ERC721/extensions/ERC721Enumerable.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Enumerable.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721} from "../ERC721.sol"; import {IERC721Enumerable} from "./IERC721Enumerable.sol"; diff --git a/contracts/token/ERC721/extensions/ERC721Pausable.sol b/contracts/token/ERC721/extensions/ERC721Pausable.sol index 9a75623c62a..0404488664f 100644 --- a/contracts/token/ERC721/extensions/ERC721Pausable.sol +++ b/contracts/token/ERC721/extensions/ERC721Pausable.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Pausable.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721} from "../ERC721.sol"; import {Pausable} from "../../../utils/Pausable.sol"; diff --git a/contracts/token/ERC721/extensions/ERC721URIStorage.sol b/contracts/token/ERC721/extensions/ERC721URIStorage.sol index 432fec71d77..5a42b4e774f 100644 --- a/contracts/token/ERC721/extensions/ERC721URIStorage.sol +++ b/contracts/token/ERC721/extensions/ERC721URIStorage.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/extensions/ERC721URIStorage.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721} from "../ERC721.sol"; import {IERC721Metadata} from "./IERC721Metadata.sol"; diff --git a/contracts/token/ERC721/extensions/ERC721Votes.sol b/contracts/token/ERC721/extensions/ERC721Votes.sol index f71195ce7c8..4b2ddd61284 100644 --- a/contracts/token/ERC721/extensions/ERC721Votes.sol +++ b/contracts/token/ERC721/extensions/ERC721Votes.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Votes.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721} from "../ERC721.sol"; import {Votes} from "../../../governance/utils/Votes.sol"; diff --git a/contracts/utils/Strings.sol b/contracts/utils/Strings.sol index 4cc597646f2..fff135cec3d 100644 --- a/contracts/utils/Strings.sol +++ b/contracts/utils/Strings.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.3.0) (utils/Strings.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/cryptography/EIP712.sol b/contracts/utils/cryptography/EIP712.sol index c39954e35dd..116ba839ebb 100644 --- a/contracts/utils/cryptography/EIP712.sol +++ b/contracts/utils/cryptography/EIP712.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.3.0) (utils/cryptography/EIP712.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {MessageHashUtils} from "./MessageHashUtils.sol"; import {ShortStrings, ShortString} from "../ShortStrings.sol"; diff --git a/contracts/utils/cryptography/MessageHashUtils.sol b/contracts/utils/cryptography/MessageHashUtils.sol index 37e92395f89..232090f31db 100644 --- a/contracts/utils/cryptography/MessageHashUtils.sol +++ b/contracts/utils/cryptography/MessageHashUtils.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.3.0) (utils/cryptography/MessageHashUtils.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Strings} from "../Strings.sol"; diff --git a/contracts/utils/cryptography/signers/ERC7739.sol b/contracts/utils/cryptography/signers/ERC7739.sol index ff0bd4e3818..9ac79fb9a50 100644 --- a/contracts/utils/cryptography/signers/ERC7739.sol +++ b/contracts/utils/cryptography/signers/ERC7739.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {AbstractSigner} from "./AbstractSigner.sol"; import {EIP712} from "../EIP712.sol"; From 787d972fbbcf54f37df52b825150fd6232942711 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Sun, 8 Jun 2025 19:21:07 -0600 Subject: [PATCH 2/6] up --- CHANGELOG.md | 2 +- contracts/governance/utils/Votes.sol | 2 +- contracts/metatx/ERC2771Forwarder.sol | 2 +- contracts/mocks/EIP712Verifier.sol | 2 +- contracts/mocks/docs/token/ERC721/GameItem.sol | 2 +- contracts/mocks/docs/utilities/Base64NFT.sol | 2 +- contracts/mocks/token/ERC20VotesTimestampMock.sol | 2 +- contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol | 2 +- contracts/mocks/token/ERC721ConsecutiveMock.sol | 2 +- contracts/mocks/token/ERC721URIStorageMock.sol | 2 +- contracts/mocks/utils/cryptography/ERC7739Mock.sol | 2 +- contracts/token/ERC20/extensions/ERC20Permit.sol | 2 +- contracts/token/ERC721/ERC721.sol | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 119d083848b..ab9eda8c491 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ### Breaking changes -pdate minimum pragma to 0.8.24 in `SignatureChecker`, `Governor`, Governor's extensions, `Strings`, `ERC1155URIStorage`, `MessageHashUtils`, `ERC721URIStorage`, `ERC721Votes`, `ERC721Wrapper`, `ERC721Burnable`, `ERC721Consecutive`, `ERC721Enumerable`, `ERC721Pausable`, `EIP712` and `ERC7739`. ([#5716](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5716)), ([#5680](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5680)) +- Update minimum pragma to 0.8.24 in `SignatureChecker`, `Governor`, Governor's extensions, `Votes`, `Strings`, `ERC1155URIStorage`, `MessageHashUtils`, `ERC721URIStorage`, `ERC721Votes`, `ERC721Wrapper`, `ERC721Burnable`, `ERC721Consecutive`, `ERC721Enumerable`, `ERC721Pausable`, `EIP712` and `ERC7739`. ([#5716](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5716)), ([#5680](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5680)) ## 5.3.0 (2025-04-09) diff --git a/contracts/governance/utils/Votes.sol b/contracts/governance/utils/Votes.sol index f5994f2bdf8..02c68d028c0 100644 --- a/contracts/governance/utils/Votes.sol +++ b/contracts/governance/utils/Votes.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.2.0) (governance/utils/Votes.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {IERC5805} from "../../interfaces/IERC5805.sol"; import {Context} from "../../utils/Context.sol"; diff --git a/contracts/metatx/ERC2771Forwarder.sol b/contracts/metatx/ERC2771Forwarder.sol index a463e70e019..50cce6ee16f 100644 --- a/contracts/metatx/ERC2771Forwarder.sol +++ b/contracts/metatx/ERC2771Forwarder.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.3.0) (metatx/ERC2771Forwarder.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC2771Context} from "./ERC2771Context.sol"; import {ECDSA} from "../utils/cryptography/ECDSA.sol"; diff --git a/contracts/mocks/EIP712Verifier.sol b/contracts/mocks/EIP712Verifier.sol index fe32a2189ed..60787a3ed69 100644 --- a/contracts/mocks/EIP712Verifier.sol +++ b/contracts/mocks/EIP712Verifier.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ECDSA} from "../utils/cryptography/ECDSA.sol"; import {EIP712} from "../utils/cryptography/EIP712.sol"; diff --git a/contracts/mocks/docs/token/ERC721/GameItem.sol b/contracts/mocks/docs/token/ERC721/GameItem.sol index b7f576f1000..182e1919eea 100644 --- a/contracts/mocks/docs/token/ERC721/GameItem.sol +++ b/contracts/mocks/docs/token/ERC721/GameItem.sol @@ -1,6 +1,6 @@ // contracts/GameItem.sol // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721URIStorage, ERC721} from "../../../../token/ERC721/extensions/ERC721URIStorage.sol"; diff --git a/contracts/mocks/docs/utilities/Base64NFT.sol b/contracts/mocks/docs/utilities/Base64NFT.sol index 1fb66234310..057e93a4cef 100644 --- a/contracts/mocks/docs/utilities/Base64NFT.sol +++ b/contracts/mocks/docs/utilities/Base64NFT.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721} from "../../../token/ERC721/ERC721.sol"; import {Strings} from "../../../utils/Strings.sol"; diff --git a/contracts/mocks/token/ERC20VotesTimestampMock.sol b/contracts/mocks/token/ERC20VotesTimestampMock.sol index 78fdfae9c09..bebdef82184 100644 --- a/contracts/mocks/token/ERC20VotesTimestampMock.sol +++ b/contracts/mocks/token/ERC20VotesTimestampMock.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC20Votes} from "../../token/ERC20/extensions/ERC20Votes.sol"; import {ERC721Votes} from "../../token/ERC721/extensions/ERC721Votes.sol"; diff --git a/contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol b/contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol index 7732ae4a5d7..77fd8f66b13 100644 --- a/contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol +++ b/contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721} from "../../token/ERC721/ERC721.sol"; import {ERC721Consecutive} from "../../token/ERC721/extensions/ERC721Consecutive.sol"; diff --git a/contracts/mocks/token/ERC721ConsecutiveMock.sol b/contracts/mocks/token/ERC721ConsecutiveMock.sol index 10986471893..005a5ad6097 100644 --- a/contracts/mocks/token/ERC721ConsecutiveMock.sol +++ b/contracts/mocks/token/ERC721ConsecutiveMock.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721} from "../../token/ERC721/ERC721.sol"; import {ERC721Consecutive} from "../../token/ERC721/extensions/ERC721Consecutive.sol"; diff --git a/contracts/mocks/token/ERC721URIStorageMock.sol b/contracts/mocks/token/ERC721URIStorageMock.sol index 254435e07a8..e574fe12e02 100644 --- a/contracts/mocks/token/ERC721URIStorageMock.sol +++ b/contracts/mocks/token/ERC721URIStorageMock.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721URIStorage} from "../../token/ERC721/extensions/ERC721URIStorage.sol"; diff --git a/contracts/mocks/utils/cryptography/ERC7739Mock.sol b/contracts/mocks/utils/cryptography/ERC7739Mock.sol index 9f9cbbb8224..0a01c6c3a7f 100644 --- a/contracts/mocks/utils/cryptography/ERC7739Mock.sol +++ b/contracts/mocks/utils/cryptography/ERC7739Mock.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ECDSA} from "../../../utils/cryptography/ECDSA.sol"; import {EIP712} from "../../../utils/cryptography/EIP712.sol"; diff --git a/contracts/token/ERC20/extensions/ERC20Permit.sol b/contracts/token/ERC20/extensions/ERC20Permit.sol index d593191966a..974946ea89f 100644 --- a/contracts/token/ERC20/extensions/ERC20Permit.sol +++ b/contracts/token/ERC20/extensions/ERC20Permit.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/ERC20Permit.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {IERC20Permit} from "./IERC20Permit.sol"; import {ERC20} from "../ERC20.sol"; diff --git a/contracts/token/ERC721/ERC721.sol b/contracts/token/ERC721/ERC721.sol index a757e9b05c4..9e58bbe6ed3 100644 --- a/contracts/token/ERC721/ERC721.sol +++ b/contracts/token/ERC721/ERC721.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/ERC721.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {IERC721} from "./IERC721.sol"; import {IERC721Metadata} from "./extensions/IERC721Metadata.sol"; From ef6cfba2a2bcc30f6fc5105eafc1b8efdbf3a659 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Sun, 8 Jun 2025 19:35:20 -0600 Subject: [PATCH 3/6] up --- CHANGELOG.md | 2 +- contracts/governance/utils/VotesExtended.sol | 2 +- contracts/mocks/VotesExtendedMock.sol | 2 +- contracts/mocks/VotesMock.sol | 2 +- contracts/mocks/docs/MyNFT.sol | 2 +- contracts/mocks/docs/governance/MyToken.sol | 2 +- contracts/mocks/docs/governance/MyTokenTimestampBased.sol | 2 +- contracts/mocks/docs/governance/MyTokenWrapped.sol | 2 +- contracts/mocks/token/ERC20VotesAdditionalCheckpointsMock.sol | 2 +- contracts/mocks/token/ERC20VotesLegacyMock.sol | 2 +- contracts/token/ERC20/extensions/ERC20Votes.sol | 2 +- contracts/token/ERC721/extensions/ERC721Royalty.sol | 2 +- contracts/token/ERC721/extensions/ERC721Wrapper.sol | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab9eda8c491..4db83783f86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ### Breaking changes -- Update minimum pragma to 0.8.24 in `SignatureChecker`, `Governor`, Governor's extensions, `Votes`, `Strings`, `ERC1155URIStorage`, `MessageHashUtils`, `ERC721URIStorage`, `ERC721Votes`, `ERC721Wrapper`, `ERC721Burnable`, `ERC721Consecutive`, `ERC721Enumerable`, `ERC721Pausable`, `EIP712` and `ERC7739`. ([#5716](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5716)), ([#5680](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5680)) +- Update minimum pragma to 0.8.24 in `SignatureChecker`, `Votes`, `VotesExtended`, `ERC20Votes`, `Strings`, `ERC1155URIStorage`, `MessageHashUtils`, `ERC721URIStorage`, `ERC721Votes`, `ERC721Wrapper`, `ERC721Burnable`, `ERC721Consecutive`, `ERC721Enumerable`, `ERC721Pausable`, `ERC721Royalty`, `ERC721Wrapper`, `EIP712`, `ERC7739`, `Governor` and its extensions. ([#5716](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5716)), ([#5680](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5680)) ## 5.3.0 (2025-04-09) diff --git a/contracts/governance/utils/VotesExtended.sol b/contracts/governance/utils/VotesExtended.sol index 5b6732038ae..929053c3f17 100644 --- a/contracts/governance/utils/VotesExtended.sol +++ b/contracts/governance/utils/VotesExtended.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.2.0) (governance/utils/VotesExtended.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Checkpoints} from "../../utils/structs/Checkpoints.sol"; import {Votes} from "./Votes.sol"; diff --git a/contracts/mocks/VotesExtendedMock.sol b/contracts/mocks/VotesExtendedMock.sol index 9c456190e97..e9c11da5492 100644 --- a/contracts/mocks/VotesExtendedMock.sol +++ b/contracts/mocks/VotesExtendedMock.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {VotesExtended} from "../governance/utils/VotesExtended.sol"; diff --git a/contracts/mocks/VotesMock.sol b/contracts/mocks/VotesMock.sol index e28d6b557eb..afef5ab7cf0 100644 --- a/contracts/mocks/VotesMock.sol +++ b/contracts/mocks/VotesMock.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {Votes} from "../governance/utils/Votes.sol"; diff --git a/contracts/mocks/docs/MyNFT.sol b/contracts/mocks/docs/MyNFT.sol index 1a442fa0aad..b6d982eee69 100644 --- a/contracts/mocks/docs/MyNFT.sol +++ b/contracts/mocks/docs/MyNFT.sol @@ -1,6 +1,6 @@ // contracts/MyNFT.sol // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721} from "../../token/ERC721/ERC721.sol"; diff --git a/contracts/mocks/docs/governance/MyToken.sol b/contracts/mocks/docs/governance/MyToken.sol index cfb16755760..7fceb57c494 100644 --- a/contracts/mocks/docs/governance/MyToken.sol +++ b/contracts/mocks/docs/governance/MyToken.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC20} from "../../../token/ERC20/ERC20.sol"; import {ERC20Permit} from "../../../token/ERC20/extensions/ERC20Permit.sol"; diff --git a/contracts/mocks/docs/governance/MyTokenTimestampBased.sol b/contracts/mocks/docs/governance/MyTokenTimestampBased.sol index 7c0d3295659..60f206414c5 100644 --- a/contracts/mocks/docs/governance/MyTokenTimestampBased.sol +++ b/contracts/mocks/docs/governance/MyTokenTimestampBased.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC20} from "../../../token/ERC20/ERC20.sol"; import {ERC20Permit} from "../../../token/ERC20/extensions/ERC20Permit.sol"; diff --git a/contracts/mocks/docs/governance/MyTokenWrapped.sol b/contracts/mocks/docs/governance/MyTokenWrapped.sol index c9d567dc521..8a6b3361096 100644 --- a/contracts/mocks/docs/governance/MyTokenWrapped.sol +++ b/contracts/mocks/docs/governance/MyTokenWrapped.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {IERC20, ERC20} from "../../../token/ERC20/ERC20.sol"; import {ERC20Permit} from "../../../token/ERC20/extensions/ERC20Permit.sol"; diff --git a/contracts/mocks/token/ERC20VotesAdditionalCheckpointsMock.sol b/contracts/mocks/token/ERC20VotesAdditionalCheckpointsMock.sol index 39b3c654b17..e965b17bd87 100644 --- a/contracts/mocks/token/ERC20VotesAdditionalCheckpointsMock.sol +++ b/contracts/mocks/token/ERC20VotesAdditionalCheckpointsMock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC20Votes} from "../../token/ERC20/extensions/ERC20Votes.sol"; import {VotesExtended, Votes} from "../../governance/utils/VotesExtended.sol"; diff --git a/contracts/mocks/token/ERC20VotesLegacyMock.sol b/contracts/mocks/token/ERC20VotesLegacyMock.sol index 3246fd42ea9..e8ae0c4bf69 100644 --- a/contracts/mocks/token/ERC20VotesLegacyMock.sol +++ b/contracts/mocks/token/ERC20VotesLegacyMock.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC20Permit} from "../../token/ERC20/extensions/ERC20Permit.sol"; import {Math} from "../../utils/math/Math.sol"; diff --git a/contracts/token/ERC20/extensions/ERC20Votes.sol b/contracts/token/ERC20/extensions/ERC20Votes.sol index c15e7f56885..1dc9e91b96d 100644 --- a/contracts/token/ERC20/extensions/ERC20Votes.sol +++ b/contracts/token/ERC20/extensions/ERC20Votes.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/ERC20Votes.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC20} from "../ERC20.sol"; import {Votes} from "../../../governance/utils/Votes.sol"; diff --git a/contracts/token/ERC721/extensions/ERC721Royalty.sol b/contracts/token/ERC721/extensions/ERC721Royalty.sol index c3b9dd6278d..aa78a19c3bc 100644 --- a/contracts/token/ERC721/extensions/ERC721Royalty.sol +++ b/contracts/token/ERC721/extensions/ERC721Royalty.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Royalty.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {ERC721} from "../ERC721.sol"; import {IERC165} from "../../../utils/introspection/ERC165.sol"; diff --git a/contracts/token/ERC721/extensions/ERC721Wrapper.sol b/contracts/token/ERC721/extensions/ERC721Wrapper.sol index 111136bbe77..f7b9c6cc2cb 100644 --- a/contracts/token/ERC721/extensions/ERC721Wrapper.sol +++ b/contracts/token/ERC721/extensions/ERC721Wrapper.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Wrapper.sol) -pragma solidity ^0.8.20; +pragma solidity ^0.8.24; import {IERC721, ERC721} from "../ERC721.sol"; import {IERC721Receiver} from "../IERC721Receiver.sol"; From cd71f34bf11e8339edc753bf3a507d1d2ef0c4b9 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 9 Jun 2025 09:48:12 -0600 Subject: [PATCH 4/6] Add equal to Bytes.sol --- .changeset/khaki-hats-leave.md | 5 +++++ contracts/utils/Bytes.sol | 7 +++++++ contracts/utils/Strings.sol | 3 ++- test/utils/Bytes.t.sol | 10 ++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 .changeset/khaki-hats-leave.md create mode 100644 test/utils/Bytes.t.sol diff --git a/.changeset/khaki-hats-leave.md b/.changeset/khaki-hats-leave.md new file mode 100644 index 00000000000..021df0ff083 --- /dev/null +++ b/.changeset/khaki-hats-leave.md @@ -0,0 +1,5 @@ +--- +'openzeppelin-solidity': minor +--- + +`Bytes`: Add a `nibbles` function to split each byte into two nibbles. diff --git a/contracts/utils/Bytes.sol b/contracts/utils/Bytes.sol index 1234b845513..f8c3fb2ebfa 100644 --- a/contracts/utils/Bytes.sol +++ b/contracts/utils/Bytes.sol @@ -99,6 +99,13 @@ library Bytes { return result; } + /** + * @dev Returns true if the two byte buffers are equal. + */ + function equal(bytes memory a, bytes memory b) internal pure returns (bool) { + return a.length == b.length && keccak256(a) == keccak256(b); + } + /** * @dev Reads a bytes32 from a bytes array without bounds checking. * diff --git a/contracts/utils/Strings.sol b/contracts/utils/Strings.sol index fff135cec3d..1b779f4aae5 100644 --- a/contracts/utils/Strings.sol +++ b/contracts/utils/Strings.sol @@ -6,6 +6,7 @@ pragma solidity ^0.8.24; import {Math} from "./math/Math.sol"; import {SafeCast} from "./math/SafeCast.sol"; import {SignedMath} from "./math/SignedMath.sol"; +import {Bytes} from "./Bytes.sol"; /** * @dev String operations. @@ -132,7 +133,7 @@ library Strings { * @dev Returns true if the two strings are equal. */ function equal(string memory a, string memory b) internal pure returns (bool) { - return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b)); + return Bytes.equal(bytes(a), bytes(b)); } /** diff --git a/test/utils/Bytes.t.sol b/test/utils/Bytes.t.sol new file mode 100644 index 00000000000..86fc63e92ea --- /dev/null +++ b/test/utils/Bytes.t.sol @@ -0,0 +1,10 @@ +pragma solidity ^0.8.20; + +import {Test} from "forge-std/Test.sol"; +import {Bytes} from "@openzeppelin/contracts/utils/Bytes.sol"; + +contract BytesTest is Test { + function testSymbolicEqual(bytes memory a, bytes memory b) public pure { + assertEq(Bytes.equal(a, b), Bytes.equal(a, b)); + } +} From e2af1a109e1e369abc167966de8cf16d1a01ff9a Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 9 Jun 2025 10:31:41 -0600 Subject: [PATCH 5/6] Review --- test/utils/Bytes.t.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/utils/Bytes.t.sol b/test/utils/Bytes.t.sol index 86fc63e92ea..8628167553f 100644 --- a/test/utils/Bytes.t.sol +++ b/test/utils/Bytes.t.sol @@ -4,7 +4,7 @@ import {Test} from "forge-std/Test.sol"; import {Bytes} from "@openzeppelin/contracts/utils/Bytes.sol"; contract BytesTest is Test { - function testSymbolicEqual(bytes memory a, bytes memory b) public pure { - assertEq(Bytes.equal(a, b), Bytes.equal(a, b)); + function testSymbolicEqual(bytes memory a) public pure { + assertTrue(Bytes.equal(a, a)); } } From af197189efd258ceea3fff73626446189ede3944 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Mon, 9 Jun 2025 10:33:10 -0600 Subject: [PATCH 6/6] Replace changeset --- .changeset/khaki-hats-leave.md | 5 ----- .changeset/ten-steaks-try.md | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 .changeset/khaki-hats-leave.md create mode 100644 .changeset/ten-steaks-try.md diff --git a/.changeset/khaki-hats-leave.md b/.changeset/khaki-hats-leave.md deleted file mode 100644 index 021df0ff083..00000000000 --- a/.changeset/khaki-hats-leave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'openzeppelin-solidity': minor ---- - -`Bytes`: Add a `nibbles` function to split each byte into two nibbles. diff --git a/.changeset/ten-steaks-try.md b/.changeset/ten-steaks-try.md new file mode 100644 index 00000000000..a734f5fdb45 --- /dev/null +++ b/.changeset/ten-steaks-try.md @@ -0,0 +1,5 @@ +--- +'openzeppelin-solidity': minor +--- + +`Bytes`: Add an `equal` function to compare byte buffers.