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.
UUPS
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.
FlashMint
A new extension is available for the ERC20 family of contracts. The extension implements a flash-minting mechanism following the ERC3156 interface.
Multicall
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.
Cryptography
This release includes two additions to the cryptography tooling:
-
The
ECDSA
library now supports ERC2098 short-signatures. -
Addition of
SignatureChecker
, a new signature verification library that supports both EOA and ERC1271 compliant contracts as signers.
Other Changes
-
IERC20Metadata
: add a new extended to theIERC20
interface that includes the optionalname()
,symbol()
anddecimals()
functions. -
ERC777
: make reception acquirement optional in_mint
. -
ERC20Permit
: add a_useNonce
to enable further usage of ERC712 signatures. -
StorageSlot
: add a library for reading and writing primitive types to specific storage slots. -
AccessControl
: add aonlyRole
modifier 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.