Procházet zdrojové kódy

Add note about `SafeMath.sol` remaining functions moved to `Math.sol` (#4676)

(cherry picked from commit faa83c693ad6a7d389d16eabcbea1a8d137242b3)
Signed-off-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Ernesto García před 2 roky
rodič
revize
a34d986eca
1 změnil soubory, kde provedl 28 přidání a 7 odebrání
  1. 28 7
      CHANGELOG.md

+ 28 - 7
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()