@openzeppelin/contracts
Advanced tools
Changelog
4.3.2 (2021-09-14)
UUPSUpgradeable
: Add modifiers to prevent upgradeTo
and upgradeToAndCall
being executed on any contract that is not the active ERC1967 proxy. This prevents these functions being called on implementation contracts or minimal ERC1167 clones, in particular.Changelog
4.3.0 (2021-08-17)
ERC2771Context
: use private variable from storage to store the forwarder address. Fixes issues where _msgSender()
was not callable from constructors. (#2754)EnumerableSet
: add values()
functions that returns an array containing all values in a single call. (#2768)Governor
: added a modular system of Governor
contracts based on GovernorAlpha
and GovernorBravo
. (#2672)interfaces
folder containing solidity interfaces to final ERCs. (#2517)ECDSA
: add tryRecover
functions that will not throw if the signature is invalid, and will return an error flag instead. (#2661)SignatureChecker
: Reduce gas usage of the isValidSignatureNow
function for the "signature by EOA" case. (#2661)Changelog
4.2.0 (2021-06-30)
ERC20Votes
: add a new extension of the ERC20
token with support for voting snapshots and delegation. (#2632)ERC20VotesComp
: Variant of ERC20Votes
that is compatible with Compound's Comp
token interface but restricts supply to uint96
. (#2706)ERC20Wrapper
: add a new extension of the ERC20
token which wraps an underlying token. Deposit and withdraw guarantee that the total supply is backed by a corresponding amount of underlying token. (#2633)EnumerableSet
and EnumerableMap
.EnumerableSet
and EnumerableMap
.Counter
: add a reset method. (#2678)unchecked
blocks.Math
: Add a ceilDiv
method for performing ceiling division.ERC1155Supply
: add a new ERC1155
extension that keeps track of the totalSupply of each tokenId. (#2593)BitMaps
: add a new BitMaps
library that provides a storage efficient datastructure for uint256
to bool
mapping with contiguous keys. (#2710)ERC20FlashMint
is no longer a Draft ERC. (#2673))How to update: Change your import paths by removing the draft-
prefix from @openzeppelin/contracts/token/ERC20/extensions/draft-ERC20FlashMint.sol
.
Changelog
4.1.0 (2021-04-29)
IERC20Metadata
: add a new extended interface that includes the optional name()
, symbol()
and decimals()
functions. (#2561)ERC777
: make reception acquirement optional in _mint
. (#2552)ERC20Permit
: add a _useNonce
to enable further usage of ERC712 signatures. (#2565)ERC20FlashMint
: add an implementation of the ERC3156 extension for flash-minting ERC20 tokens. (#2543)SignatureChecker
: add a signature verification library that supports both EOA and ERC1271 compliant contracts as signers. (#2532)Multicall
: add abstract contract with multicall(bytes[] calldata data)
function to bundle multiple calls together (#2608)ECDSA
: add support for ERC2098 short-signatures. (#2582)AccessControl
: add an onlyRole
modifier to restrict specific function to callers bearing a specific role. (#2609)StorageSlot
: add a library for reading and writing primitive types to specific storage slots. (#2542)UUPSUpgradeable
to implement the UUPS proxy pattern together with EIP1967Proxy
. (#2542)This release includes two small breaking changes in TimelockController
.
onlyRole
modifier in this contract was designed to let anyone through if the role was granted to address(0)
,
allowing the possibility to make a role "open", which can be used for EXECUTOR_ROLE
. This modifier is now
replaced by AccessControl.onlyRole
, which does not have this ability. The previous behavior was moved to the
modifier TimelockController.onlyRoleOrOpenRole
.PROPOSER_ROLE
an open role (as described in the previous item) if it was granted to
address(0)
. This would affect the schedule
, scheduleBatch
, and cancel
operations in TimelockController
.
This ability was removed as it does not make sense to open up the PROPOSER_ROLE
in the same way that it does for
EXECUTOR_ROLE
.