Bug fixes
ERC165Checker
: Ensure thesupportsERC165
function returns false if the target reverts during thesupportsInterface(0xffffffff)
call. (#5810)
Breaking changes
ERC6909
and its extensions (ERC6909ContentURI
,ERC6909Metadata
andERC6909TokenSupply
) are no longer marked as draft since EIP-6909 is now final. Developers must update the import paths. Contracts behavior is not modified. (#5929)SignerERC7702
is renamed asSignerEIP7702
. Imports and inheritance must be updated to that new name and path. Behavior is unmodified. (#5932)ERC721Holder
,ERC1155Holder
,ReentrancyGuard
andReentrancyGuardTransient
are flagged as stateless and are no longer transpiled. Developers using their upgradeable variants from@openzeppelin/contracts-upgradeable
must update their imports to use the equivalent version available in@openzeppelin/contracts
. (#5944, #5942)- Update minimum pragma to 0.8.24 in
Votes
,VotesExtended
,ERC20Votes
,Strings
,ERC1155URIStorage
,MessageHashUtils
,ERC721URIStorage
,ERC721Votes
,ERC721Wrapper
,ERC721Burnable
,ERC721Consecutive
,ERC721Enumerable
,ERC721Pausable
,ERC721Royalty
,ERC721Wrapper
,EIP712
,ERC4626
andERC7739
. (#5726)
Deprecation
Initializable
andUUPSUpgradeable
are no longer transpiled. An alias is present in the@openzeppelin/contracts-upgradeable
package that redirect to the corresponding file in@openzeppelin/contracts
. These alias will be removed in the next major release. Developers are advised to update their imports to get these files directly from the@openzeppelin/contracts
package. #5941ECDSA
signature malleability protection is partly deprecated. See documentation for more details. #5814
Changes by category
Tokens
ERC4626
: computemaxWithdraw
usingmaxRedeem
andpreviewRedeem
so that changes to the preview functions affect the max functions. (#5130)
Cross-chain
InteroperableAddress
: Add a library for formatting and parsing ERC-7930 interoperable addresses. (#5736)ERC7786Recipient
: Generic ERC-7786 cross-chain message recipient contract. (#5904)IERC7786
: Add the (draft) interface for ERC-7786 "Cross-Chain Messaging Gateway" (#5737)
Cryptography
Signers
SignerWebAuthn
: Add an abstract signer that verifies WebAuthn signatures, with a P256 fallback. (#5809)- Add constructors to the different signers. (#5757)
Verifiers
ERC7913WebAuthnVerifier
: Add an ERC-7913 verifier that verifies WebAuthn Authentication Assertions for P256 identities. (#5809)
Other
WebAuthn
: Add a library for verifying WebAuthn Authentication Assertions. (#5809)ECDSA
: Addparse
andparseCalldata
to parse bytes signatures of length 65 or 64 (erc-2098) into its v,r,s components. (#5814)ECDSA
: AddrecoverCalldata
andtryRecoverCalldata
, variants ofrecover
andtryRecover
that are more efficient when signatures are in calldata. (#5788)SignatureChecker
: AddisValidSignatureNowCalldata(address,bytes32,bytes calldata)
for efficient processing of calldata signatures. (#5788)
Structures
Checkpoints
: Add a new checkpoint variantCheckpoint256
usinguint256
type for the value and key. (#5748)Accumulators
: A library for merging an arbitrary dynamic number of bytes buffers. (#5680)
Utils
Base58
: Add a library for encoding and decoding bytes buffers into base58 strings. (#5762)Base64
: Add a newdecode
function that parses base64 encoded strings. (#5765)Bytes
: Addconcat
that merges abytes[]
array of buffers into a singlebytes
buffer. (#5882)Bytes
: AddreverseBytes32
,reverseBytes16
,reverseBytes8
,reverseBytes4
, andreverseBytes2
functions to reverse byte order for converting between little-endian and big-endian representations. (#5724)Bytes
: Addsplice(bytes,uint256)
andsplice(bytes,uint256,uint256)
functions that move a specified range of bytes to the start of the buffer and truncate it in place, as an alternative toslice
. (#5733)Bytes
: Add aclz
function to count the leading zero bits in abytes
buffer. (#5725)Bytes
: Add anequal
function to compare byte buffers. (#5726)Bytes
: FixlastIndexOf(bytes,byte,uint256)
with empty buffers and finite position to correctly returntype(uint256).max
instead of accessing uninitialized memory sections. (#5797)IERC7751
: Add the interface for custom error wrapping of bubbled up reverts. (#5816)LowLevelCall
: Add a library to perform low-level calls and deal with thereturndata
more granularly. (#5094)Math
: Add aclz
function to count the leading zero bits in auint256
value. (#5725)Memory
: Add library with utilities to manipulate memory (#5189)Memory
: Add a UDVT for handling slices on memory space similarly to calldata slices. (#5680)ReentrancyGuard
andReentrancyGuardTransient
: AddnonReentrantView
, a read-only version of thenonReentrant
modifier. (#5800)ReentrancyGuard
,ReentrancyGuardTransient
: Add an internal_reentrancyGuardStorageSlot
function allowing slot customization via override. (#5892)RelayedCall
: Add a library to perform indirect calls through minimal and predictable relayers. (#5630)RLP
: Add a library for encoding and decoding data in Ethereum's Recursive Length Prefix format. (#5680)Strings
: AddtoHexString(bytes)
. (#5761)