Commit Graph

20 Commits

Author SHA1 Message Date
Christian Grothoff
e7aeec04f4
The current recoup API is broken. I guess this is another example where "trivial" API changes turn out to have (multiple!) unexpected consequences.
The current "/recoup" API does not have clear idempotency semantics, as we've discussed on the phone.  This is already bad by itself, as it makes it hard to write down what the API does other than "whatever the implementation does".

However, it actually breaks correctness in this (admittedly kinda contrived, but not impossible) case:

Say that we have a coin A obtained via withdrawal and a coin B obtained via refreshing coin A. Now the denominations of A gets revoked..

The wallet does a recoup of A for EUR:1.

Now the denomination of B also gets revoked.  The wallet recoups B (incidentally also for EUR:1) and now A can be recouped again for EUR:1.  But now the exchange is in a state where it will refuse a legitimate recoup request for A because the detection for an idempotent request kicks in.

This is IMHO bad API design, and the exchange should simply always recoup the maximum amount.

Furthermore, we usually follow the principle of "API calls that take up DB space are paid".  With the current recoup API, I can do many tiny recoup requests which the exchange then has to store, right?

I guess it would not be a big change to remove the "amount" value from the recoup/recoup-refresh request bodies, right?

- Florian
2022-01-11 12:47:35 +01:00
Christian Grothoff
87376e02eb
protocol v12 changes (/recoup split, signature changes) plus database sharding plus O(n^2)=>O(n) worst-case complexity reduction on coin balance checks 2021-12-25 13:56:40 +01:00
Christian Grothoff
1acc851deb
-fix recoup ugliness 2021-12-16 20:18:44 +01:00
Christian Grothoff
1a1fafbd43
introducing GNUNET_TIME_Timestamp, recoup now with amounts 2021-12-14 16:04:40 +01:00
Christian Grothoff
b148a5a81a
rename fest 2021-10-27 13:23:14 +02:00
Christian Grothoff
f0951d34dd
-fix more FTBFS 2021-10-27 09:23:13 +02:00
Christian Grothoff
1d54400a02
-more eliminations of json_pack 2021-07-31 20:27:16 +02:00
Christian Grothoff
ca5f0c4d6f
fix #6786: do not die on bogus URL 2021-03-05 21:41:55 +01:00
Christian Grothoff
4b9fb610d8
do not log error on MHD_HTTP_GONE status code, revocation is a legitimate reply 2020-12-20 20:03:59 +01:00
Christian Grothoff
8d312562bf
adjust ECs 2020-11-07 18:51:54 +01:00
Christian Grothoff
92ac6dd11a
implement new behavior in exchange httpd and libtalerexchange (for #6416) 2020-07-08 21:24:10 +02:00
Christian Grothoff
50bc862a68
adapt to new GNUnet sign API (#6164) 2020-04-08 18:18:20 +02:00
Christian Grothoff
bf8c5982a2
make exchange API more uniform in how information is returned 2020-04-05 22:05:38 +02:00
Florian Dold
6a46b13e80
make recoup idempotent and simplify response 2020-03-20 14:01:59 +05:30
Christian Grothoff
10c56bcea0
improving benchmarking logic, including more timings 2020-03-20 02:36:50 +01:00
Christian Grothoff
a9b3c564bd
rename BANK_excecute_wire_transfer to BANK_transfer, improve error handling when curl_easy_init() fails 2020-03-03 17:14:00 +01:00
Christian Grothoff
cdc8c5b57b
limit redirects 2020-02-29 16:54:58 +01:00
Christian Grothoff
582ce77d93
updating libtalerexchange to new REST API (#6067) 2020-02-26 22:24:22 +01:00
Christian Grothoff
d22a52cc7a
fix copyright headers as per CA 2020-01-19 19:21:58 +01:00
Christian Grothoff
db669ee495
payback -> recoup stranglers 2020-01-18 23:49:37 +01:00