exchange/contrib
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
..
exchange-template remove obsolete configuration options 2020-12-17 16:19:28 +01:00
gana@b0dd85e818 The current recoup API is broken. I guess this is another example where "trivial" API changes turn out to have (multiple!) unexpected consequences. 2022-01-11 12:47:35 +01:00
guix/gnu/packages add gnurl deps 2018-08-17 13:53:32 +02:00
nix move nix files to separate dir 2019-06-27 00:49:48 +02:00
pp update tos 2021-09-30 21:43:48 +02:00
samples regenerate samples based on current auditor logic 2017-11-20 21:57:03 +01:00
tos update tos 2021-09-30 21:43:48 +02:00
auditor-report.tex.j2 fix test issues with new DB schema 2021-01-07 22:24:19 +01:00
coverage.sh mark as executable 2019-12-15 12:44:16 +01:00
gana-update.sh -fix FTBFS 2021-08-01 19:30:57 +02:00
gana.sh do not upgrade gana to master on bootstrap (see #6839) 2021-04-09 16:36:35 +02:00
gnunet.tag fix misc doxygen issues 2021-04-21 20:28:30 +02:00
Makefile.am install into usr/share/taler/exchange 2021-07-26 16:16:52 +02:00
microhttpd.tag -fix doxygen issues 2021-08-01 23:16:55 +02:00
taler-bank-manage-testing log more nicely if authentication failed; do use new changepassword_unsafe to set bank pw -- and not others; do show stderr output of pybank in test cases 2020-10-30 22:17:37 +01:00
taler-nexus-prepare adjust LibEuFin binary names 2020-06-14 19:10:28 +05:30
uncrustify_precommit fix misc typos 2020-07-22 23:56:52 +02:00
uncrustify-mode.el fix misc typos 2020-07-22 23:56:52 +02:00
uncrustify.cfg fix uncrustify 2021-12-11 21:53:30 +01:00
uncrustify.el emacs integration 2019-08-25 21:12:53 +02:00
uncrustify.sh print message if crustify is not installed 2019-08-25 16:13:11 +02:00
update-pp.sh add proper i18n for pp 2020-02-07 00:54:47 +01:00
update-tos.sh proper i18n support for TOS 2020-02-07 00:44:35 +01:00