Update dependency @openzeppelin/contracts to v5.4.0 #12
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
5.0.2->5.4.0Release Notes
OpenZeppelin/openzeppelin-contracts (@openzeppelin/contracts)
v5.4.0Compare Source
Breaking changes
SignatureChecker,Governorand Governor's extensions. (#5716).Pragma changes
Changes by category
Account
Account: Added a simple ERC-4337 account implementation with minimal logic to process user operations. (#5657)AccountERC7579: Extension ofAccountthat implements support for ERC-7579 modules of type executor, validator, and fallback handler. (#5657)AccountERC7579Hooked: Extension ofAccountERC7579that implements support for ERC-7579 hook modules. (#5657)EIP7702Utils: Add a library for checking if an address has an EIP-7702 delegation in place. (#5587)IERC7821,ERC7821: Interface and logic for minimal batch execution. No support for additionalopDatais included. (#5657)Governance
GovernorNoncesKeyed: Extension ofGovernorthat adds support for keyed nonces when voting by sig. (#5574)Tokens
ERC20Bridgeable: Implementation of ERC-7802 that makes an ERC-20 compatible with crosschain bridges. (#5739)Cryptography
Signers
AbstractSigner,SignerECDSA,SignerP256, andSignerRSA: Add an abstract contract and various implementations for contracts that deal with signature verification. (#5657)SignerERC7702: Implementation ofAbstractSignerfor Externally Owned Accounts (EOAs). Useful with ERC-7702. (#5657)SignerERC7913: Abstract signer that verifies signatures using the ERC-7913 workflow. (#5659)MultiSignerERC7913: Implementation ofAbstractSignerthat supports multiple ERC-7913 signers with a threshold-based signature verification system. (#5659)MultiSignerERC7913Weighted: Extension ofMultiSignerERC7913that supports assigning different weights to each signer, enabling more flexible governance schemes. (#5741)Verifiers
ERC7913P256VerifierandERC7913RSAVerifier: Ready to use ERC-7913 verifiers that implement key verification for P256 (secp256r1) and RSA keys. (#5659)Other
SignatureChecker: Add support for ERC-7913 signatures alongside existing ECDSA and ERC-1271 signature verification. (#5659)ERC7739: An abstract contract to validate signatures following the rehashing scheme fromERC7739Utils. (#5664)ERC7739Utils: Add a library that implements a defensive rehashing mechanism to prevent replayability of smart contract signatures based on the ERC-7739. (#5664)Structures
EnumerableMap: Add support forBytesToBytesMaptype. (#5658)EnumerableMap: Addkeys(uint256,uint256)that returns a subset (slice) of the keys in the map. (#5713)EnumerableSet: Add support forStringSetandBytesSettypes. (#5658)EnumerableSet: Addvalues(uint256,uint256)that returns a subset (slice) of the values in the set. (#5713)Utils
Arrays: AddunsafeAccess,unsafeMemoryAccessandunsafeSetLengthforbytes[]andstring[]. (#5568)Blockhash: Add a library that provides access to historical block hashes using EIP-2935's history storage, extending the standard 256-block limit to 8191 blocks. (#5642)Bytes: FixlastIndexOf(bytes,byte,uint256)with empty buffers and finite position to correctly returntype(uint256).maxinstead of accessing uninitialized memory sections. (#5797)v5.3.0Compare Source
Breaking Changes
GovernorCountingOverridable.VoteReceiptstruct parameter member nameshasOverridenandoverridenWeightforhasOverriddenandoverriddenWeightrespectively.Custom error changes
GovernorAlreadyOverridenVotewithGovernorAlreadyOverriddenVote.GovernorOnlyProposerwithGovernorUnableToCancel.Changes by category
Account
ERC4337Utils: Update thehashfunction to callgetUserOpHashon the specified entrypoint and add anENTRYPOINT_V08constant. (#5614)ERC7579Utils: Add ABI decoding checks on calldata bounds withindecodeBatch. (#5371)ERC7579Utils: Replaceaddress(0)withaddress(this)during execution for calldata compression efficiency. (#5614)Governance
IGovernor: Add thegetProposalIdfunction to the governor interface. (#5290)GovernorProposalGuardian: Add a governance extension that defines a proposal guardian who can cancel proposals at any stage in their lifecycle. (#5303)GovernorSequentialProposalId: Adds aGovernorextension that sequentially numbers proposal ids instead of using the hash. (#5290)GovernorSuperQuorum: Add a governance extension to support a super quorum. Proposals that meet the super quorum (and have a majority of for votes) advance to theSucceededstate before the proposal deadline. (#5526)GovernorVotesSuperQuorumFraction: Add a variant of theGovernorSuperQuorumextensions where the super quorum is expressed as a fraction of the total supply. (#5526)TimelockController: Receive function is now virtual. (#5509)Structures
EnumerableSet: Addclearfunction to EnumerableSets which deletes all values in the set. (#5486)EnumerableMap: Addclearfunction to EnumerableMaps which deletes all entries in the map. (#5486)MerkleTree: Add an update function that replaces a previously inserted leaf with a new value, updating the tree root along the way. (#5526)Tokens
ERC4626: Use theassetgetter intotalAssets,_depositand_withdraw. (#5322)IERC6909: Add the interface for ERC-6909. (#5343)ERC6909: Add a standard implementation of ERC6909. (#5394)ERC6909TokenSupply: Add an extension of ERC6909 which tracks total supply for each token id. (#5394)ERC6909Metadata: Add an extension of ERC6909 which adds metadata functionality. (#5394)ERC6909ContentURI: Add an extension of ERC6909 which adds content URI functionality. (#5394)SafeERC20: AddtrySafeTransferandtrySafeTransferFromthat do not revert and return false if the transfer is not successful. (#5483)Other
Address: bubble up revert data onsendValuefailed call. (#5379)Calldata: Library withemptyBytesandemptyStringfunctions to generate emptybytesandstringcalldata types. (#5422)ERC2771Forwarder: Expose the_isTrustedByTargetinternal function to check whether a target trusts the forwarder. (#5416)Hashes: ExposeefficientKeccak256for hashing non-commutative pairs of bytes32 without allocating extra memory. (#5442)Initializable: Add_initializableStorageSlotfunction that returns a pointer to the storage struct. The function allows customizing with a custom storage slot with anoverride. (#5526)Math: Addadd512,mul512andmulShr. (#5526)Math: Add saturating arithmetic operationssaturatingAdd,saturatingSubandsaturatingMul. (#5526)MessageHashUtils: AddtoDataWithIntendedValidatorHash(address, bytes32). (#5526)P256: Adjust precompile detection inverifyNativeto consider emptyreturndataon invalid verification. Previously, invalid signatures would've reverted with aMissingPrecompileerror in chains with RIP-7212 support. (#5620)Pausable: Stop explicitly settingpausedtofalseduring construction. (#5448)Strings: AddespaceJSONthat escapes special characters in JSON strings. (#5526)v5.2.0Compare Source
Breaking Changes
Custom error changes
This version comes with changes to the custom error identifiers. Contracts previously depending on the following errors should be replaced accordingly:
Errors.FailedCallwith a bubbled-up revert reason inAddress.sendValue.Changes by category
General
Account
ERC4337Utils: Add a reusable library to manipulate user operations and interact with ERC-4337 contracts (#5274)ERC7579Utils: Add a reusable library to interact with ERC-7579 modular accounts (#5274)Governance
GovernorCountingOverridable: Add a governor counting module that enables token holders to override the vote of their delegate. (#5192)VotesExtended: Create an extension ofVoteswhich checkpoints balances and delegates. (#5192)Proxy
Clones: AddcloneWithImmutableArgsandcloneDeterministicWithImmutableArgsvariants that create clones with per-instance immutable arguments. The immutable arguments can be retrieved usingfetchCloneArgs. The correspondingpredictDeterministicWithImmutableArgsfunction is also included. (#5109)Tokens
ERC1363Utils: Add helper similar to the existingERC721UtilsandERC1155Utils(#5133)Utils
Address: bubble up revert data onsendValuefailed call (#5418)Bytes: Add a library of common operations that operate onbytesobjects. (#5252)CAIP2andCAIP10: Add libraries for formatting and parsing CAIP-2 and CAIP-10 identifiers. (#5252)NoncesKeyed: Add a variant ofNoncesthat implements the ERC-4337 entrypoint nonce system. (#5272)Packing: Add variants for packingbytes10andbytes22(#5274)Strings: AddparseUint,parseInt,parseHexUintandparseAddressto parse strings into numbers and addresses. Also provide variants of these functions that parse substrings, andtryXxxvariants that do not revert on invalid input. (#5166)v5.1.0Compare Source
Breaking changes
ERC1967Utils: Removed duplicate declaration of theUpgraded,AdminChangedandBeaconUpgradedevents. These events are still available through theIERC1967interface located under thecontracts/interfaces/directory. Minimum pragma version is now 0.8.21.Governor,GovernorCountingSimple: The_countVotevirtual function now returns anuint256with the total votes cast. This change allows for more flexibility for partial and fractional voting. Upgrading users may get a compilation error that can be fixed by adding a return statement to the_countVotefunction.Custom error changes
This version comes with changes to the custom error identifiers. Contracts previously depending on the following errors should be replaced accordingly:
Address.FailedInnerCallwithErrors.FailedCallAddress.AddressInsufficientBalancewithErrors.InsufficientBalanceClones.Create2InsufficientBalancewithErrors.InsufficientBalanceClones.ERC1167FailedCreateClonewithErrors.FailedDeploymentClones.Create2FailedDeploymentwithErrors.FailedDeploymentSafeERC20: ReplaceAddress.AddressEmptyCodewithSafeERC20FailedOperationif there is no code at the token's address.SafeERC20: Replace genericError(string)withSafeERC20FailedOperationif the returned data can't be decoded asbool.SafeERC20: Replace genericSafeERC20FailedOperationwith the revert message from the contract call if it fails.Changes by category
General
AccessManager,VestingWallet,TimelockControllerandERC2771Forwarder: Added a publicinitializerfunction in their corresponding upgradeable variants. (#5008)Access
AccessControlEnumerable: Add agetRoleMembersmethod to return all accounts that haverole. (#4546)AccessManager: Allow theonlyAuthorizedmodifier to restrict functions added to the manager. (#5014)Finance
VestingWalletCliff: Add an extension of theVestingWalletcontract with an added cliff. (#4870)Governance
GovernorCountingFractional: Add a governor counting module that allows distributing voting power amongst 3 options (For, Against, Abstain). (#5045)Votes: Set_moveDelegateVotesvisibility to internal instead of private. (#5007)Proxy
Clones: Add version ofcloneandcloneDeterministicthat support sending value at creation. (#4936)TransparentUpgradeableProxy: Make internal_proxyAdmin()getter haveviewvisibility. (#4688)ProxyAdmin: Fixed documentation forUPGRADE_INTERFACE_VERSIONgetter. (#5031)Tokens
ERC1363: Add implementation of the token payable standard allowing execution of contract code after transfers and approvals. (#4631)ERC20TemporaryApproval: Add an ERC-20 extension that implements temporary approval using transient storage, based on ERC7674 (draft). (#5071)SafeERC20: Add "relaxed" function for interacting with ERC-1363 functions in a way that is compatible with EOAs. (#4631)SafeERC20: Document risks ofsafeIncreaseAllowanceandsafeDecreaseAllowancewhen associated with ERC-7674. (#5262)ERC721UtilsandERC1155Utils: Add reusable libraries with functions to perform acceptance checks onIERC721ReceiverandIERC1155Receiverimplementers. (#4845)ERC1363Utils: Add helper similar to the existing ERC721Utils and ERC1155Utils. (#5133)Utils
Arrays: add asortfunctions foraddress[],bytes32[]anduint256[]memory arrays. (#4846)Arrays: add new functionslowerBound,upperBound,lowerBoundMemoryandupperBoundMemoryfor lookups in sorted arrays with potential duplicates. (#4842)Arrays: deprecatefindUpperBoundin favor of the newlowerBound. (#4842)Base64: AddencodeURLfollowing section 5 of RFC4648 for URL encoding (#4822)Comparator: A library of comparator functions, useful for customizing the behavior of the Heap structure. (#5084)Create2: Bubbles up returndata from a deployed contract that reverted during construction. (#5052)Create2,Clones: MaskcomputeAddressandcloneDeterministicoutputs to produce a clean value for anaddresstype (i.e. only use 20 bytes) (#4941)Errors: New library of common custom errors. (#4936)Hashes: A library with commonly used hash functions. (#3617)Packing: Added a new utility for packing, extracting and replacing bytesXX values. (#4992)Panic: Add a library for reverting with panic codes. (#3298)ReentrancyGuardTransient: Added a variant ofReentrancyGuardthat uses transient storage. (#4988)Strings: Added a utility function for converting an address to checksummed string. (#5067)SlotDerivation: Add a library of methods for derivating common storage slots. (#4975)TransientSlot: Add primitives for operating on the transient storage space using a typed-slot representation. (#4980)Cryptography
SignatureChecker: refactorisValidSignatureNowto avoid validating ECDSA signatures if there is code deployed at the signer's address. (#4951)MerkleProof: Add variations ofverify,processProof,multiProofVerifyandprocessMultiProof(and equivalent calldata version) with support for custom hashing functions. (#4887)P256: Library for verification and public key recovery of P256 (aka secp256r1) signatures. (#4881)RSA: Library to verify signatures according to RFC 8017 Signature Verification Operation (#4952)Math
Math: add aninvModfunction to get the modular multiplicative inverse of a number in Z/nZ. (#4839)Math: AddmodExpfunction that exposes theEIP-198precompile. Includesuint256andbytes memoryversions. (#3298)Math: Custom errors replaced with native panic codes. (#3298)Math,SignedMath: Add a branchlessternaryfunction that computescond ? a : bin constant gas cost. (#4976)SafeCast: AddtoUint(bool)for operating onboolvalues asuint256. (#4878)Structures
CircularBuffer: Add a data structure that stores the lastNvalues pushed to it. (#4913)DoubleEndedQueue: Custom errors replaced with native panic codes. (#4872)EnumerableMap: addUintToBytes32Map,AddressToAddressMap,AddressToBytes32MapandBytes32ToAddressMap. (#4843)Heap: A data structure that implements a heap-based priority queue. (#5084)MerkleTree: A data structure that allows inserting elements into a merkle tree and updating its root hash. (#3617)Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.