diff --git a/CHANGELOG.md b/CHANGELOG.md index 1616a537998..249eb76a478 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,20 +7,20 @@ The following contracts and libraries were added: - `AccessManager`: A consolidated system for managing access control in complex systems. - - `AccessManaged`: A module for connecting a contract to an authority in charge of its access control. - - `GovernorTimelockAccess`: An adapter for time-locking governance proposals using an `AccessManager`. - - `AuthorityUtils`: A library of utilities for interacting with authority contracts. + - `AccessManaged`: A module for connecting a contract to an authority in charge of its access control. + - `GovernorTimelockAccess`: An adapter for time-locking governance proposals using an `AccessManager`. + - `AuthorityUtils`: A library of utilities for interacting with authority contracts. - `GovernorStorage`: A Governor module that stores proposal details in storage. - `ERC2771Forwarder`: An ERC2771 forwarder for meta transactions. - `ERC1967Utils`: A library with ERC1967 events, errors and getters. - `Nonces`: An abstraction for managing account nonces. - `MessageHashUtils`: A library for producing digests for ECDSA operations. -- `Time`: A library with helpers for manipulating time-related objects. +- `Time`: A library with helpers for manipulating time-related objects. ### Removals Summary The following contracts, libraries, and functions were removed: - + - `Address.isContract` (because of its ambiguous nature and potential for misuse) - `Checkpoints.History` - `Counters` @@ -127,7 +127,7 @@ These removals were implemented in the following PRs: [#3637](https://github.com - `ERC1155`: Removed check for address zero in `balanceOf`. ([#4263](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4263)) - `ERC1155`: Optimized array accesses by skipping bounds checking when unnecessary. ([#4300](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4300)) - `ERC1155`: Bubble errors triggered in the `onERC1155Received` and `onERC1155BatchReceived` hooks. ([#4314](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4314)) -- `ERC1155Supply`: Added a `totalSupply()` function that returns the total amount of token circulating, this change will restrict the total tokens minted across all ids to 2**256-1 . ([#3962](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3962)) +- `ERC1155Supply`: Added a `totalSupply()` function that returns the total amount of token circulating, this change will restrict the total tokens minted across all ids to 2\*\*256-1 . ([#3962](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3962)) - `ERC1155Receiver`: Removed in favor of `ERC1155Holder`. ([#4450](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4450)) #### Utils @@ -194,6 +194,27 @@ function supportsInterface(bytes4 interfaceId) public view virtual override retu } ``` +#### SafeMath + +Methods in SafeMath superseded by native overflow checks in Solidity 0.8.0 were removed along with operations providing an interface for revert strings. The remaining methods were moved to `utils/Math.sol`. + +```diff +- import "@openzeppelin/contracts/utils/math/SafeMath.sol"; ++ import "@openzeppelin/contracts/utils/math/Math.sol"; + + function tryOperations(uint256 x, uint256 y) external view { +- (bool overflowsAdd, uint256 resultAdd) = SafeMath.tryAdd(x, y); ++ (bool overflowsAdd, uint256 resultAdd) = Math.tryAdd(x, y); +- (bool overflowsSub, uint256 resultSub) = SafeMath.trySub(x, y); ++ (bool overflowsSub, uint256 resultSub) = Math.trySub(x, y); +- (bool overflowsMul, uint256 resultMul) = SafeMath.tryMul(x, y); ++ (bool overflowsMul, uint256 resultMul) = Math.tryMul(x, y); +- (bool overflowsDiv, uint256 resultDiv) = SafeMath.tryDiv(x, y); ++ (bool overflowsDiv, uint256 resultDiv) = Math.tryDiv(x, y); + // ... + } +``` + #### Adapting Governor modules Custom Governor modules that override internal functions may require modifications if migrated to v5. In particular, the new internal functions `_queueOperations` and `_executeOperations` may need to be used. If assistance with this migration is needed reach out via the [OpenZeppelin Support Forum](https://forum.openzeppelin.com/c/support/contracts/18). @@ -209,7 +230,7 @@ The `ECDSA` library is now focused on signer recovery. Previously it also includ contract Verifier { using ECDSA for bytes32; + using MessageHashUtils for bytes32; - + function _verify(bytes32 data, bytes memory signature, address account) internal pure returns (bool) { return data .toEthSignedMessageHash()