It’s time for a new release candidate! Pay special attention to the new features in the proxy category and check them out to provide feedback before the release a week from now.
This release candidate comes with a deep refactoring of the proxy contract. This includes the new
UUPSUpgradeable contract which implementations can inherit from to enable, in conjonction with the
ERC1967Proxy, the UUPS upgrade mechanism.
A new version of the openzeppelin upgrades plugin will be launched together with contracts 4.1 with support of this new flavor of Proxies.
A new extension is available for the ERC20 family of contracts. The extension implements a flash-minting mechanism following the ERC3156 interface.
Add an abstract contract with
multicall(bytes calldata data) function to bundle multiple calls together. This pattern, already used by ENS resolvers and the upcoming UniswapV3 allows anyone, including EOA, to submit batchs of transactions to contracts that inherit from it. Note that for security reason, payable functions are not supported.
This release includes two additions to the cryptography tooling:
ECDSAlibrary now supports ERC2098 short-signatures.
SignatureChecker, a new signature verification library that supports both EOA and ERC1271 compliant contracts as signers.
IERC20Metadata: add a new extended to the
IERC20interface that includes the optional
ERC777: make reception acquirement optional in
ERC20Permit: add a
_useNonceto enable further usage of ERC712 signatures.
StorageSlot: add a library for reading and writing primitive types to specific storage slots.
AccessControl: add a
onlyRolemodifier to restrict specific function to callers bearing a specific role.
This very last feature comes some minor breaking changes to the
TimelockController. See the release changelog for more information.