SignerAccessManaged: Add anAbstractSignerwhose authority is delegated to the members of a role tracked by anIAccessManager. A signature is accepted only when its[signer][inner signature]payload is valid and the signer currently holds the bound role.RoleAccount: Add an account combiningSignerAccessManaged(ERC-1271 via ERC-7739) andERC7821batched execution, acting on behalf of the current members of a role.RoleAccountFactory: Add a factory that deploys a deterministicRoleAccountper (access manager, role) pair via clones-with-immutable-args.
- Remove
PaymasterCore,PaymasterERC20,PaymasterERC20Guarantor,PaymasterERC721OwnerandPaymasterSigner. These contracts were migrated to@openzeppelin/contracts>=5.7.0(PaymasterCoreasPaymaster).
IERC7943: Align all interfaces (fungible, non-fungible, multi-token) with the final EIP-7943 specification: replacecanTransactwithcanSend/canReceiveandERC7943CannotTransactwithERC7943CannotSend/ERC7943CannotReceive.supportsInterfacenow reports the final0x3edbb4c4fungible interface id.ERC20uRWA:setFrozenTokensno longer caps the frozen amount to the current balance, allowing future balances withholding as required by the spec.ERC20uRWA:canTransfernow returns false only for permissioned rules (insufficient unfrozen balance while within the total balance, orcanSend/canReceiverestrictions); plain balance insufficiency no longer returns false.ERC20uRWA:_updateenforcescanSend/canReceive, so overrides of these checks apply to actual transfers, minting, and burning (reverting withERC20UserRestricted).ERC20uRWA:forcedTransfergates the recipient withcanReceiveand bypasses sender-side checks through a transient flag instead of temporarily rewriting the sender's restriction.
ERC20uRWA: A self-directedforcedTransferno longer reduces the frozen balance (previously an unauthorized unfreeze that bypassed the freezer role); it behaves as a regular ERC-20 self-transfer with no frozen adjustment.
IERC7540: Add interface for ERC-7540 asynchronous tokenized vaults, extending ERC-4626 with request-based deposit and redeem flows.IERC7575: Add interface for ERC-7575 multi-asset vaults.ERC7540: Add base implementation of ERC-7540 with operator management, configurable share custody,totalAssets/totalSupplyadjustments to keep the share price accurate during the async lifecycle, and virtual hooks for strategy extensions.ERC7540AdminDeposit,ERC7540AdminRedeem: Add admin-controlled fulfillment strategies where a privileged caller transitions requests from Pending to Claimable with an explicit exchange rate.ERC7540DelayDeposit,ERC7540DelayRedeem: Add time-based fulfillment strategies that make requests claimable after a configurable delay, usingCheckpoints.Trace208to accumulate maturing amounts.ERC7540SyncDeposit,ERC7540SyncRedeem: Add synchronous strategies that preserve standard ERC-4626 behavior on one side of the vault.
- Remove
IERC7802,IERC7821andIERC7786. These interfaces were migrated to@openzeppelin/contracts>=5.5.0. - Remove
ERC7786Receiver. This contract was migrated to@openzeppelin/contracts>=5.5.0. - Updated crosschain bridge contracts terminology from "Recipient" to "Receiver" to align with ERC-7786 specification.
PaymasterCore: Update default version of the ERC-4337 entrypoint to v0.9.
- Remove
WebAuthn,SignerWebAuthn,ERC7913WebAuthnVerifier. These contracts were migrated to@openzeppelin/contracts>=5.5.0.
TimelockControllerEnumerable: Add enumerable extension ofTimelockControllerallowing easy listing/enumeration of scheduled operations and operation batches, with view accessors for indexed/ranged queries and more informative revert errors.
- Split
IERC7943intoIERC7943Fungible,IERC7943NonFungible, andIERC7943MultiTokeninterfaces for fungible, non-fungible, and multi-token support, respectively.
ERC7786Attributes: Add utility library for parsing and processing ERC-7786 attributes, including safe decoding ofrequestRelay(uint256,uint256,address)attributes from calldata.WormholeGatewayAdapter: Add ERC-7786 compliant crosschain gateway for sending and receiving messages via Wormhole, supporting request relays and atomic or deferred delivery flows.
DKIMRegistry: Add implementation of ERC-7969 to enable onchain verification of DomainKeys Identified Mail (DKIM) signatures.
ERC20Freezable: Add extension of ERC-20 that allows freezing specific amounts of tokens per account, preventing transfers until unfrozen while maintaining full visibility of balances.ERC20Restricted: Add extension of ERC-20 that implements user account transfer restrictions through allowlist/blocklist functionality based on ERC-7943.ERC20uRWA: Add comprehensive ERC-20 extension implementing ERC-7943 specification for unified Real World Assets (uRWAs) with freezing, restrictions, and forced transfer capabilities.ERC20Custodian: Deprecate in favor ofERC20Freezable.ERC20Allowlist,ERC20Blocklist: Deprecate in favor ofERC20Restricted.
ZKEmailUtils: AddtryDecodeEmailProoffunction for safe calldata decoding with comprehensive bounds checking and validation forEmailProofstruct.ZKEmailUtils: UpdateisValidZKEmailto receiveEmailProofstruct directly instead ofEmailAuthMsgstruct.SignerZKEmail: RemovetemplateIdfunctionality and switch fromEmailAuthMsgto directEmailProofvalidation for streamlined signature verification.ERC7913ZKEmailVerifier: RemovetemplateIdfrom signature validation logic and update_decodeKeyfunction to directly decodeEmailProofstruct.
ZKEmailUtils: Simplify library implementation and removeVerifier.solindirection for cleaner integration with a Groth16Verifier.
ERC7786Receiver: RenameexecuteMessagetoreceiveMessageto align with ERC-7786 specification, removeattributesparameter for simplified message handling.
WebAuthn: ReplaceverifyMinimalwithverifyas the standard method, addverify(challenge, auth, qx, qy, requireUV)variant for UV flag control, improve backup eligibility/state validation, and make authenticator data flags constants internal for better accessibility.
- Remove
ERC20Bridgeable. Migrated to@openzeppelin/contracts>=5.4.0.
- Remove
Account,AccountERC7579,AccountERC7579Hooked,ERC7812,ERC7739Utils,ERC7913Utils,AbstractSigner,SignerECDSA,SignerP256,SignerRSA,SignerERC7702,SignerERC7913,MultiSignerERC7913,MultiSignerERC7913Weighted,ERC7913P256Verifier,ERC7913PRSAVerifier. These contracts were migrated to@openzeppelin/contracts>=5.4.0.
IERC7943: Add interface for uRWAs (ERC-7943) supporting frozen tokens, forced transfers, and compliance features.
ERC7913WebAuthnVerifier: Add an ERC-7913 signature verifier that supports WebAuthn authentication assertions using P256 keys.
WebAuthn.sol: Add library for on-chain verification of WebAuthn authentication assertions and P256 signatures.SignerWebAuthn.sol: Add abstract contract for signature validation using WebAuthn or raw P256 signatures.ERC7579SelectorExecutor.sol: Add an ERC-7579 executor module restricting execution to authorized function selectors per account.ERC7579MultisigStorage.sol: Add an ERC-7579 multisig module supporting presigned approvals stored in contract storage.
AxelarGatewayBase,AxelarGatewayDestination,AxelarGatewaySource,ERC7786ReceiverandERC7786Aggregator: Changed support from CAIP addresses to ERC-7930 addresses.ERC7786Aggregator: Renamed toERC7786OpenBridge.
EnumerableMap: Addkeys(uint256,uint256)that returns a subset (slice) of the keys in the map.EnumerableSet: Addvalues(uint256,uint256)that returns a subset (slice) of the values in the set.
- Moved
ERC7739Utils,ERC7913Utils,ZKEmailUtils, abstract signers and ERC-7913 verifiers to/contracts/utils/cryptography
ERC7579Multisig: Add an abstract multisig module for ERC-7579 accounts using ERC-7913 signer keys.ERC7579MultisigWeighted: Add an abstract weighted multisig module that allows different weights to be assigned to signers.ERC7579MultisigConfirmation: Add an abstract confirmation-based multisig module that each signer to provide a confirmation signature.ERC7579Executor: Add an executor module that enables executing calls from accounts where the it's installed.ERC7579DelayedExecutor: Add executor module that adds a delay before executing an account operation.
ERC7913ZKEmailVerifier: Add ERC-7913 signature verifier that enables email-based authentication through zero-knowledge proofs.
PaymasterERC20Guarantor: Add extension ofPaymasterERC20that enables third parties to guarantee user operations by prefunding gas costs upfront, with repayment handling for successful operations.ERC7579Validator: Add abstract validator module for ERC-7579 accounts that provides base implementation for signature validation.ERC7579Signature: Add implementation ofERC7579Validatorthat enables ERC-7579 accounts to integrate with address-less cryptographic keys and account signatures through ERC-7913 signature verification.
ERC7913Utils: AddareValidSignaturesNowfunction to verify multiple signatures from a set of ordered signers.
MultiSignerERC7913: Implementation ofAbstractSignerthat supports multiple ERC-7913 signers with a threshold-based signature verification system.MultiSignerERC7913Weighted: Extension ofMultiSignerERC7913that supports assigning different weights to each signer, enabling more flexible governance schemes.
ZKEmailUtils: Add library for ZKEmail signature validation utilities that enables email-based authentication through zero-knowledge proofs, with support for DKIM verification and command template validation.SignerZKEmail: Add implementation ofAbstractSignerthat enables accounts to use ZKEmail signatures for authentication, leveraging DKIM registry and zero-knowledge proof verification.
SignerERC7913: Abstract signer that verifies signatures using the ERC-7913 workflow.ERC7913P256VerifierandERC7913RSAVerifier: Ready to use ERC-7913 verifiers that implement key verification for P256 (secp256r1) and RSA keys.ERC7913Utils: Utilities library for verifying signatures by ERC-7913 formatted signers.
EnumerableSetExtendedandEnumerableMapExtended: Extensions of theEnumerableSetandEnumerableMaplibraries with more types, including non-value types.
PaymasterERC20: Extension ofPaymasterCorethat sponsors user operations against payment in ERC-20 tokens.PaymasterERC721Owner: Extension ofPaymasterCorethat approves sponsoring of user operation based on ownership of an ERC-721 NFT.
- Deprecate
Accountand renameAccountCoretoAccount. - Update
AccountandPaymasterto support entrypoint v0.8.0.
ERC7786Aggregator: Add an aggregator that implements a meta gateway on top of multiple ERC-7786 gateways.
PaymasterCore: Add a simple ERC-4337 paymaster implementation with minimal logic.PaymasterSigner: Extension ofPaymasterCorethat approves sponsoring of user operation based on a cryptographic signature verified by the paymaster.
AccountCore: Add an internal_validateUserOpfunction to validate user operations.AccountERC7579: Extension ofAccountCorethat implements support for ERC-7579 modules of type executor, validator, and fallback handler.AccountERC7579Hooked: Extension ofAccountERC7579that implements support for ERC-7579 hook modules.
- Rename
ERC7739SignerintoERC7739to avoid confusion with theAbstractSignerfamily of contracts. - Remove
AccountERC7821in favor ofERC7821, an ERC-7821 implementation that doesn't rely on (but is compatible with)AccountCore.
AccountERC7821: Account implementation that implements ERC-7821 for minimal batch execution interface. No support for additionalopDatais included.
AccountCore: Added a simple ERC-4337 account implementation with minimal logic to process user operations.Account: Extensions of AccountCore with recommended features that most accounts should have.AbstractSigner,SignerECDSA,SignerP256, andSignerRSA: Add an abstract contract, and various implementations, for contracts that deal with signature verification. Used by AccountCore and `ERC7739Utils.SignerERC7702: Implementation ofAbstractSignerfor Externally Owned Accounts (EOAs). Useful with ERC-7702.
ERC20Bridgeable: Extension of ERC-20 that implements a minimal token interface for cross-chain transfers following ERC-7802.
ERC7786Receiver: ERC-7786 generic cross-chain message receiver contract.AxelarGatewayBase: Cross-chain gateway adapter for the Axelar Network following ERC-7786 that tracks destination gateways and CAIP-2 equivalences.AxelarGatewayDestination: ERC-7786 gateway destination adapter for the Axelar Network used to receive cross-chain messages.AxelarGatewaySource: ERC-7786 gateway source adapter for the Axelar Network used to send cross-chain messages.AxelarGatewayDuplex: Both a destination and source adapter following ERC-7786 for the Axelar Network used to send and receive cross-chain messages.
ERC7739Utils: Add a library that implements a defensive rehashing mechanism to prevent replayability of smart contract signatures based on the ERC-7739.ERC7739Signer: An abstract contract to validate signatures following the rehashing scheme fromERC7739Utils.
ERC20Collateral: Extension of ERC-20 that limits the supply of tokens based on a collateral and time-based expiration.
ERC20Allowlist: Extension of ERC-20 that implements an allow list to enable token transfers, disabled by default.ERC20Blocklist: Extension of ERC-20 that implements a block list to restrict token transfers, enabled by default.- : Deprecate in favor of
ERC20Freezable.: Extension of ERC-20 that allows a custodian to freeze user's tokens by a certain amount.
OnTokenTransferAdapter: An adapter that exposestransferAndCallon top of an ERC-1363 receiver.
HybridProxy: Add a proxy contract that can either use a beacon to retrieve the implementation or fallback to an address in the ERC-1967's implementation slot.
AccessManagerLight: Add a simpler version of theAccessManagerin OpenZeppelin Contracts.ERC4626Fees: Extension of ERC-4626 that implements fees on entry and exit from the vault.Masks: Add library to handlebytes32masks.