v4.0.0
Read the full announcement in the blog or check out the changelog.
Note: Upgradeable contracts using OpenZeppelin Contracts 3.x cannot upgrade to 4.x.
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_msgDatareturnbytes calldatainstead ofbytes memory(#2492)ERC20: removed the_setDecimalsfunction and the storage slot associated to decimals. (#2502)Strings: addition of atoHexStringfunction. (#2504)EnumerableMap: change implementation to optimize forkey → valuelookups 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 theERC165Storageextension. (#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 theERC721Enumerableextension. (#2511)AccessControl: removed enumerability by default for a more lightweight contract. It is now opt-in throughAccessControlEnumerable. (#2512)- Meta Transactions: add
ERC2771Contextand aMinimalForwarderfor 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
UpgradeableProxytoERC1967Proxy. (#2547) ERC777: optimize the gas costs of the constructor. (#2551)ERC721URIStorage: add a new extension that implements the_setTokenURIbehavior as it was available in 3.4.0. (#2555)AccessControl: added ERC165 interface detection. (#2562)ERC1155: makeuripublic so overloading function can call it using super. (#2576)