View Issue Details

IDProjectCategoryView StatusLast Update
0004498Talerwallet (WebExtensions)public2017-06-06 14:18
ReporterFlorian DoldAssigned ToFlorian Dold 
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Product Version0.0 
Target Version0.3Fixed in Version0.3 
Summary0004498: wallet needs to periodically check /keys for panic DK revocation and trigger /payback
DescriptionCurrently the wallet doesn't re-fetch /keys properly ...
TagsNo tags attached.

Relationships

child of 0003887 closedChristian Grothoff handle "emergency" where denomination key is overdrawn (/payback) 

Activities

Florian Dold

2016-10-18 02:12

manager   ~0011343

The wallet already does re-fetch /keys before all relevant operations, like withdraw and refresh.

Is there a need to also re-fetch it periodically? And if so, at what rate?

Christian Grothoff

2016-11-09 16:41

manager   ~0011463

This is only technically needed for the "bankrupcy"/panic/DK compromise protocol which is not yet implemented or even speced. Left for 0.3.

Christian Grothoff

2017-03-19 07:48

manager   ~0011949

Specification was added to the exchange API in d39bbc6..91d1ae8.
This includes /keys (where the notification happens) and /payback (where the coins will be refunded).

Note that the wallet must keep the pre-secrets for the blinding factors around for /payback (as it needs to link the coin to the reserve).

The wallet should trigger /payback in rapid succession for all affected coins, verify the amounts the exchange is willing to refund (or check the double-spending proof), and report to the user. The (non-error) report should be shown in a new tab and include the total amount (over all coins for which the exchange returned the same wire subject and payment deadline), promised wire transfer deadline and wire transfer subject AND (from the records about the reserve) the bank account details to which the exchange will wire the money (this is NOT returned by the exchange).

Florian Dold

2017-03-23 20:42

manager   ~0011971

Two things we need to think about before implementing:

- Testing: Is there currently a way to trigger the emergency payback on the exchange side? I.e. how can I tell the exchange to put a denom pub on the payback list?

- The UX aspect: Where in the UI do we show links to the reports for the emergency refund? Just in the log or also somewhere else? Of course we can open a tab when we're done, but there should be a way to get back to the report.

Christian Grothoff

2017-04-02 00:22

manager   ~0012008

Testing: currently not possible, I still need to implement it. Watch 0003887.

UX aspect: I've decided to implement /payback simply as coins being added back to the reserve balance. Once we have 0004956 this means that the money _will_ go back to the customer's bank account, but it _also_ means that the wallet _could_ just /payback the old coins and immediately withdraw fresh ones (that is, if the exchange is still in business and offers valid denomination keys in /keys AND if the customer agrees to the possibly changed fee structure).

So if the wallet detects /payback, it should show the user that amount X was put back into a reserve due to a problem at the payment service provider and ask if the user wants to have his money back in his bank account (telling him that all he needs to do is wait until time X), or if he wants to withdraw fresh coins (showing the fee structure just like on the primary withdraw).

Afterwards, the money would show up either in the reserve history (assuming we'll eventually have a way to show reserves that we created but did not fully deplete yet), or the normal wallet balance, depending on the user's choice.

Sounds reasonable?

Christian Grothoff

2017-04-10 17:58

manager   ~0012030

Payback in the exchange implementation is now far enough for the wallet to start using it.

Florian Dold

2017-04-27 14:25

manager   ~0012072

Last edited: 2017-04-27 14:27

View 2 revisions

I would actually suggest to have a "Recovered Funds" below that wallet balance, that only shows up when we did a payback where the user did not decide yet on what to do.

Popping up an error tab "randomly", when it not directly results from a user action, is really bad user experience. The user would be lacking context.

Florian Dold

2017-05-01 04:11

manager   ~0012090

Implemented in 4c03a120 and 41ed276.

When a payback is available due to an emergency, the wallet will automatically do payback on all affected coins and then show a link to the payback page in the popup.

On the payback page, the user can select what to do with the reserve (currently only withdrawing again is supported, later we will add payback to bank account once the exchange supports it).

Issue History

Date Modified Username Field Change
2016-05-09 09:57 Florian Dold New Issue
2016-05-09 09:57 Florian Dold Status new => assigned
2016-05-09 09:57 Florian Dold Assigned To => Florian Dold
2016-05-31 09:38 Christian Grothoff Product Version => 0.0
2016-05-31 09:38 Christian Grothoff Target Version => 0.2
2016-10-18 02:12 Florian Dold Note Added: 0011343
2016-10-18 02:12 Florian Dold Status assigned => feedback
2016-11-09 16:41 Christian Grothoff Target Version 0.2 => 0.3
2016-11-09 16:41 Christian Grothoff Note Added: 0011463
2017-03-08 02:58 Florian Dold Summary wallet needs to periodically re-fetch /keys => wallet needs to periodically check /keys for panic DK revocation
2017-03-08 13:14 Christian Grothoff Relationship added child of 0003887
2017-03-19 07:48 Christian Grothoff Status feedback => assigned
2017-03-19 07:48 Christian Grothoff Note Added: 0011949
2017-03-19 07:49 Christian Grothoff Severity minor => feature
2017-03-19 07:49 Christian Grothoff Summary wallet needs to periodically check /keys for panic DK revocation => wallet needs to periodically check /keys for panic DK revocation and trigger /payback
2017-03-23 20:42 Florian Dold Note Added: 0011971
2017-03-23 20:42 Florian Dold Status assigned => feedback
2017-04-02 00:22 Christian Grothoff Note Added: 0012008
2017-04-10 17:58 Christian Grothoff Status feedback => assigned
2017-04-10 17:58 Christian Grothoff Note Added: 0012030
2017-04-27 14:25 Florian Dold Note Added: 0012072
2017-04-27 14:27 Florian Dold Note Edited: 0012072 View Revisions
2017-05-01 04:11 Florian Dold Status assigned => resolved
2017-05-01 04:11 Florian Dold Resolution open => fixed
2017-05-01 04:11 Florian Dold Note Added: 0012090
2017-05-03 02:16 Christian Grothoff Fixed in Version => 0.3
2017-06-06 14:18 Christian Grothoff Status resolved => closed