v4.0.0
版本发布时间: 2021-03-25 07:07:08
OpenZeppelin/openzeppelin-contracts最新发布版本:v5.1.0-rc.0(2024-10-03 22:56:46)
Read the full announcement in the blog or check out the changelog.
Changelog
- Now targeting the 0.8.x line of Solidity compilers. For 0.6.x (resp 0.7.x) support, use version 3.4.0 (resp 3.4.0-solc-0.7) of OpenZeppelin.
-
Context
: making_msgData
returnbytes calldata
instead ofbytes memory
(#2492) -
ERC20
: removed the_setDecimals
function and the storage slot associated to decimals. (#2502) -
Strings
: addition of atoHexString
function. (#2504) -
EnumerableMap
: change implementation to optimize forkey → value
lookups instead of enumeration. (#2518) -
GSN
: deprecate GSNv1 support in favor of upcoming support for GSNv2. (#2521) -
ERC165
: remove uses of storage in the base ERC165 implementation. ERC165 based contracts now use storage-less virtual functions. Old behavior remains available in theERC165Storage
extension. (#2505) -
Initializable
: make initializer check stricter during construction. (#2531) -
ERC721
: remove enumerability of tokens from the base implementation. This feature is now provided separately through theERC721Enumerable
extension. (#2511) -
AccessControl
: removed enumerability by default for a more lightweight contract. It is now opt-in throughAccessControlEnumerable
. (#2512) - Meta Transactions: add
ERC2771Context
and aMinimalForwarder
for meta-transactions. (#2508) - Overall reorganization of the contract folder to improve clarity and discoverability. (#2503)
-
ERC20Capped
: optimize gas usage by enforcing the check directly in_mint
. (#2524) - Rename
UpgradeableProxy
toERC1967Proxy
. (#2547) -
ERC777
: optimize the gas costs of the constructor. (#2551) -
ERC721URIStorage
: add a new extension that implements the_setTokenURI
behavior as it was available in 3.4.0. (#2555) -
AccessControl
: added ERC165 interface detection. (#2562) -
ERC1155
: makeuri
public so overloading function can call it using super. (#2576)
How to upgrade from 3.x
Since this version has moved a few contracts to different directories, users upgrading from a previous version will need to adjust their import statements. To make this easier, the package includes a script that will migrate import statements automatically. After upgrading to the latest version of the package, run:
npx openzeppelin-contracts-migrate-imports
Make sure you're using git or another version control system to be able to recover from any potential error in our script.