Commit Graph

17 Commits

Author SHA1 Message Date
Christian Grothoff
427417b835
towards support for new reserve history/status APIs 2022-03-20 13:20:45 +01:00
Christian Grothoff
0995bdd1d0
-get tests to pass 2022-02-11 09:36:01 +01:00
Christian Grothoff
031e365814
fix FTBFS of main logic 2022-02-07 10:55:07 +01:00
Christian Grothoff
5ff3189075
-fix recoup testing cmds 2022-02-06 20:04:36 +01:00
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
1a1fafbd43
introducing GNUNET_TIME_Timestamp, recoup now with amounts 2021-12-14 16:04:40 +01:00
Christian Grothoff
ba627bf84c
-fixes 2021-11-05 22:22:47 +01:00
Christian Grothoff
9358b886f1
bugfix! 2021-11-01 22:57:46 +01:00
Christian Grothoff
382fb837bd
-work on testing FTBFS 2021-10-27 21:59:04 +02:00
Christian Grothoff
bf8c5982a2
make exchange API more uniform in how information is returned 2020-04-05 22:05:38 +02:00
Christian Grothoff
2b27d4ca8b
remove bogus warnings 2020-03-29 04:16:00 +02:00
Christian Grothoff
9d9b0e0e57
split recoup and revoke commands into two files for better readability 2020-03-28 20:42:20 +01:00
Christian Grothoff
9add4cf405
doxygen updates 2020-03-22 21:36:42 +01:00
Florian Dold
6a46b13e80
make recoup idempotent and simplify response 2020-03-20 14:01:59 +05:30
Florian Dold
26ad7c8191
spelling of 'mismatch' 2020-01-20 02:11:03 +01:00
Florian Dold
72a629a8be
move testing logic and integration tests into separate directory 2020-01-19 15:23:33 +01:00