23.62. DD 61: Batched Withdraw#

Design status:

Accepted

Implementation status:

Implemented

DD shepherd:

TBD

Historical contributors:

Özgür Kesim

First published:

2025-04-12

Last substantive change:

2025-04-12

Implementation evidence:

taler-typescript-core (2022-05-03), exchange (2025-01-09)

Normative references:

core/exchange/post-withdraw.rst

Note

This DD was reserved as a design placeholder and was never expanded. The current POST /withdraw specification is normative and supersedes the former endpoint named batch_withdraw.

23.62.1. Summary#

We replace the previous single-coin withdraw protocol with a variant that allows for batched withdrawal of multiple coins in only one (or two, in case of Clause-Schnorr) roundtrips.

23.62.2. Motivation#

The original single-coin withdraw requires too many roundtrips, one for each coin, whenever a client wants to withdraw multiple coins.

23.62.3. Requirements#

One idempotent request must be able to withdraw multiple coins from the same reserve.

23.62.4. Proposed Solution#

Use the current POST /withdraw request with arrays of denominations and coin envelopes, as specified by the normative exchange API.

23.62.5. Definition of Done#

  • [x] batched withdrawal implemented by wallet-core

  • [x] current POST /withdraw endpoint specified and implemented

  • [x] former batch_withdraw endpoint removed

23.62.6. Alternatives#

Retain one request per coin, with the associated extra round trips.

23.62.7. Drawbacks#

The request and response are larger and clients must persist all coin inputs before sending the request.

23.62.8. Discussion / Q&A#

(This should be filled in with results from discussions on mailing lists / personal communication.)