Commit Graph

86 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
aaaaa9a103
fix amount denormalization issue 2022-01-10 09:04:09 +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
1b23857f2c
[age restriction] progress 8/n
More work towards support for extensions and age restriction

- updated gana
- added handler for DB-Event
- added TEH_extensions_init() and _done()
- added global for age restriction
- added stub for post handler
- added SQL-table for extension metadata
- added enum type for extensions and other data structures

Also:
- fixed some warnings -Wmaybe-unitialized
2021-12-23 15:15:33 +01:00
Christian Grothoff
62444504f7
denormalize reserve_pub in reserve tables to enable sharding 2021-12-19 13:43:33 +01:00
Christian Grothoff
1acc851deb
-fix recoup ugliness 2021-12-16 20:18:44 +01:00
Christian Grothoff
fba91c63d5
introduce stored procedure for coin balance check 2021-12-09 23:13:39 +01:00
Christian Grothoff
f3629bdafc
improve SQL comments 2021-12-06 15:15:59 +01:00
Christian Grothoff
6ba9f934c4
-add FIXMEs 2021-12-05 19:23:16 +01:00
Christian Grothoff
67de20d26e
major rework of withdraw transaction to use stored procedure and (presumably) reduce serialization failures by avoiding SELECT before INSERT 2021-12-05 17:16:00 +01:00
Christian Grothoff
c8480d97a1
try to optimize aggregator queries 2021-11-29 10:09:21 +01:00
Christian Grothoff
2d1a618d3d
sql fix 2021-11-27 22:58:50 +01:00
Christian Grothoff
e46fb30965
refactor get_ready_deposits query and index to hopefully make query faster 2021-11-27 14:56:28 +01:00
Christian Grothoff
422b0ffd4c
fix oauth_username issue 2021-11-16 19:31:27 +01:00
Christian Grothoff
e5ead88057
complete oauth logic (in theory) 2021-11-15 20:00:45 +01:00
Christian Grothoff
cd8d4bede1
add missing file 2021-11-07 11:41:53 +01:00
Christian Grothoff
bae7ddbf4e
sql fix 2021-11-06 19:46:00 +01:00
Christian Grothoff
57acad487d
move extension options to external table 2021-11-06 19:04:54 +01:00
Christian Grothoff
1408e1587b
introduce invalid key type 2021-11-01 23:49:13 +01:00
Christian Grothoff
22ce5bff77
fix sharding 2021-11-01 18:05:01 +01:00
Christian Grothoff
de8e0907aa
DB test passes again 2021-10-31 15:32:20 +01:00
Christian Grothoff
35e3506660
fixing SQL statements 2021-10-31 13:27:50 +01:00
Christian Grothoff
43ee9da01d
misc fixes 2021-10-31 12:49:51 +01:00
Christian Grothoff
2faf102a05
-more dB work 2021-10-30 21:26:40 +02:00
Christian Grothoff
bc57abc3da
-more dB work 2021-10-30 20:49:23 +02:00
Christian Grothoff
08b23fb70a
fix SQL 2021-10-29 11:46:06 +02:00
Christian Grothoff
dbb812414b
database change -- breaks everything 2021-10-27 09:23:11 +02:00
Christian Grothoff
0013ce41e7
hyperaggregation schema proposal 2021-08-31 17:41:46 +02:00
Christian Grothoff
9c51720cbf
fixing parallel fakebank to ensure transactions are ordered, fixing indices/constraint preservation after DB update to 0002 2021-06-21 00:17:16 +02:00
Christian Grothoff
b40afe196c
remove redundant old_coin_pub from link data 2021-01-10 12:15:47 +01:00
Christian Grothoff
13555448b6
change exchange database to use denominations_serial instead of denom_pub_hash as foreign key 2021-01-08 18:14:46 +01:00
Christian Grothoff
ddcf679493
database schema change for #6175 2020-11-24 13:36:17 +01:00
Christian Grothoff
1ca062fc7a
introduce known_coin_id, alas not yet used 2020-07-08 12:35:50 +02:00
Christian Grothoff
4f82885560
towards changing timestamp in deposit confirmation (tests failing) 2020-07-05 16:35:00 +02:00
Christian Grothoff
52d41311ac
new coins => fresh coins, also move comments into the database itself 2020-03-05 23:49:47 +01:00
Christian Grothoff
cdaf1ce69b
rename SQL files to make filenames consistent with versioning name 2020-02-09 16:34:40 +01:00