From 8b758523e5b1cbfc079fcd6a3ee1ef311efedd86 Mon Sep 17 00:00:00 2001 From: OpenZeppelin Docs Bot Date: Tue, 11 Aug 2026 14:35:09 +0000 Subject: [PATCH] Update API docs for OpenZeppelin/openzeppelin-confidential-contracts v0.5.3 - Repository: OpenZeppelin/openzeppelin-confidential-contracts - Ref: v0.5.3 - Trigger: tag - Output: content/confidential-contracts/api - Timestamp: 2026-08-11 14:35:09 UTC Auto-generated via workflow_dispatch --- .../confidential-contracts/api/finance.mdx | 70 +++++++++++++++++-- .../confidential-contracts/api/governance.mdx | 2 +- .../confidential-contracts/api/interfaces.mdx | 13 ++-- content/confidential-contracts/api/token.mdx | 48 +++++++++---- content/confidential-contracts/api/utils.mdx | 6 +- content/confidential-contracts/changelog.mdx | 43 ++++++++++++ 6 files changed, 153 insertions(+), 29 deletions(-) diff --git a/content/confidential-contracts/api/finance.mdx b/content/confidential-contracts/api/finance.mdx index 082b6202..743936c1 100644 --- a/content/confidential-contracts/api/finance.mdx +++ b/content/confidential-contracts/api/finance.mdx @@ -25,7 +25,7 @@ For convenience, this directory also includes: ## `BatcherConfidential` - + @@ -83,6 +83,7 @@ underlying tokens into [`BatcherConfidential.toToken`](#BatcherConfidential-toTo - [routeDescription()](#BatcherConfidential-routeDescription--) - [batchState(batchId)](#BatcherConfidential-batchState-uint256-) - [_claim(batchId, account)](#BatcherConfidential-_claim-uint256-address-) +- [_quit(batchId, account)](#BatcherConfidential-_quit-uint256-address-) - [_join(to, amount)](#BatcherConfidential-_join-address-euint64-) - [_executeRoute(batchId, amount)](#BatcherConfidential-_executeRoute-uint256-uint256-) - [_validateStateBitmap(batchId, allowedStates)](#BatcherConfidential-_validateStateBitmap-uint256-bytes32-) @@ -182,7 +183,7 @@ Quit the batch with id `batchId`. Entire deposit is returned to the user. This can only be called if the batch has not yet been dispatched or if the batch was canceled. -Developers should consider adding additional restrictions to this function +Developers should consider adding additional restrictions to [`BatcherConfidential._quit`](#BatcherConfidential-_quit-uint256-address-) if maintaining confidentiality of deposits is critical to the application. @@ -444,6 +445,39 @@ Returns the current state of a batch. Reverts if the batch does not exist. Claims `toToken` for `account`'s deposit in batch with id `batchId`. Tokens are always sent to `account`, enabling third-party relayers to claim on behalf of depositors. + +This function is not protected against reentrancy. External functions built on top of it +must be marked `nonReentrant`, as [`BatcherConfidential.claim`](#BatcherConfidential-claim-uint256-address-) is. + + + + + + + +
+
+

_quit(uint256 batchId, address account) → euint64

+
+

internal

+# +
+
+
+ +Quits the batch with id `batchId` for `account`, returning the entire deposit to `account`. +This can only be called if the batch has not yet been dispatched or if the batch was canceled. + + +Developers should consider adding additional restrictions to this function if maintaining +confidentiality of deposits is critical to the application. + + + +This function is not protected against reentrancy. External functions built on top of it +must be marked `nonReentrant`, as [`BatcherConfidential.quit`](#BatcherConfidential-quit-uint256-) is. + +
@@ -813,7 +847,7 @@ Intermediate steps must not result in underlying [`BatcherConfidential.toToken`] ## `ERC7821WithExecutor` - + @@ -951,7 +985,7 @@ function _erc7821AuthorizedExecutor( ## `VestingWalletCliffConfidential` - + @@ -1056,6 +1090,12 @@ starts at the vesting start timestamp (see [`VestingWalletConfidential`](#Vestin
- [VestingWalletCliffConfidentialInvalidCliffDuration(cliffSeconds, durationSeconds)](#VestingWalletCliffConfidential-VestingWalletCliffConfidentialInvalidCliffDuration-uint64-uint64-)
+VestingWalletConfidential + +- [VestingWalletConfidentialUnauthorizedHandle(handle, token)](#VestingWalletConfidential-VestingWalletConfidentialUnauthorizedHandle-euint64-address-) + +
+
ReentrancyGuardTransient - [ReentrancyGuardReentrantCall()](#ReentrancyGuardTransient-ReentrancyGuardReentrantCall--) @@ -1175,7 +1215,7 @@ The specified cliff duration is larger than the vesting duration. ## `VestingWalletConfidential` - + @@ -1283,6 +1323,7 @@ Confidential vesting wallet contracts can be deployed (as clones) using the [`Ve

Errors

+- [VestingWalletConfidentialUnauthorizedHandle(handle, token)](#VestingWalletConfidential-VestingWalletConfidentialUnauthorizedHandle-euint64-address-)
ReentrancyGuardTransient @@ -1497,13 +1538,30 @@ Emitted when releasable vested tokens are released.
+ + +
+
+

VestingWalletConfidentialUnauthorizedHandle(euint64 handle, address token)

+
+

error

+# +
+
+
+ +The `token` is not authorized (via the FHE ACL) to access the encrypted `handle` it returned. + +
+
+
## `VestingWalletConfidentialFactory` - + diff --git a/content/confidential-contracts/api/governance.mdx b/content/confidential-contracts/api/governance.mdx index 6b6cfd19..27e044c5 100644 --- a/content/confidential-contracts/api/governance.mdx +++ b/content/confidential-contracts/api/governance.mdx @@ -16,7 +16,7 @@ This directory includes primitives for on-chain confidential governance. ## `VotesConfidential` - + diff --git a/content/confidential-contracts/api/interfaces.mdx b/content/confidential-contracts/api/interfaces.mdx index 4e37e175..a12417fd 100644 --- a/content/confidential-contracts/api/interfaces.mdx +++ b/content/confidential-contracts/api/interfaces.mdx @@ -23,7 +23,7 @@ These interfaces are available as `.sol` files and are useful to interact with t ## `IERC7984` - + @@ -424,7 +424,7 @@ should be able to disclose the amount. This functionality is implementation spec ## `IERC7984ERC20Wrapper` - + @@ -644,7 +644,7 @@ Emitted when an unwrap request is finalized for a given `receiver`, `unwrapReque ## `IERC7984HookModule` - + @@ -754,7 +754,7 @@ Optionally emitted by a module to indicate the result of its validation (pre-tra ## `IERC7984Receiver` - + @@ -789,7 +789,8 @@ Called upon receiving a confidential token transfer. Returns an encrypted boolea of the callback. If false is returned, the token contract will attempt to refund the transfer. -The calling contract (token) must be granted ACL allowance to read the confidential return value. +The calling contract (token) must be granted ACL allowance to read the confidential return value if +it is initialized. Uninitialized return values are treated as a false boolean. @@ -805,7 +806,7 @@ Do not manually refund the transfer AND return false, as this can lead to double ## `IERC7984Rwa` - + diff --git a/content/confidential-contracts/api/token.mdx b/content/confidential-contracts/api/token.mdx index 0d48366b..de3f7d04 100644 --- a/content/confidential-contracts/api/token.mdx +++ b/content/confidential-contracts/api/token.mdx @@ -44,7 +44,7 @@ This set of interfaces, contracts, and utilities are all related to `ERC7984`, a ## `ERC7984` - + @@ -722,7 +722,7 @@ The given caller `caller` is not authorized for the current operation. ## `ERC7984ERC20Wrapper` - + @@ -1228,7 +1228,7 @@ Returns the maximum number that will be used for [`ERC7984.decimals`](#ERC7984-d ## `ERC7984Freezable` - + @@ -1440,7 +1440,7 @@ Emitted when a confidential amount of token is frozen for an account ## `ERC7984Hooked` - + @@ -1911,7 +1911,7 @@ The maximum number of modules has been exceeded. ## `ERC7984ObserverAccess` - + @@ -2094,7 +2094,7 @@ Thrown when an account tries to set a `newObserver` for a given `account` withou ## `ERC7984Omnibus` - + @@ -2417,7 +2417,7 @@ Try using the equivalent transfer function with an input proof. ## `ERC7984Restricted` - + @@ -2741,7 +2741,7 @@ The operation failed because the user account is restricted. ## `ERC7984Rwa` - + @@ -3558,7 +3558,7 @@ The operation failed because the lost account is the same as the new account. ## `ERC7984Votes` - + @@ -3778,7 +3778,7 @@ Emits a [`IERC7984.ConfidentialTransfer`](/confidential-contracts/api/interfaces ## `ERC7984BalanceCapHookModule` - + @@ -3969,7 +3969,7 @@ Emitted when the max balance for a given token is set. ## `ERC7984HolderCapHookModule` - + @@ -4232,7 +4232,7 @@ The new max holder count `maxHolderCount` is invalid. ## `ERC7984HookModule` - + @@ -4529,7 +4529,7 @@ The caller `user` does not have access to the encrypted amount `amount`. ## `ERC7984Utils` - + @@ -4548,6 +4548,13 @@ Library that provides common [`ERC7984`](#ERC7984) utility functions.
+
+

Errors

+
+- [ERC7984UtilsUnauthorizedUseOfEncryptedAmount(retval, to)](#ERC7984Utils-ERC7984UtilsUnauthorizedUseOfEncryptedAmount-ebool-address-) +
+
+
@@ -4572,3 +4579,18 @@ should try to refund the `from` address.
+ + +
+
+

ERC7984UtilsUnauthorizedUseOfEncryptedAmount(ebool retval, address to)

+
+

error

+# +
+
+
+ +
+
+ diff --git a/content/confidential-contracts/api/utils.mdx b/content/confidential-contracts/api/utils.mdx index d7323025..bae3f542 100644 --- a/content/confidential-contracts/api/utils.mdx +++ b/content/confidential-contracts/api/utils.mdx @@ -26,7 +26,7 @@ Miscellaneous contracts and libraries containing utility functions you can use t ## `FHESafeMath` - + @@ -172,7 +172,7 @@ Subtract `b` from `a` saturating at zero on underflow. The returned value is `a ## `HandleAccessManager` - + @@ -258,7 +258,7 @@ Validation function that must return true if the message sender is allowed to ca ## `CheckpointsConfidential` - + diff --git a/content/confidential-contracts/changelog.mdx b/content/confidential-contracts/changelog.mdx index 1b8dadaf..264ec483 100644 --- a/content/confidential-contracts/changelog.mdx +++ b/content/confidential-contracts/changelog.mdx @@ -2,6 +2,45 @@ title: Changelog --- + +# [v0.5.3](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/releases/tag/v0.5.3) - 2026-08-10 + +- `BatcherConfidential`: Extract logic from `quit` into internal function `_quit`. Developers can now call `_quit(batchId, address)` from a derived contract to quit on behalf of a depositor. ([#435](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/pull/435)) + + + +[Changes][v0.5.3] + + + +# [v0.5.2](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/releases/tag/v0.5.2) - 2026-08-05 + +- `VestingWalletConfidential`: Ensure that tokens are allowed to access handles they return (or the handle is uninitialized). ([#423](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/pull/423)) +- `ERC7984`: Check that `IERC7984Receiver` has ACL access to the ebool they return (or the handle is uninitialized). ([#428](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/pull/428)) + + + +[Changes][v0.5.2] + + + +# [v0.4.2](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/releases/tag/v0.4.2) - 2026-08-05 + +- `VestingWalletConfidential`: Ensure that tokens are allowed to access handles they return (or the handle is uninitialized). ([#423](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/pull/423)) +- `ERC7984`: Check that `IERC7984Receiver` has ACL access to the ebool they return (or the handle is uninitialized). ([#428](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/pull/428)) + +[Changes][v0.4.2] + + + +# [v0.3.2](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/releases/tag/v0.3.2) - 2026-08-05 + +- `VestingWalletConfidential`: Ensure that tokens are allowed to access handles they return (or the handle is uninitialized). ([#423](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/pull/423)) +- `ERC7984`: Check that `IERC7984Receiver` has ACL access to the ebool they return (or the handle is uninitialized). ([#428](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/pull/428)) + +[Changes][v0.3.2] + + # [v0.5.1](https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/releases/tag/v0.5.1) - 2026-06-22 @@ -162,6 +201,10 @@ Note: Confidential contracts are currently in a phase of rapid development--futu [Changes][v0.1.0] +[v0.5.3]: https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/compare/v0.5.2...v0.5.3 +[v0.5.2]: https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/compare/v0.4.2...v0.5.2 +[v0.4.2]: https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/compare/v0.3.2...v0.4.2 +[v0.3.2]: https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/compare/v0.5.1...v0.3.2 [v0.5.1]: https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/compare/v0.5.0...v0.5.1 [v0.5.0]: https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/compare/v0.4.1...v0.5.0 [v0.4.1]: https://github.com/OpenZeppelin/openzeppelin-confidential-contracts/compare/v0.4.0...v0.4.1