Commit Graph

1155 Commits

Author SHA1 Message Date
Christian Grothoff
2518da8f45
taler-auditor-sync WiP 2021-01-11 23:02:22 +01:00
Christian Grothoff
278b35a0fb
more work on INSERT statements 2021-01-10 18:40:39 +01:00
Christian Grothoff
af97a44ae6
complete select_serial_by_* SELECT statements 2021-01-10 18:06:18 +01:00
Christian Grothoff
b40afe196c
remove redundant old_coin_pub from link data 2021-01-10 12:15:47 +01:00
Christian Grothoff
ca66a1d1af
fix major bug with SQL statement missing ORDER BY freshcoin_index resulting in possible link failures (but usually lucky with old DB schema) 2021-01-10 00:54:12 +01:00
Christian Grothoff
02ecf68a3d
more optimizations of tables with foreign keys 2021-01-09 13:18:01 +01:00
Christian Grothoff
260e287685
change wire_reference to be uint64_t always; more work on lrbt_callbacks 2021-01-08 23:36:09 +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
40551fa08e
add -i option to taler-auditor 2021-01-06 22:51:55 +01:00
Christian Grothoff
26410a72c2
fix #6666, bump protocol version to 9 2021-01-01 15:48:43 +01:00
Christian Grothoff
57c9054784
implement #6161 2020-12-26 15:55:34 +01:00
Christian Grothoff
fe232f1fed
integrate auditor signature check logic with taler-helper-auditor-coins 2020-12-22 18:27:34 +01:00
Christian Grothoff
a644355c44
address FIXME: pass session when iterating over denominations 2020-12-22 18:13:46 +01:00
Christian Grothoff
c57d2f0468
spell checking issues 2020-12-20 17:11:52 +01:00
Christian Grothoff
699916056b
misc doxygen fixes 2020-12-20 17:10:09 +01:00
Christian Grothoff
f930a8c9d0
simplify further 2020-12-17 15:46:52 +01:00
Christian Grothoff
b74612fc33
update auditordb and test logic to work with new key separation logic (#6175) 2020-12-17 13:04:37 +01:00
Christian Grothoff
6f6c71a8d3
load fees from DB instead of from config, also in wire tools 2020-12-16 19:23:29 +01:00
Christian Grothoff
96b4c139ee
add auditor-enable /-disable commands to taler-exchange-offline tool 2020-12-16 12:56:35 +01:00
Christian Grothoff
04f2e9a4d5
(start to) remove logic no longer needed with new key management 2020-12-14 17:12:48 +01:00
Christian Grothoff
b5d88fc2d1
activating implementation of #6175 2020-12-14 15:42:32 +01:00
Christian Grothoff
3743d200ad
misc clean ups 2020-12-11 23:10:32 +01:00
Christian Grothoff
35bec60894
implement POST /managment/keys 2020-12-10 11:49:20 +01:00
Christian Grothoff
fa1914b267
work on new logic to generate /wire response 2020-12-09 12:31:10 +01:00
Christian Grothoff
22c9321e67
expand exchangedb plugin for new /keys logic 2020-12-06 21:54:32 +01:00
Christian Grothoff
d9ac8e7975
incomplete work on forthcoming /keys implementation 2020-12-06 16:53:29 +01:00
Christian Grothoff
70b0839644
implement new taler-auditor-offline tool 2020-12-06 00:05:45 +01:00
Christian Grothoff
e0b62b0a49
towards offline tool uploading /management/keys 2020-12-05 21:33:30 +01:00
Christian Grothoff
8170e1e9ab
move all TALER_SIGNATURE_SM_-operations to secmod_signatures.c 2020-12-05 19:47:54 +01:00
Christian Grothoff
6cceb617af
centralize (most) offline signing/verifying operations into offline_signatures.c 2020-12-04 20:29:18 +01:00
d3b714922f
conditionally use (un)blinding implementation from libgnunetutil 2020-12-04 12:10:09 +01:00
Christian Grothoff
06b8ed9ba8
start with exchange management test 2020-12-01 09:19:58 +01:00
Christian Grothoff
4b2504a3c3
doxygen fixes 2020-11-30 14:16:42 +01:00
Christian Grothoff
a1af10a832
add API for /management/wire-fees 2020-11-30 14:05:34 +01:00
Christian Grothoff
a3548f0efb
add command to add auditor's denomination signature 2020-11-30 11:51:42 +01:00
Christian Grothoff
e89bb8edaa
more DB functions for new /management/ endpoints 2020-11-29 18:02:00 +01:00
Christian Grothoff
855e7829d7
more work on DB plugin for managemetn API 2020-11-29 17:27:53 +01:00
Christian Grothoff
6b434c626f
work on DB logic, add auditor_name to /management/auditors API 2020-11-29 16:21:10 +01:00
Christian Grothoff
3240844e48
get code for most new endpoints to build (but DB not done) 2020-11-29 14:32:39 +01:00
Christian Grothoff
b65a2f77eb
sketch logic for wire-fee management endpoint 2020-11-28 18:56:29 +01:00
Christian Grothoff
3d8abcc041
more work on new endpoints 2020-11-28 17:18:22 +01:00
Christian Grothoff
a69079ef6c
add cmd to revoke exchange online signing key 2020-11-27 00:36:19 +01:00
Christian Grothoff
b1932df0ce
add new cmd to revoke denominations via HTTP API 2020-11-27 00:26:30 +01:00
Christian Grothoff
1e6091d1dd
cmd to add/del wire methods from list of accounts 2020-11-27 00:05:34 +01:00
Christian Grothoff
98f5960411
cmd to del auditor 2020-11-26 22:54:33 +01:00
Christian Grothoff
1c1d4d9974
cmd to add auditor 2020-11-26 22:49:42 +01:00
Christian Grothoff
2c88cff283
add logic to parse and check secmod signatures 2020-11-26 15:00:34 +01:00
Christian Grothoff
19ca32693a
post keys client logic 2020-11-25 21:55:01 +01:00
Christian Grothoff
4d9b672a72
enable auditor disable client logic 2020-11-25 21:29:04 +01:00
Christian Grothoff
fd91a6aded
implement first new client API 2020-11-25 21:19:13 +01:00
Christian Grothoff
87bc48f513
extended exchange APIs for #6175 2020-11-25 20:26:08 +01:00
Christian Grothoff
77dbb83276
implement exchange online signing key client library 2020-11-23 20:30:10 +01:00
Christian Grothoff
3e37c63fbd
implement sm signing of key announcements 2020-11-23 16:36:07 +01:00
Christian Grothoff
9b68dbb8e6
implementing client library for talking to the crypto helper process 2020-11-21 23:58:00 +01:00
Christian Grothoff
4f0e38ab12
more work on crypto RSA helper 2020-11-14 22:27:50 +01:00
Christian Grothoff
4129b724a0
doxygen fixes, update ChangeLog, bump version 2020-10-03 16:08:01 +02:00
Christian Grothoff
c62a7fdc6b
fix exchange 'make dist' rules 2020-09-11 22:34:08 +02:00
Christian Grothoff
2aca3b5eff
use enum instead of int 2020-08-29 11:55:40 +02:00
Christian Grothoff
0846ab93bc
doxygen fixes 2020-08-29 00:37:37 +02:00
Christian Grothoff
f486df99c8
fail if exchange-account configuration is definitively wrong (#5642) 2020-08-28 23:43:05 +02:00
Christian Grothoff
4bba726356
nicer generic error reporting logic, for #6432 2020-08-25 15:11:56 +02:00
Christian Grothoff
46dde9368f
implement i18n lookup logic for #6458 2020-08-19 18:19:00 +02:00
Christian Grothoff
6256bdb15a
implement #6478, but untested as shown by FIXMEs 2020-08-12 20:12:39 +02:00
Christian Grothoff
26f72f8572
fix refund handling: allow refund increases for the same coin 2020-08-12 13:02:59 +02:00
Christian Grothoff
f1cc1ca208
expose language check logic 2020-08-03 01:16:53 +02:00
Jonathan Buchanan
efa567fbb4
trait for claim token 2020-07-29 01:26:36 -04:00
MS
7c2de4c5e6
payto parser: extract 'subject' parameter. 2020-07-27 12:48:48 +02:00
Christian Grothoff
e1fcb2b26c
define claim token 2020-07-27 10:42:41 +02:00
Jonathan Buchanan
c24a18e1a5
remove TALER_TESTING_cmd_admin_add_incoming_with_instance and TALER_EXCHANGE_refund2 2020-07-23 16:19:02 -04:00
Christian Grothoff
0e808b648a
fix misc typos 2020-07-22 23:56:52 +02:00
Florian Dold
93923c168d
remove refund_fee from refund confirmation message and signature 2020-07-22 19:29:27 +05:30
Christian Grothoff
70090ed9a8
kill order for Florian 2020-07-22 14:48:06 +02:00
Christian Grothoff
a48592d0a4
-doxygen 2020-07-21 10:05:05 +02:00
Jonathan Buchanan
fecfa27727
add parser for json path 2020-07-21 03:14:41 -04:00
Christian Grothoff
b9f1384b52
avoid boolean flags, see #6188 2020-07-16 20:27:52 +02:00
Jonathan Buchanan
5658c4c52b
test retry transfer with same request_id 2020-07-15 20:41:45 -04:00
Christian Grothoff
e1ad498bff
first draft for #6365, test pending 2020-07-16 01:51:45 +02:00
Christian Grothoff
90e756ddea
rename TALER_JSON_hash to TALER_JSON_contract_hash 2020-07-16 00:42:42 +02:00
Christian Grothoff
8f0a4b6095
fix #6133: enable nice shutdown of auditor helpers with CTRL-C 2020-07-15 21:22:44 +02:00
Jonathan Buchanan
8147661f94
test for use-after-free crash when getting keys 2020-07-13 17:31:46 -04:00
Christian Grothoff
7085cfef70
test coin_priv re-use with deposit and refresh, update handling of the error code client-side 2020-07-10 23:09:46 +02:00
Christian Grothoff
ddf95c491a
remove unused/unusable coin_sig, return correct coin_pub in recoup-reveal failure context 2020-07-10 22:33:04 +02:00
Jonathan Buchanan
f708e4d64c
made a uuid trait 2020-07-09 01:39:42 -04:00
Christian Grothoff
92ac6dd11a
implement new behavior in exchange httpd and libtalerexchange (for #6416) 2020-07-08 21:24:10 +02:00
Christian Grothoff
c3cd21508b
synchronize with latest GANA 2020-07-08 19:36:08 +02:00
Christian Grothoff
8e03498a48
add h_denom to melt signatures (for #6416) 2020-07-08 17:59:05 +02:00
Christian Grothoff
97dfbec081
add h_denom_pub to deposit signatures 2020-07-08 15:46:51 +02:00
Christian Grothoff
81fec09268
simplify DB access: do not fetch fields we do not need 2020-07-08 12:35:01 +02:00
Christian Grothoff
575c10027b
also offer API for receiving rounded relative time via JSON 2020-07-05 22:00:01 +02:00
Christian Grothoff
54e63f01df
fix #6408: make sure all timestamps are always rounded when they arrive over JSON, or 400 the requester; similarly don't tolerate anything else as client 2020-07-05 21:54:11 +02:00
Christian Grothoff
49f466df40
move rewind command to exchange, add proper support for rewinding in batches, modify API to rewind to label 2020-07-05 16:50:16 +02:00
Christian Grothoff
b0311807ff
fix FIXME by exposing deposit permission signing in API instead of doing it inside of the testing logic 2020-07-05 16:50:15 +02:00
Christian Grothoff
c88af6df72
fix #6236 2020-07-05 16:50:15 +02:00
Christian Grothoff
5220e8394f
synchronize with latest GANA 2020-07-05 16:50:15 +02:00
Christian Grothoff
dc9f41a794
clarify with/without wire fee issue, sanity checks on currencies 2020-07-05 16:50:15 +02:00
Jonathan Buchanan
e01bcbb2d4
traits for int64_t and json_t 2020-07-05 16:50:14 +02:00
Jonathan Buchanan
f2ec9c08b0
testing traits for uint32_t and GNUNET_TIME_Relative 2020-07-05 16:50:14 +02:00
Christian Grothoff
25ecc97717
add TALER_MHD_parse_internal_json_data() 2020-07-05 16:50:14 +02:00
Jonathan Buchanan
33e7b1f662
TALER_TESTING_cmd_admin_add_incoming_with_ref finds reserve_pub if reserve_priv doesn't exist 2020-07-05 16:50:14 +02:00
Christian Grothoff
a32a5ef25a
add TALER_yna_to_string() 2020-07-05 16:50:14 +02:00
Jonathan Buchanan
0c4eca0d48
moved yna to exchange 2020-07-05 16:50:14 +02:00
Jonathan Buchanan
acd8d318c0
taler_error_codes.h auto generated from gnunet/gana.git as a submodule 2020-07-05 16:50:13 +02:00
Jonathan Buchanan
83319e1782
implemented the other functions for taler_sq_lib 2020-07-05 16:50:13 +02:00
Jonathan Buchanan
ef0e79927c
created taler_sq_lib 2020-07-05 16:50:13 +02:00
Christian Grothoff
44c70269e2
update ECs 2020-07-05 16:50:13 +02:00
Christian Grothoff
6eabe1ab4f
more ECs 2020-07-05 16:50:13 +02:00
Christian Grothoff
0361508358
ecs 2020-07-05 16:50:13 +02:00
Christian Grothoff
7f10627a31
update 2020-07-05 16:50:12 +02:00
Christian Grothoff
099102dc57
modify TALER_EXCHANGE_deposits_get() API to avoid NULL pointers and need for deep copies 2020-07-05 16:49:23 +02:00
Christian Grothoff
cdbf3a05ae
modify TALER_EXCHANGE_deposits_get() API to combine returned arguments into a struct (simplifies merchant later) 2020-07-05 16:48:26 +02:00
Christian Grothoff
ef97d426b1
update exchange API to return struct instead of lots of individual args for TALER_EXCHANGE_transfers_get() -- simplifies merchant later 2020-07-05 16:46:41 +02:00
Christian Grothoff
baab185d87
more ecs 2020-07-05 16:44:10 +02:00
Christian Grothoff
142f6edaff
use unregister 2020-07-05 16:44:09 +02:00
Christian Grothoff
4119dbd1aa
update 2020-07-05 16:44:09 +02:00
Christian Grothoff
035c505c71
modify TALER_EXCHANGE_deposits_get() API to combine returned arguments into a struct (simplifies merchant later) 2020-07-05 16:42:37 +02:00
Christian Grothoff
4f82885560
towards changing timestamp in deposit confirmation (tests failing) 2020-07-05 16:35:00 +02:00
Christian Grothoff
727b7b04f3
return fee as well 2020-07-05 16:35:00 +02:00
Christian Grothoff
4844023f69
modify TALER_EXCHANGE_deposits_get() API to avoid NULL pointers and need for deep copies 2020-07-05 16:35:00 +02:00
Christian Grothoff
cde71b7fe7
modify TALER_EXCHANGE_deposits_get() API to combine returned arguments into a struct (simplifies merchant later) 2020-07-05 16:35:00 +02:00
Christian Grothoff
77ab94eb68
update exchange API to return struct instead of lots of individual args for TALER_EXCHANGE_transfers_get() -- simplifies merchant later 2020-07-05 16:35:00 +02:00
Christian Grothoff
5ac448738d
fix status code 2020-07-05 16:34:59 +02:00
MS
f6e1583016
launching nexus AND sandbox 2020-06-02 11:36:51 +02:00
Christian Grothoff
c7ae928ffc
add ec 2020-05-04 10:07:32 +02:00
Christian Grothoff
78031b2711
more error codes 2020-05-01 18:38:21 +02:00
Christian Grothoff
0774fd7020
fix #6213 2020-04-23 11:59:12 +02:00
Christian Grothoff
ab752e9591
also validate merchant IBANs before signing 2020-04-19 22:31:00 +02:00
Marcello Stanisci
4f713b40e3
Prepare and launch Nexus for tests. 2020-04-17 15:30:24 +02:00
Christian Grothoff
b93fba2cc1
API updates and new error codes for merchant implementation of #6173 2020-04-12 20:46:33 +02:00
Christian Grothoff
9e3371ae9b
adapt withdraw2 API to support new tip-pickup design (#6173) 2020-04-12 19:22:45 +02:00
Christian Grothoff
00350bc228
remove c_hash from planchet detail where it does not logically belong 2020-04-12 16:44:28 +02:00
Christian Grothoff
2d83516871
add missing comment 2020-04-10 21:59:31 +02:00
Christian Grothoff
1b89e8380d
return signature from refund API 2020-04-10 16:49:54 +02:00
Christian Grothoff
70a794b6f9
add error codes 2020-04-10 16:49:45 +02:00
Christian Grothoff
543fe4ae36
make code compiler without warnings with latest libmicrohttpd API 2020-04-09 00:59:55 +02:00
Christian Grothoff
84a40be0bc
fix #6170 and rest of #6164 2020-04-08 23:52:01 +02:00
Christian Grothoff
b22ec7570e
this signature was pretty much always obsolete 2020-04-07 18:43:36 +02:00
Christian Grothoff
aa65247662
make version field const 2020-04-07 11:47:47 +02:00
Christian Grothoff
9eb741b05b
more error codes 2020-04-06 19:49:37 +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
5059da7108
more error codes 2020-04-04 16:50:13 +02:00
Christian Grothoff
82b6c0887d
more error codes 2020-04-04 16:46:25 +02:00
Christian Grothoff
299b4b78e0
return more error details for /wire and /keys to clients 2020-04-04 13:27:46 +02:00
Christian Grothoff
643b3e3be3
update error codes 2020-04-03 21:14:40 +02:00
Christian Grothoff
61cfaa5981
update error codes for merchant 2020-04-02 20:22:45 +02:00
Christian Grothoff
d1bf26929e
typo 2020-04-01 23:12:00 +02:00
Christian Grothoff
3404fda463
typos 2020-03-31 20:57:11 +02:00
Christian Grothoff
677654f609
doxygen fix 2020-03-28 22:22:29 +01:00
Christian Grothoff
e16f463adb
resolved FIXMEs 2020-03-28 22:00:21 +01:00
Christian Grothoff
ae9f751a7c
do return fees in history 2020-03-28 20:46:57 +01:00
Christian Grothoff
d5351641f8
implement #6049 2020-03-28 20:45:53 +01:00
Florian Dold
e267cb985b
cover actual aggregation in exchange test 2020-03-27 20:47:30 +05:30
Florian Dold
6620a5b691
add test case (currently fails) for deposit idempotency 2020-03-27 19:14:55 +05:30
Christian Grothoff
f052527ea5
fix recoup-refresh audit logic 2020-03-26 20:54:41 +01:00
Christian Grothoff
c032c5fc40
fix EC codes for merchant 2020-03-23 10:18:08 +01:00
Christian Grothoff
db4af18a99
fix ec 2020-03-23 10:11:14 +01:00
Christian Grothoff
9add4cf405
doxygen updates 2020-03-22 21:36:42 +01:00
Christian Grothoff
adef4a91ca
the big EC rename, part II 2020-03-22 01:06:53 +01:00
Christian Grothoff
744322fdda
the big EC rename 2020-03-22 00:50:18 +01:00
Christian Grothoff
36f4dbab3b
adjust tests to auditor changes 2020-03-21 17:36:01 +01:00
Christian Grothoff
1b24e2f9bb
more statistics, make explicit table lock optional, can hurt performance badly 2020-03-20 18:38:57 +01: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
7a1c6769e4
enable using python bank with benchmark 2020-03-19 21:44:54 +01:00
Christian Grothoff
5e98c0652a
fix macro causing syntax issues 2020-03-19 19:33:10 +01:00
Christian Grothoff
15489275ba
make DB reset optional in API, use it in tests, but not in the benchmark 2020-03-19 17:56:23 +01:00
Christian Grothoff
86f2d65daf
style, indentation and type fixes for lib/ 2020-03-17 17:47:53 +01:00
Christian Grothoff
c17909d820
add cmd line option to restrict timetravel, minor code cleanup of keystate logic 2020-03-17 17:33:30 +01:00
Christian Grothoff
c597af8334
adjust types to match latest GNUnet API 2020-03-17 01:09:16 +01:00
Christian Grothoff
cd83daaeae
simplify refund processing, add additional checks for matching currency 2020-03-16 20:23:45 +01:00
Christian Grothoff
7fee395bb6
harden URI validation logic 2020-03-16 16:13:21 +01:00
Christian Grothoff
4322bbf2f1
move common logic to parse currency into libtalerutil 2020-03-15 20:08:38 +01:00
Christian Grothoff
d292b8edca
code cleanup and additional error checking logic for #6124, but no actual semantic change 2020-03-14 20:18:47 +01:00
Christian Grothoff
8d5f42fe0c
add separate commands for closer/transfer steps, modify test cases to use new commands 2020-03-12 10:53:49 +01:00
Christian Grothoff
83631bc98f
split reserve closing from main aggregation logic 2020-03-12 10:11:24 +01:00
Florian Dold
1896c1dfb5
fix EC typo (by importing generated header) 2020-03-12 00:39:45 +05:30
Christian Grothoff
6e3765d852
more careful use of TALER_JSON_get_error_code(), limit to cases where we expect to get one 2020-03-10 18:51:08 +01:00
Christian Grothoff
f6684c1ae3
actually look at recoup/revocations in libtalerexchange and expose the result to clients; make exchange API follow specification 2020-03-10 14:25:57 +01:00
Christian Grothoff
c20078010b
fix comments, naming consistency issues 2020-03-07 14:35:32 +01:00
Christian Grothoff
ffcadbff8c
code cleanup (comments, scoping, naming, indentation) 2020-03-07 00:28:07 +01: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
a49bfef2fb
rename for consistency 2020-03-05 23:02:38 +01:00
Christian Grothoff
7dd52a0892
clean up comments, renaming for clarity 2020-03-05 22:38:19 +01:00
Christian Grothoff
642992f9c3
more renaming 2020-03-04 12:10:11 +01:00
Christian Grothoff
c6874cdb1b
fix comments 2020-03-04 12:04:28 +01:00
Christian Grothoff
7f37017e91
more renaming 2020-03-04 11:51:00 +01:00
Christian Grothoff
6cc516427b
minor code clean up, renaming for consistency 2020-03-04 11:47:22 +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
97fb6b0091
fixing memory leak, comments, renaming callback type to make it more concise 2020-03-03 16:35:20 +01:00
Christian Grothoff
3ba839dee5
remove /config from API, as that is not part of the wire gateway specification 2020-03-03 15:40:51 +01:00
Christian Grothoff
440c3dc1f0
fix missing NULL termination on array 2020-03-01 13:44:13 +01:00
Christian Grothoff
1eb292fe1f
check well-formedness of URI when signing, check return value of function for error 2020-03-01 13:31:46 +01:00
Christian Grothoff
2906aeb459
add ENABLE_SANITY_CHECKS #define instead of using '1' 2020-03-01 13:14:46 +01:00
Christian Grothoff
f979ee9aca
add ENABLE_SANITY_CHECKS #define instead of using '1' 2020-03-01 13:13:33 +01:00
Christian Grothoff
72764dc5f1
doxygen fixes 2020-02-29 17:13:43 +01:00
Christian Grothoff
0a2b049864
big rename fest related to #6067 API renaming 2020-02-29 16:42:10 +01:00
Christian Grothoff
de9ab28ab9
rename fest, make symbols better match new endpoint names 2020-02-27 23:46:53 +01:00
Christian Grothoff
fb9324338d
phase 1 of #6067: update exchange HTTPD to new API style 2020-02-26 17:00:41 +01:00
Christian Grothoff
42bc31744b
implement /config in fakebank and taler_bank_lib.h (#6066) 2020-02-04 21:59:43 +01:00
Christian Grothoff
9bfeec352b
fix #6065 2020-02-04 20:57:11 +01:00
Florian Dold
975d9c9d15
make sure request_uid is actually unique
Allowing duplicate request_uid for different transfer details means that
somebody might eventually rely on this, which is bad.  They should
really be unique, it makes tracing easier.
2020-01-21 16:13:22 +01:00