lsd0009

LSD0009: The GNU Taler Protocol
Log | Files | Refs | README

commit 19f871a71e034f89ba2502be08a4c12622a9fa82
parent 9479b663fda654482588626d3fe10c1f8415909c
Author: Mikolai Gütschow <mikolai.guetschow@tu-dresden.de>
Date:   Wed, 29 Apr 2026 14:19:36 +0200

protocol: add recoup protocol

Diffstat:
Mdraft-guetschow-taler-protocol.md | 157++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Mdraft-guetschow-taler-protocol.xml | 601+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
2 files changed, 510 insertions(+), 248 deletions(-)

diff --git a/draft-guetschow-taler-protocol.md b/draft-guetschow-taler-protocol.md @@ -68,7 +68,7 @@ Use at your own risk! - `a * b (mod N)` / `a ** b (mod N)` denotes the multiplication / exponentiation of multiple precision integers a and b, modulo N - `for`, `if`, variable assignment `=`, and conditional operators are to be interpreted like their Python/Julia equivalents - `data.key` denotes the property `key` on the object `data` -- `0..n` denotes the exclusive range of integer numbers from `0` to `n-1` +- `0..n` denotes the exclusive range of integer numbers from `0` to `n`, i.e., `0, 1, 2, ..., n-1` - `⟨dataᵢ⟩` within a context of `i = 0..n` denotes `n` objects `dataᵢ`, represented in memory as a continuous array - `⟨dataᵢ.key⟩` within a context of `i = 0..n` denotes an array of the `n` properties `key` of all `n` objects `dataᵢ` @@ -334,11 +334,11 @@ and `Convert-Point-Ed25519-Curve25519(p)` which implements the birational map of pub' = Convert-Point-Ed25519-Curve25519(pub) shared' = X25519(priv, pub') shared = SHA-512(shared') +~~~ {::comment} see GNUNET_CRYPTO_eddsa_ecdh {:/} -~~~ ~~~ ECDH-GetPub(priv) -> pub @@ -801,8 +801,6 @@ Persist (contract, ⟨sigᵢ⟩, ⟨depositᵢ⟩) // TODO: explain CoinSelection -// TODO: maybe introduce symbol for pub/priv - ~~~ (M3) deposit check (merchant) @@ -911,11 +909,12 @@ Check Ed25519-Verify(exchange.pub, msg, sig) The wallet obtains `n` new coins `⟨coinᵢ⟩` of denominations `⟨denomᵢ⟩` in exchange for one old `coin` of denomination `denom` from the exchange. -There are two reasons why a wallet needs to do this: +There are three reasons why a wallet needs to do this: 1. Obtaining unlinkable change after using only a part of the coin's value during a payment (cf. {{payment}}) or deposit (cf. {{deposit}}), i.e. where `contribution <= denom.value` -2. Renewing a coin before it deposit-expires. +2. Obtaining unlinkable change after a successful refund (cf. {{refund}}) +3. Renewing a coin before it deposit-expires The sum of the refresh fee of `denom` and the new denominations' values and withdrawal fees (defined by the exchange) must be smaller or equal to the residual value of the old `coin`. @@ -1133,11 +1132,13 @@ for i in 0..n: ### Link {#link} -// todo: add introductory text +Coins ⟨coinᵧᵢ⟩ obtained via the refresh protocol (cf. {{refresh}}) can be regenerated +with the knowledge of the old coin's private key `coin.priv` using the link protocol, +integrated in the coin history endpoint. ~~~ wallet exchange -Knows coin Knows refresh_record for coin +Knows coin Knows refresh_record for coin.pub | | +----------------------+ | | (W1) history request | | @@ -1225,7 +1226,145 @@ if ⟨blind_sigᵢ⟩ returned: ## Refund {#refund} -// todo +A wallet can request a refund for an order from the merchant after it has been completed successfully +(cf. {{payment}}) and before the merchant has been paid out by the exchange (i.e., before `contract.wire_deadline`). +The merchant needs to approve the refund via its business logic, +and is free to decide the total amount of the refund +as well as which coins' deposit operations (cf. {{deposit}}) are (potentially partly) invalidated. +After the exchange has accepted the refund request, +the coins obtain their (partial) value back. +The wallet should proceed to refresh (cf. {{refresh}}) the coins before spending them again +to obtain unlinkability. + +In case the wallet itself has used deposit to its own payto, +it can act as the merchant in the protocol below. + +// todo: if proves practical, similar strucuture could be used for pay/deposit +(interaction) between wallet, merchant and exchange + +~~~ + wallet merchant exchange +Knows order.id Knows merchant.priv Knows deposit_record +Knows contract | for coinᵢ.pub + | | | ++---------------------+ | | +| (W1) refund request | | | ++---------------------+ | | + | | | + |- /orders/{order.id}/refund ->| | + | (h_contract) | | + | | | + | +------------------------+ | + | | (M1) refund processing | | + | +------------------------+ | + | | | + | |- /coins/{coinᵢ.pub}/refund ->| + | | (valueᵢ, h_contract, id, | + | | merchant.pub, sigᵢ) | + | | | + | | +-------------------+ + | | | (E1) refund check | + | | +-------------------+ + | | | + | |<--- (exchange.pub, sigᵢ) ----| + | | | + | +--------------------------+ | + | | (M2) refund confirmation | | + | +--------------------------+ | + | | | + |<-----(value, ⟨refundᵢ⟩,------| | + | merchant.pub) | | // todo: why merchant.pub if no sig transmitted? + | | | ++-----------------------+ | | +| (W2) refund reception | | | ++-----------------------+ | | + | | | +~~~ + +where (for RSA, without age-restriction) + +{::comment} + +⟨ᵧₖᵢ⟩ +{:/} + +~~~ +(W1) refund request (wallet) + +h_contract = SHA-512(canonicalJSON(contract)) +~~~ + +{::comment} + +⟨ᵧₖᵢ⟩ +{:/} + +~~~ +(M1) refund processing (merchant) + +Check h_contract known and refund possible +time = now() +⟨coinᵢ⟩ = Lookup by h_contract +id = ? +for i in 0..n: + denomᵢ = Lookup by coinᵢ.h_denom + valueᵢ = refund amount // todo: split wisely + msgᵢ = Gen-Msg(MERCHANT_REFUND, + ( h_contract | coinᵢ.pub | id | valueᵢ | denomᵢ.fee_refund )) + sigᵢ = Ed25519-Sign(merchant.priv, msgᵢ) +~~~ + +{::comment} + +⟨ᵧₖᵢ⟩ +{:/} + +~~~ +(E1) refund check and confirmation (exchange) + +deposit_record = Lookup by h_contract // todo: needs to be persisted before with order.id and used coins! +Check coinᵢ.pub part of deposit_record +denomᵢ = Lookup by coinᵢ.pub +msgᵢ = Gen-Msg(MERCHANT_REFUND, + ( h_contract | coinᵢ.pub | id | valueᵢ | denomᵢ.fee_refund )) +Check Ed25519-Verify(merchant.pub, msgᵢ, sigᵢ) +Check valueᵢ >= denomᵢ.fee_refund +Check refund possible (prior to wire transfer deadline) +remove/update scheduled wire transfer +mark coin part as unspent +msgᵢ = Gen-Msg(MERCHANT_REFUND_OK, SHA-512(order.id)) // todo: hashing string without terminating \0 +sigᵢ = Ed25519-Sign(exchange.priv, msgᵢ) +~~~ + +{::comment} + +⟨ᵧₖᵢ⟩ +{:/} + +~~~ +(M2) refund confirmation (merchant) + +for i in 0..n: + msgᵢ = Gen-Msg(MERCHANT_REFUND_OK, SHA-512(order.id)) // todo: hashing string without terminating \0 + Check Ed25519-Verify(exchange.pub, msgᵢ, sigᵢ) + update business logic + refundᵢ = (valueᵢ, sigᵢ, id, coinᵢ.pub, time) +value = sum ⟨valueᵢ⟩ +~~~ + +{::comment} + +⟨ᵧₖᵢ⟩ +{:/} + +~~~ +(W2) refund reception (wallet) + +for i in 0..n: + (valueᵢ, sigᵢ, id, coinᵢ.pub, time) = refundᵢ +update persistent transaction information +refresh ⟨coinᵢ⟩ +~~~ ## Recoup {#recoup} diff --git a/draft-guetschow-taler-protocol.xml b/draft-guetschow-taler-protocol.xml @@ -24,7 +24,7 @@ <email>mikolai.guetschow@tu-dresden.de</email> </address> </author> - <date year="2026" month="April" day="08"/> + <date year="2026" month="April" day="29"/> <workgroup>independent</workgroup> <keyword>taler</keyword> <keyword>cryptography</keyword> @@ -82,7 +82,7 @@ Use at your own risk!</t> <t><tt>data.key</tt> denotes the property <tt>key</tt> on the object <tt>data</tt></t> </li> <li> - <t><tt>0..n</tt> denotes the exclusive range of integer numbers from <tt>0</tt> to <tt>n-1</tt></t> + <t><tt>0..n</tt> denotes the exclusive range of integer numbers from <tt>0</tt> to <tt>n</tt>, i.e., <tt>0, 1, 2, ..., n-1</tt></t> </li> <li> <t><tt>⟨dataᵢ⟩</tt> within a context of <tt>i = 0..n</tt> denotes <tt>n</tt> objects <tt>dataᵢ</tt>, represented in memory as a continuous array</t> @@ -322,10 +322,6 @@ and <tt>Convert-Point-Ed25519-Curve25519(p)</tt> which implements the birational pub' = Convert-Point-Ed25519-Curve25519(pub) shared' = X25519(priv, pub') shared = SHA-512(shared') - -{::comment} -see GNUNET_CRYPTO_eddsa_ecdh -{:/} ]]></artwork> <artwork><![CDATA[ ECDH-GetPub(priv) -> pub @@ -759,7 +755,6 @@ for i in 0..n: Persist (contract, ⟨sigᵢ⟩, ⟨depositᵢ⟩) ]]></artwork> <t>// TODO: explain CoinSelection</t> - <t>// TODO: maybe introduce symbol for pub/priv</t> <artwork><![CDATA[ (M3) deposit check (merchant) @@ -861,13 +856,16 @@ Check Ed25519-Verify(exchange.pub, msg, sig) <name>Refresh</name> <t>The wallet obtains <tt>n</tt> new coins <tt>⟨coinᵢ⟩</tt> of denominations <tt>⟨denomᵢ⟩</tt> in exchange for one old <tt>coin</tt> of denomination <tt>denom</tt> from the exchange. -There are two reasons why a wallet needs to do this:</t> +There are three reasons why a wallet needs to do this:</t> <ol spacing="normal" type="1"><li> <t>Obtaining unlinkable change after using only a part of the coin's value during a payment (cf. <xref target="payment"/>) or deposit (cf. <xref target="deposit"/>), i.e. where <tt>contribution &lt;= denom.value</tt></t> </li> <li> - <t>Renewing a coin before it deposit-expires.</t> + <t>Obtaining unlinkable change after a successful refund (cf. <xref target="refund"/>)</t> + </li> + <li> + <t>Renewing a coin before it deposit-expires</t> </li> </ol> <t>The sum of the refresh fee of <tt>denom</tt> and the new denominations' values and withdrawal fees (defined by the exchange) @@ -1040,7 +1038,7 @@ for i in 0..n: <t>// todo: add introductory text</t> <artwork><![CDATA[ wallet exchange -Knows coin Knows refresh_record for coin +Knows coin Knows refresh_record for coin.pub | | +----------------------+ | | (W1) history request | | @@ -1109,7 +1107,110 @@ if ⟨blind_sigᵢ⟩ returned: </section> <section anchor="refund"> <name>Refund</name> - <t>// todo</t> + <t>A wallet can request a refund for an order after it has been completed successfully +(cf. <xref target="payment"/>) and before the deadline for the wire transfer from the exchange +to the merchant's bank account has passed. +The merchant needs to approve the refund via its business logic, +and is free to decide the total amount of the refund +as well as which coins' deposit operations (cf. <xref target="deposit"/>) are (potentially partly) invalidated. +After the exchange has accepted the refund request, +the coins obtain their (partial) value back. +The wallet should proceed to refresh (cf. <xref target="refresh"/>) the coins before spending them again +to obtain unlinkability.</t> + <t>// todo: if proves practical, similar strucuture could be used for pay/deposit +(interaction) between wallet, merchant and exchange</t> + <artwork><![CDATA[ + wallet merchant exchange +Knows order.id Knows merchant.priv Knows deposit_record +Knows contract | for coinᵢ.pub + | | | ++---------------------+ | | +| (W1) refund request | | | ++---------------------+ | | + | | | + |- /orders/{order.id}/refund ->| | + | (h_contract) | | + | | | + | +------------------------+ | + | | (M1) refund processing | | + | +------------------------+ | + | | | + | |- /coins/{coinᵢ.pub}/refund ->| + | | (valueᵢ, h_contract, id, | + | | merchant.pub, sigᵢ) | + | | | + | | +-------------------+ + | | | (E1) refund check | + | | +-------------------+ + | | | + | |<--- (exchange.pub, sigᵢ) ----| + | | | + | +--------------------------+ | + | | (M2) refund confirmation | | + | +--------------------------+ | + | | | + |<-----(value, ⟨refundᵢ⟩,------| | + | merchant.pub) | | // todo: why merchant.pub if no sig transmitted? + | | | ++-----------------------+ | | +| (W2) refund reception | | | ++-----------------------+ | | + | | | +]]></artwork> + <t>where (for RSA, without age-restriction)</t> + <artwork><![CDATA[ +(W1) refund request (wallet) + +h_contract = SHA-512(canonicalJSON(contract)) +]]></artwork> + <artwork><![CDATA[ +(M1) refund processing (merchant) + +Check h_contract known and refund possible +time = now() +⟨coinᵢ⟩ = Lookup by h_contract +id = ? +for i in 0..n: + denomᵢ = Lookup by coinᵢ.h_denom + valueᵢ = refund amount // todo: split wisely + msgᵢ = Gen-Msg(MERCHANT_REFUND, + ( h_contract | coinᵢ.pub | id | valueᵢ | denomᵢ.fee_refund )) + sigᵢ = Ed25519-Sign(merchant.priv, msgᵢ) +]]></artwork> + <artwork><![CDATA[ +(E1) refund check and confirmation (exchange) + +deposit_record = Lookup by h_contract // todo: needs to be persisted before with order.id and used coins! +Check coinᵢ.pub part of deposit_record +denomᵢ = Lookup by coinᵢ.pub +msgᵢ = Gen-Msg(MERCHANT_REFUND, + ( h_contract | coinᵢ.pub | id | valueᵢ | denomᵢ.fee_refund )) +Check Ed25519-Verify(merchant.pub, msgᵢ, sigᵢ) +Check valueᵢ >= denomᵢ.fee_refund +Check refund possible (prior to wire transfer deadline) +remove/update scheduled wire transfer +mark coin part as unspent +msgᵢ = Gen-Msg(MERCHANT_REFUND_OK, SHA-512(order.id)) // todo: hashing string without terminating \0 +sigᵢ = Ed25519-Sign(exchange.priv, msgᵢ) +]]></artwork> + <artwork><![CDATA[ +(M2) refund confirmation (merchant) + +for i in 0..n: + msgᵢ = Gen-Msg(MERCHANT_REFUND_OK, SHA-512(order.id)) // todo: hashing string without terminating \0 + Check Ed25519-Verify(exchange.pub, msgᵢ, sigᵢ) + update business logic + refundᵢ = (valueᵢ, sigᵢ, id, coinᵢ.pub, time) +value = sum ⟨valueᵢ⟩ +]]></artwork> + <artwork><![CDATA[ +(W2) refund reception (wallet) + +for i in 0..n: + (valueᵢ, sigᵢ, id, coinᵢ.pub, time) = refundᵢ +update persistent state about transaction +refresh ⟨coinᵢ⟩ +]]></artwork> </section> <section anchor="recoup"> <name>Recoup</name> @@ -1238,7 +1339,7 @@ if ⟨blind_sigᵢ⟩ returned: <refcontent>National Institute of Standards and Technology (U.S.)</refcontent> </reference> </references> - <?line 1250?> + <?line 1385?> <section anchor="change-log"> <name>Change log</name> @@ -1251,233 +1352,255 @@ Education and Research (BMBF) within the project Concrete Contracts.</t> </section> </back> <!-- ##markdown-source: -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 -9XnH+f9L/aigpJ4AAA== +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 +BRwMyKZNZ8FXQEU/O2k1emXf0NGQDYQp9fbH8uxcW7nA5Lpx7hpvyiCcUCqQ +bqsY2H8j7b7YFa4QD1qCEnNTJBhfxKHxigIF+AC9PccN9YJucInNOkHQ1X6j +IhMVHug9JjzMnKK7lDvYB1hHeDcPltfhvnMo5ZRbNKBPbYaYvKJK66vW5Slm +O0ZYNw1nWMIk1kpSLOnGrXVnUjvVcGZF3zKxDKgr0t8sBr9B6P0U3AEWBDvJ +94Hmr4GoMdAW/j8cd/B+BdETRw/34f8vjh9bYfYymH1aYfdVFLaL9FwmX71p +2Q3fQwZrVaRs0qykm9ZLsL77nNUHKzos6amJ0iPM5r1XjOEofNMjDazo0pDB +gh+fFs4eDPdlyhjC/KYZrJsIEMWSrFlvU4behxiBllWQti09hyTgc4crxGjV +nMuWsrynSudqg8MGeQ15eJc5qw/WXObNhAFWZFRUszDwj1/1KFrV5r+NSNxE +GO6V/hLnaT7IzDWwLEvYMrV8w/POz3sSgKXcaFK1WgC4amS0WgLeZc63X6ed +qrUytMLK0IILlMbR6Jo3l1USFUtL8NCFzsPVOh++1kzQ6hKi/r46KKGSb1vb +n7U8c/2DAJMuyJ/VV5OwGTGhCA+/K/yGhphiVnPYWZJa01yGhfxqSUJZWTd0 +IRdupZJO7TyWqnKAQn421VJishSjddoWD5JrRnWl0rPrPUovMalL94OMdMxr +F4WezakWja+8g3AuvYS15JNopkpBGTm0QcoVnm1PJgEGfWMcpzMKqDRujqVY +udiYJzq62sB8gt5YzVQmWo2GiWWVVobJcEw8k4F3mahSVs3kmnOAa9SpNVUx +gFH4RRTO6XYSiKa6ml0aTK3NMRxS2x4FViorppj0kdg6E2sIr9z1ttjQA3Xw +XVlXqHKvJdeZ2k68WPFsDjFyCLEw4E0qftJ/egbeXdsLZUYkPlQOqV2VwmC2 +15+lZabpas407pVhSd0EsGABZbINQLQEK6b+/uTZkXETWtXc2dPDY0zYn/b3 +nx2dHu/tnyK0pnVdMtKJpxaykU1WvxS19whtbW7N9YuqybUqnhWicRvk9NnB +sx21SdFh48cFJnTMjB58Vb2+coxXAUV0c8A+cPqJjNU5U+BKvSk0vC6TGpfS +pF0wU6ozO/qGVDsl4IE3kevxVOy7685iENd9ZZiPOBPCI14Nl99J8TTIzg8i +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 +JkywS/yFdG/e9f4/fQZjIeOzAAA= -->