commit fb727bfcffe8f88140f17ba95b69a93527a1d7f9
parent 7944885e71fbf970d21e0d9f4fe88dcc08146457
Author: Christian Grothoff <christian@grothoff.org>
Date: Tue, 13 Oct 2026 00:24:11 +0200
add reserve_pub to reveal-withdraw to avoid needing an extra index
Diffstat:
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/core/api-exchange.rst b/core/api-exchange.rst
@@ -66,7 +66,11 @@ The currently implemented protocol version is **v42**.
error codes ``TALER_EC_EXCHANGE_GENERIC_COIN_CONFLICTING_DENOMINATION_KEY``
and ``TALER_EC_EXCHANGE_GENERIC_COIN_CONFLICTING_AGE_HASH``, which
now carry the stored denomination signature (and age commitment
- hash) of the coin so that clients can verify the conflict
+ hash) of the coin so that clients can verify the conflict;
+ adds the required ``reserve_pub`` field to the
+ :http:post:`/reveal-withdraw </reveal-withdraw>` request body,
+ so that a withdraw operation is identified by the pair
+ (reserve, commitment) everywhere
**Upcoming versions:**
diff --git a/core/exchange/post-reveal-withdraw.rst b/core/exchange/post-reveal-withdraw.rst
@@ -12,6 +12,12 @@
The request body is a `RevealWithdrawRequest`.
This endpoint was introduced in this form in protocol **v32**.
+ Since protocol **v42** the request body must also carry the
+ ``reserve_pub`` of the original :http:post:`/withdraw </withdraw>`
+ request: a withdraw operation is identified by the pair
+ (``reserve_pub``, ``planchets_h``), as in
+ :http:post:`/recoup-withdraw </recoup-withdraw>`. A given
+ ``planchets_h`` may legitimately exist under more than one reserve.
:http:statuscode:`200 OK`:
The coin's' secret material matched the commitment and the original request was well-formed.
@@ -23,7 +29,8 @@
- ``TALER_EC_EXCHANGE_WITHDRAW_REVEAL_INVALID_HASH``
:http:statuscode:`404 Not found`:
- The provided commitment $RCH is unknown.
+ The given reserve has no withdraw operation under the provided
+ ``planchets_h``.
Error code: ``TALER_EC_EXCHANGE_WITHDRAW_COMMITMENT_UNKNOWN``
:http:statuscode:`413 Request entity too large`:
The uploaded body is to long, it exceeds the size limit.
@@ -50,6 +57,12 @@
interface RevealWithdrawRequest {
+ // Public key of the reserve that the original call to
+ // ``/withdraw`` was made from. Together with ``planchets_h``
+ // this identifies the withdraw operation.
+ // Since protocol **v42**.
+ reserve_pub: EddsaPublicKey;
+
// This is the running hash of all blinded planchets
// from the previous call to ``/withdraw``.
planchets_h: string;