OpenZeppelin Contracts 3.4 is around the corner!
Here are the changelog entries.
Security Fixes
-
ERC777
: fix potential reentrancy issues for custom extensions toERC777
. (#2483)
If you’re using our implementation of ERC777 from version 3.3.0 or earlier, and you define a custom _beforeTokenTransfer
function that writes to a storage variable, you may be vulnerable to a reentrancy attack. If you’re affected and would like assistance please write to security@openzeppelin.com. Read more in the pull request.
Other Changes
-
BeaconProxy
: added new kind of proxy that allows simultaneous atomic upgrades. (#2411) -
EIP712
: added helpers to verify EIP712 typed data signatures on chain. (#2418) -
ERC20Permit
: added an implementation of the ERC20 permit extension for gasless token approvals. (#2237) - Presets: added token presets with preminted fixed supply
ERC20PresetFixedSupply
andERC777PresetFixedSupply
. (#2399) -
Address
: addedfunctionDelegateCall
, similar to the existingfunctionCall
. (#2333) -
Clones
: added a library for deploying EIP 1167 minimal proxies. (#2449) -
Context
: moved fromcontracts/GSN
tocontracts/utils
. (#2453) -
PaymentSplitter
: replace usage of.transfer()
withAddress.sendValue
for improved compatibility with smart wallets. (#2455) -
UpgradeableProxy
: bubble revert reasons from initialization calls. (#2454) -
SafeMath
: fix a memory allocation issue by adding newSafeMath.tryOp(uint,uint)→(bool,uint)
functions.SafeMath.op(uint,uint,string)→uint
are now deprecated. (#2462) -
EnumerableMap
: fix a memory allocation issue by adding newEnumerableMap.tryGet(uint)→(bool,address)
functions.EnumerableMap.get(uint)→string
is now deprecated. (#2462) -
ERC165Checker
: added batchgetSupportedInterfaces
. (#2469) -
RefundEscrow
:beneficiaryWithdraw
will forward all available gas to the beneficiary. (#2480) - Many view and pure functions have been made virtual to customize them via overrides. In many cases this will not imply that other functions in the contract will automatically adapt to the overridden definitions. People who wish to override should consult the source code to understand the impact and if they need to override any additional functions to achieve the desired behavior.
The upgradeable and solc-0.7 variants will be released together with the final release at the end of the release candidate period in about a week.