Skip to content

[Snyk] Upgrade @openzeppelin/contracts from 4.5.0 to 4.6.0#4

Open
snyk-bot wants to merge 1 commit into
masterfrom
snyk-upgrade-7e3f1b4bdf651b32b1f01acc1e4dc593
Open

[Snyk] Upgrade @openzeppelin/contracts from 4.5.0 to 4.6.0#4
snyk-bot wants to merge 1 commit into
masterfrom
snyk-upgrade-7e3f1b4bdf651b32b1f01acc1e4dc593

Conversation

@snyk-bot
Copy link
Copy Markdown
Contributor

Snyk has created this PR to upgrade @openzeppelin/contracts from 4.5.0 to 4.6.0.

merge advice
ℹ️ Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.


  • The recommended version is 2 versions ahead of your current version.
  • The recommended version was released 2 months ago, on 2022-04-26.
Release notes
Package name: @openzeppelin/contracts
  • 4.6.0 - 2022-04-26
    • crosschain: Add a new set of contracts for cross-chain applications. CrossChainEnabled is a base contract with instantiations for several chains and bridges, and AccessControlCrossChain is an extension of access control that allows cross-chain operation. (#3183)
    • AccessControl: add a virtual _checkRole(bytes32) function that can be overridden to alter the onlyRole modifier behavior. (#3137)
    • EnumerableMap: add new AddressToUintMap map type. (#3150)
    • EnumerableMap: add new Bytes32ToBytes32Map map type. (#3192)
    • ERC20FlashMint: support infinite allowance when paying back a flash loan. (#3226)
    • ERC20Wrapper: the decimals() function now tries to fetch the value from the underlying token instance. If that calls revert, then the default value is used. (#3259)
    • draft-ERC20Permit: replace immutable with constant for _PERMIT_TYPEHASH since the keccak256 of string literals is treated specially and the hash is evaluated at compile time. (#3196)
    • ERC1155: Add a _afterTokenTransfer hook for improved extensibility. (#3166)
    • ERC1155URIStorage: add a new extension that implements a _setURI behavior similar to ERC721's _setTokenURI. (#3210)
    • DoubleEndedQueue: a new data structure that supports efficient push and pop to both front and back, useful for FIFO and LIFO queues. (#3153)
    • Governor: improved security of onlyGovernance modifier when using an external executor contract (e.g. a timelock) that can operate without necessarily going through the governance protocol. (#3147)
    • Governor: Add a way to parameterize votes. This can be used to implement voting systems such as fractionalized voting, ERC721 based voting, or any number of other systems. The params argument added to _countVote method, and included in the newly added _getVotes method, can be used by counting and voting modules respectively for such purposes. (#3043)
    • Governor: rewording of revert reason for consistency. (#3275)
    • Governor: fix an inconsistency in data locations that could lead to invalid bytecode being produced. (#3295)
    • Governor: Implement IERC721Receiver and IERC1155Receiver to improve token custody by governors. (#3230)
    • TimelockController: Implement IERC721Receiver and IERC1155Receiver to improve token custody by timelocks. (#3230)
    • TimelockController: Add a separate canceller role for the ability to cancel. (#3165)
    • Initializable: add a reinitializer modifier that enables the initialization of new modules, added to already initialized contracts through upgradeability. (#3232)
    • Initializable: add an Initialized event that tracks initialized version numbers. (#3294)
    • ERC2981: make royaltiInfo public to allow super call in overrides. (#3305)

    Upgradeability notice

    • TimelockController: (Action needed) The upgrade from <4.6 to >=4.6 introduces a new CANCELLER_ROLE that requires set up to be assignable. After the upgrade, only addresses with this role will have the ability to cancel. Proposers will no longer be able to cancel. Assigning cancellers can be done by an admin (including the timelock itself) once the role admin is set up. To do this, we recommend upgrading to the TimelockControllerWith46MigrationUpgradeable contract and then calling the migrateTo46 function.

    Breaking changes

    • Governor: Adds internal virtual _getVotes method that must be implemented; this is a breaking change for existing concrete extensions to Governor. To fix this on an existing voting module extension, rename getVotes to _getVotes and add a bytes memory argument. (#3043)
    • Governor: Adds params parameter to internal virtual _countVote method; this is a breaking change for existing concrete extensions to Governor. To fix this on an existing counting module extension, add a bytes memory argument to _countVote. (#3043)
    • Governor: Does not emit VoteCast event when params data is non-empty; instead emits VoteCastWithParams event. To fix this on an integration that consumes the VoteCast event, also fetch/monitor VoteCastWithParams events. (#3043)
    • Votes: The internal virtual function _getVotingUnits was made view (which was accidentally missing). Any overrides should now be updated so they are view as well.
  • 4.6.0-rc.0 - 2022-03-31

    This prerelease is now available for open review! Let us know your feedback and if you find any security issues.

    We have a bug bounty with rewards of up to USD $25,000 and a special POAP for submitting a valid issue.

    See the announcement for some more details.

  • 4.5.0 - 2022-02-09
    • ERC2981: add implementation of the royalty standard, and the respective extensions for ERC721 and ERC1155. (#3012)
    • GovernorTimelockControl: improve the state() function to have it reflect cases where a proposal has been canceled directly on the timelock. (#2977)
    • Preset contracts are now deprecated in favor of Contracts Wizard. (#2986)
    • Governor: add a relay function to help recover assets sent to a governor that is not its own executor (e.g. when using a timelock). (#2926)
    • GovernorPreventLateQuorum: add new module to ensure a minimum voting duration is available after the quorum is reached. (#2973)
    • ERC721: improved revert reason when transferring from wrong owner. (#2975)
    • Votes: Added a base contract for vote tracking with delegation. (#2944)
    • ERC721Votes: Added an extension of ERC721 enabled with vote tracking and delegation. (#2944)
    • ERC2771Context: use immutable storage to store the forwarder address, no longer an issue since Solidity >=0.8.8 allows reading immutable variables in the constructor. (#2917)
    • Base64: add a library to parse bytes into base64 strings using encode(bytes memory) function, and provide examples to show how to use to build URL-safe tokenURIs. (#2884)
    • ERC20: reduce allowance before triggering transfer. (#3056)
    • ERC20: do not update allowance on transferFrom when allowance is type(uint256).max. (#3085)
    • ERC20: add a _spendAllowance internal function. (#3170)
    • ERC20Burnable: do not update allowance on burnFrom when allowance is type(uint256).max. (#3170)
    • ERC777: do not update allowance on transferFrom when allowance is type(uint256).max. (#3085)
    • ERC777: add a _spendAllowance internal function. (#3170)
    • SignedMath: a new signed version of the Math library with max, min, and average. (#2686)
    • SignedMath: add a abs(int256) method that returns the unsigned absolute value of a signed value. (#2984)
    • ERC1967Upgrade: Refactor the secure upgrade to use ERC1822 instead of the previous rollback mechanism. This reduces code complexity and attack surface with similar security guarantees. (#3021)
    • UUPSUpgradeable: Add ERC1822 compliance to support the updated secure upgrade mechanism. (#3021)
    • Some more 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.

    Breaking changes

    • ERC1967Upgrade: The function _upgradeToAndCallSecure was renamed to _upgradeToAndCallUUPS, along with the change in security mechanism described above.
    • Address: The Solidity pragma is increased from ^0.8.0 to ^0.8.1. This is required by the account.code.length syntax that replaces inline assembly. This may require users to bump their compiler version from 0.8.0 to 0.8.1 or later. Note that other parts of the code already include stricter requirements.
from @openzeppelin/contracts GitHub release notes
Commit messages
Package name: @openzeppelin/contracts
  • d4fb3a8 4.6.0
  • 1d9902f Fix update-comment script to ignore invalid tags
  • 2cf3ac4 Bump minimum Solidity version for Initializable.sol to 0.8.2 (#3328)
  • 24953fb Remove unused constructor argument
  • a57bd14 Fix tests on upgradeable contracts after transpilation
  • 6096b53 add transpilation guards to the crosschain mocks (#3306)
  • ab54fcb make ERC2981:royaltyInfo public (#3305)
  • 050180e Fix release script to only release @ openzeppelin/contracts
  • 3a2534d 4.6.0-rc.0
  • 2a4ca65 Update release script to stop publishing old openzeppelin-solidity package
  • 3f49408 Move event definition at the top of IERC20, IERC777 and IERC1820 (#3228)
  • e7719de Match IERC721 function order with EIP spec (#3287)
  • 668a648 Add utilities for CrossChain messaging (#3183)
  • 02fcc75 Add ERC1155URIStorage (#3210)
  • ae270b0 Align data location of interface with implementation (#3295)
  • e029096 Add Initialized event (#3294)
  • 76eee35 Improve revert message in Governor (#3275)
  • bfff03c add missing PR link in Changelog
  • 76fca3a Add ERC721 and ERC1155 receiver support in Governor, Timelock (#3230)
  • 74c9130 typo fixed (#3264)
  • 15d5174 Fix minor typo in CONTRIBUTING.md. (#3284)
  • 05077f7 Update actions/cache action to v3 (#3277)
  • faf5820 Fix many spelling errors (#3274)
  • 0eba511 Allow the re-initialization of contracts (#3232)

Compare


Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.

For more information:

🧐 View latest project report

🛠 Adjust upgrade PR settings

🔕 Ignore this dependency or unsubscribe from future upgrade PRs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant