taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit 3e9ace12f95af4403fd3c032ffe3dec4d8d29ef2
parent 309632dc2cd797aa01a8c2a0e11242d160e3beec
Author: Özgür Kesim <oec-taler@kesim.org>
Date:   Fri, 10 Jan 2025 13:13:41 +0100

[exchange:withdraw] simplify blinded_coin_evs

Diffstat:
Mcore/api-exchange.rst | 56+++++++++++++++++++++++---------------------------------
1 file changed, 23 insertions(+), 33 deletions(-)

diff --git a/core/api-exchange.rst b/core/api-exchange.rst @@ -1680,7 +1680,7 @@ Withdraw and an additional field ``maximum_allowed_age`` for the maximum age (in years) that the client can commit to in a call to ``/withdraw``, this time with ``max_age`` set accordingly and ``blinded_coin_evs`` being an array - of elements of type `AgeCoinEnvelope`. + of ``n*kappa`` elements of type `CoinEnvelope`. 3. the provided value for ``max_age`` is higher than the allowed value according to the reserve's birthday. The response comes with a standard @@ -1720,30 +1720,35 @@ Withdraw interface WithdrawRequest { // Array of ``n`` hash codes of denomination public keys to order. - // The sum of all denomination's values and fees MUST be at most the - // balance of the reserve. The balance of the reserve will be - // immediatley reduced by that amount. + // The sum of all denomination's values and fees MUST be + // at most the balance of the reserve. The balance of + // the reserve will be immediatley reduced by that amount. // If ``max_age`` is set, these denominations MUST support // age restriction as defined in the output to /keys. denoms_h: HashCode[]; // If set, the maximum age to commit to. This implies: - // 1.) MUST be the same value as the maximum age in the reserve. - // 2.) ``blinded_planchets`` MUST be an array of type `AgeCoinEnvelope`. - // 3.) the denominations in ``denoms_h`` MUST support age restriction. + // 1.) it MUST be the same value as the maximum age + // of the reserve. + // 2.) ``blinded_coin_evs`` MUST be an array of ``n*kappa`` + // 3.) the denominations in ``denoms_h`` MUST support + // age restriction. max_age?: number; - // ``n`` arrays of blinded coin envelopes. - // If ``max_age`` is not set, each entry MUST be of type `CoinEnvelope`. - // If ``max_age`` is set, the following rules apply: - // Each entry MUST be of type `AgeCoinEnvelope` to represent ``kappa`` - // canditates for one particular age-restricted coin. - // The exchange will respond with an index ``gamma``, which is the - // index that shall remain undisclosed during the subsequent - // reveal phase. The SHA512 hash $ACH over the blinded coin - // envelopes is the commitment that is later used as the key to - // the reveal-URL. - blinded_coin_evs: BlindedCoinEnvelope[]; + // Array of blinded coin envelopes of type `CoinEnvelope`. + // If ``max_age`` is not set, MUST be n entries. + // If ``max_age`` is set, MUST be ``n*kappa`` entries, + // arranged in [0..n)..[0..n), with the first n entries + // belonging to kappa=0 etc. + // In case of age restriction, the exchange will + // respond with an index ``gamma``, which is the index + // that shall remain undisclosed during the subsequent + // reveal phase. + // The SHA512 hash $ACH over the blinded coin envelopes is the + // commitment that is later used as the key to the reveal-URL. + // This hash value along with the reserve's public key + // will also be used for recoup operations, if needed. + blinded_coin_evs: CoinEnvelope[]; // Signature of `TALER_WithdrawRequestPS` created with // the `reserves's private key <reserve-priv>` @@ -1751,21 +1756,6 @@ Withdraw reserve_sig: EddsaSignature; } - .. ts:def:: BlindedCoinEnvelope - - type BlindedCoinEnvelope = - | CoinEnvelope - | AgeCoinEnvelope - - - .. ts:def:: AgeCoinEnvelope - - // Represents ``kappa`` candidates of one age restricted coin. - // The age-restriction MUST have been calculated according - // to the description of `AgeRestrictedCoinSecret`. - type AgeCoinEnvelope = CoinEnvelope[kappa]; - - .. ts:def:: WithdrawResponse interface WithdrawResponse {