View Issue Details

IDProjectCategoryView StatusLast Update
0007852Talerexchangepublic2023-09-23 15:09
ReporterFlorian Dold Assigned ToFlorian Dold  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Target Version0.9.3Fixed in Version0.9.3 
Summary0007852: deposit endpoint idempotency regression
DescriptionThe deposit endpoint used to be idempotent, and we have a test for that in taler-harness. However, in the current git master it is not idempotent anymore:

$ taler-harness run-integrationtests exchange-deposit
[... fails at doing exactly the same deposit POST request twice ...]
TagsNo tags attached.

Activities

Christian Grothoff

2023-06-03 13:09

manager   ~0020252

I ran the latest test with wireshark against the latest exchange, and (1) the test passed and (2) the wireshark result suggests everything is fine. Relevant TCP stream attached.
test (6,725 bytes)   
POST /reserves/M7HM8DF7KXPBGYSD0FAYEKRJV51X1JVCB73AF3BZ95616JWV7R9G/withdraw HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: localhost:8081
Connection: keep-alive
Transfer-Encoding: chunked

1f6
{"denom_pub_hash":"TTCWFSY56C0QJXHVD6BYE4ZJTX651TQWWREEZ9P6R3ZW2EYAFYHKM30C5V2RGB72MH4P7A7T6T7AV3K7MXW3GMMAZW7NYF0RSR356TG","reserve_sig":"T4A4AS5K3BFMWNAQPBM4Z7X639SY9PHD3MDJFWAWFQB42MB773KPQ7JG8MJB1VRQDKAWQVC41M6Z97Q32KR5D34WT530E4KPFFGNT3R","coin_ev":{"cipher":"RSA","rsa_blinded_planchet":"B3PFN1DJS2H7KZSAN397MSNR8NQPNZH1ERN5WEXA5DN5D2STMA7N4FREDRZW98CNGYWAJ9G6QF57NPCJ0ST33RHKD4HEQNHZD6D6WCEXZDECVB2V6V1VKNKHCMG7S0PDYB2ETZ6D5W5X0BK21C64KYVJRRNJQDQQ7CXM7F53NS5CBDBZ3M59ATZV5D6BXTWEF022E8W4Q5A38"}}
0

HTTP/1.1 200 OK
Date: Sat, 03 Jun 2023 11:03:36 GMT
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: *
Content-Type: application/json
Content-Length: 279

{
  "ev_sig": {
    "cipher": "RSA",
    "blinded_rsa_signature": "2WG4NWD388J6JHTGNXR1YZPF1KZ3KQ39KPKY4819TZ9DCTND318JTRECTDJVNZX6WCD6EZ7TY87XA3Q45YHEE8BXP9JE9MHTXJD4VDK5YF7ZK5FB8B9Y24KS7Z8JZF08DXMJB4P0RM3W77YAY67BH0SB87DXDQPAJ2WRQEN9GW9M8E1SYW732QGMRX0VF03HXAT27W5TAA7NM"
  }
}POST /coins/DH2931Q33790EAH2YG8QAH8E047BCJ5663F2JZNX2GXDW10MX55G/deposit HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: localhost:8081
Connection: keep-alive
Transfer-Encoding: chunked

39e
{"contribution":"TESTKUDOS:4","merchant_payto_uri":"payto://x-taler-bank/localhost/foo","wire_salt":"HTTYCGBKD96VH84BJR10S9G1ZR","h_contract_terms":"V6048T4S0862E8722NRKABDRNDZBWBW57YSKGQ6XWEEG3R1CYCN6F459VXKSA86E7KKQN16SQ3R545E7ZFGHNYT061VKF5FQQTX8ER0","ub_sig":{"cipher":"RSA","rsa_signature":"9C0FS2FNE0Z7T908KWF5301QCNBVCSXWJXFSXFE7DXJAV8M1YXPV33YKQMMADNPCPPA47CJQEYX30BYTJMF1DZJN0YBEN7P5D29FJ8JY52W07TTYSP3W74G2YHWXR0PWEKY1YSTGPA5DDAT8PNY9MHTX1J9YHC8ZSVSDMNV4S19P3GC7HJ2Z3TCT2716K340ENVTSDNXSE2C6"},"timestamp":{"t_s":1685790216},"wire_transfer_deadline":{"t_s":1685790216},"refund_deadline":{"t_s":1685790216},"coin_sig":"J6TTRB3F748BFDCFGRH72AAM180SJA0ENYZXSWG94G7SWT0N9SH9YSJZGBQXS6RKMQ3E68SS8NCB97EN3KB8M1M9M3FVXZ0VET28R0G","denom_pub_hash":"TTCWFSY56C0QJXHVD6BYE4ZJTX651TQWWREEZ9P6R3ZW2EYAFYHKM30C5V2RGB72MH4P7A7T6T7AV3K7MXW3GMMAZW7NYF0RSR356TG","merchant_pub":"C6HWTKVXKXWN5PAJTYW04FQT38JNZA76PAPPQAR58XBB8BDZ0D20"}
0

HTTP/1.1 200 OK
Date: Sat, 03 Jun 2023 11:03:36 GMT
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: *
Content-Type: application/json
Content-Length: 254

{
  "exchange_timestamp": {
    "t_s": 1685790216
  },
  "exchange_sig": "1J3V8FXGFAEBS5TN9JDPACDFKHE4FF9XYZ80KY6VHN80VJV3M99MRB8Q9ZTV9JA31D0YEYPPGFJAP9E4FFVHSCEBYYN90HW41T7MJ00",
  "exchange_pub": "X5FBRNTM7RJ40G0KJJC0BPPN0XDG7JD9DATP9P7Y330C3W449QM0"
}POST /coins/DH2931Q33790EAH2YG8QAH8E047BCJ5663F2JZNX2GXDW10MX55G/deposit HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: localhost:8081
Connection: keep-alive
Transfer-Encoding: chunked

39e
{"contribution":"TESTKUDOS:4","merchant_payto_uri":"payto://x-taler-bank/localhost/foo","wire_salt":"HTTYCGBKD96VH84BJR10S9G1ZR","h_contract_terms":"V6048T4S0862E8722NRKABDRNDZBWBW57YSKGQ6XWEEG3R1CYCN6F459VXKSA86E7KKQN16SQ3R545E7ZFGHNYT061VKF5FQQTX8ER0","ub_sig":{"cipher":"RSA","rsa_signature":"9C0FS2FNE0Z7T908KWF5301QCNBVCSXWJXFSXFE7DXJAV8M1YXPV33YKQMMADNPCPPA47CJQEYX30BYTJMF1DZJN0YBEN7P5D29FJ8JY52W07TTYSP3W74G2YHWXR0PWEKY1YSTGPA5DDAT8PNY9MHTX1J9YHC8ZSVSDMNV4S19P3GC7HJ2Z3TCT2716K340ENVTSDNXSE2C6"},"timestamp":{"t_s":1685790216},"wire_transfer_deadline":{"t_s":1685790216},"refund_deadline":{"t_s":1685790216},"coin_sig":"J6TTRB3F748BFDCFGRH72AAM180SJA0ENYZXSWG94G7SWT0N9SH9YSJZGBQXS6RKMQ3E68SS8NCB97EN3KB8M1M9M3FVXZ0VET28R0G","denom_pub_hash":"TTCWFSY56C0QJXHVD6BYE4ZJTX651TQWWREEZ9P6R3ZW2EYAFYHKM30C5V2RGB72MH4P7A7T6T7AV3K7MXW3GMMAZW7NYF0RSR356TG","merchant_pub":"C6HWTKVXKXWN5PAJTYW04FQT38JNZA76PAPPQAR58XBB8BDZ0D20"}
0

HTTP/1.1 200 OK
Date: Sat, 03 Jun 2023 11:03:36 GMT
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: *
Content-Type: application/json
Content-Length: 254

{
  "exchange_timestamp": {
    "t_s": 1685790216
  },
  "exchange_sig": "1J3V8FXGFAEBS5TN9JDPACDFKHE4FF9XYZ80KY6VHN80VJV3M99MRB8Q9ZTV9JA31D0YEYPPGFJAP9E4FFVHSCEBYYN90HW41T7MJ00",
  "exchange_pub": "X5FBRNTM7RJ40G0KJJC0BPPN0XDG7JD9DATP9P7Y330C3W449QM0"
}POST /coins/DH2931Q33790EAH2YG8QAH8E047BCJ5663F2JZNX2GXDW10MX55G/deposit HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: localhost:8081
Connection: keep-alive
Transfer-Encoding: chunked

3a0
{"contribution":"TESTKUDOS:3.5","merchant_payto_uri":"payto://x-taler-bank/localhost/foo","wire_salt":"HTTYCGBKD96VH84BJR10S9G1ZR","h_contract_terms":"V6048T4S0862E8722NRKABDRNDZBWBW57YSKGQ6XWEEG3R1CYCN6F459VXKSA86E7KKQN16SQ3R545E7ZFGHNYT061VKF5FQQTX8ER0","ub_sig":{"cipher":"RSA","rsa_signature":"9C0FS2FNE0Z7T908KWF5301QCNBVCSXWJXFSXFE7DXJAV8M1YXPV33YKQMMADNPCPPA47CJQEYX30BYTJMF1DZJN0YBEN7P5D29FJ8JY52W07TTYSP3W74G2YHWXR0PWEKY1YSTGPA5DDAT8PNY9MHTX1J9YHC8ZSVSDMNV4S19P3GC7HJ2Z3TCT2716K340ENVTSDNXSE2C6"},"timestamp":{"t_s":1685790216},"wire_transfer_deadline":{"t_s":1685790216},"refund_deadline":{"t_s":1685790216},"coin_sig":"HB47DQWZ0RCEB4JJCQ5WAAXQETRRJ0SDJBQ2QZZ1J90PW0YHA4KBGSBF3563CQB5928X6P3MNFJ5S2WMRTY40ENGNT4F5V974N22M1R","denom_pub_hash":"TTCWFSY56C0QJXHVD6BYE4ZJTX651TQWWREEZ9P6R3ZW2EYAFYHKM30C5V2RGB72MH4P7A7T6T7AV3K7MXW3GMMAZW7NYF0RSR356TG","merchant_pub":"C6HWTKVXKXWN5PAJTYW04FQT38JNZA76PAPPQAR58XBB8BDZ0D20"}
0

HTTP/1.1 409 Conflict
Date: Sat, 03 Jun 2023 11:03:37 GMT
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: *
Content-Type: application/json
Content-Length: 1101

{
  "hint": "The same coin was already deposited for the same merchant and contract with other details.",
  "code": 1206,
  "coin_pub": "DH2931Q33790EAH2YG8QAH8E047BCJ5663F2JZNX2GXDW10MX55G",
  "h_denom_pub": "TTCWFSY56C0QJXHVD6BYE4ZJTX651TQWWREEZ9P6R3ZW2EYAFYHKM30C5V2RGB72MH4P7A7T6T7AV3K7MXW3GMMAZW7NYF0RSR356TG",
  "history": [
    {
      "type": "DEPOSIT",
      "amount": "TESTKUDOS:4",
      "deposit_fee": "TESTKUDOS:0.16",
      "timestamp": {
        "t_s": 1685790216
      },
      "refund_deadline": {
        "t_s": 1685790216
      },
      "merchant_pub": "C6HWTKVXKXWN5PAJTYW04FQT38JNZA76PAPPQAR58XBB8BDZ0D20",
      "h_contract_terms": "V6048T4S0862E8722NRKABDRNDZBWBW57YSKGQ6XWEEG3R1CYCN6F459VXKSA86E7KKQN16SQ3R545E7ZFGHNYT061VKF5FQQTX8ER0",
      "h_wire": "5E28NWVT4PTKGPZPAQCKZ3M40KR6Y7CC0DEKERY6Y895XRVHFJX8W5YNW6HVCGYG4AC1GQ5DP5ZC8HDXS9XM1B0Q64ZBGPKFGXDY3K8",
      "h_age_commitment": "0000000000000000000000000000000000000000000000000000",
      "coin_sig": "J6TTRB3F748BFDCFGRH72AAM180SJA0ENYZXSWG94G7SWT0N9SH9YSJZGBQXS6RKMQ3E68SS8NCB97EN3KB8M1M9M3FVXZ0VET28R0G"
    }
  ]
}
test (6,725 bytes)   

Florian Dold

2023-06-05 11:13

manager   ~0020255

It does indeed pass again with the latest exchange. Maybe I was on some commit where it didn't work?

Issue History

Date Modified Username Field Change
2023-06-02 12:46 Florian Dold New Issue
2023-06-02 12:46 Florian Dold Status new => assigned
2023-06-02 12:46 Florian Dold Assigned To => Christian Grothoff
2023-06-03 13:09 Christian Grothoff Note Added: 0020252
2023-06-03 13:09 Christian Grothoff File Added: test
2023-06-03 13:09 Christian Grothoff Assigned To Christian Grothoff => Florian Dold
2023-06-03 13:09 Christian Grothoff Status assigned => feedback
2023-06-05 11:13 Florian Dold Note Added: 0020255
2023-06-05 11:13 Florian Dold Status feedback => resolved
2023-06-05 11:13 Florian Dold Resolution open => fixed
2023-09-23 15:07 Christian Grothoff Fixed in Version => 0.9.3
2023-09-23 15:09 Christian Grothoff Status resolved => closed