View Issue Details

IDProjectCategoryView StatusLast Update
0010900Talerwallet-corepublic2026-01-20 17:40
ReporterFlorian Dold Assigned ToFlorian Dold  
PriorityurgentSeverityblockReproducibilityhave not tried
Status resolvedResolutionfixed 
Target Version1.4 
Summary0010900: wallet sometimes creates an empty refresh group when not enough denominations were validated, resulting in lost funds
DescriptionThe wallet lazily validates denominations offered by the exchange.

In some situations (particularly aborted P2P transactions), the wallet doesn't ensure that it has enough validated denominations from the exchange before proceeding with the DB transaction that creates a refresh (where new denominations are selected).

This can sometimes lead to refresh transactions with non-zero input but zero output, effectively resulting in lost funds.
TagsNo tags attached.

Activities

Florian Dold

2026-01-20 17:40

manager   ~0027297

commit beb73940b19ebdc3cc5da42e09d2a946b0c60e7c
Author: Florian Dold <florian@dold.me>
Date: Wed Jan 14 16:47:17 2026 +0100

    wallet-core: fix issue with empty refresh groups
    
    In some situations, wallet-core created refresh groups with a non-zero
    input and zero output. This happened when required output denominations
    were not validated yet. In this case, wallet-core treated the
    denominations as absent and wasn't able to create any outputs for the
    refresh, so a refresh group with empty outputs was created.
    
    This was fixed by:
    * disallowing the creation of refresh groups when there are required
      denominations that should be validated but aren't validated yet
    * validating denominations in the background
    * repairing existing, bad refresh transactions via fixup

Issue History

Date Modified Username Field Change
2026-01-20 17:40 Florian Dold New Issue
2026-01-20 17:40 Florian Dold Status new => assigned
2026-01-20 17:40 Florian Dold Assigned To => Florian Dold
2026-01-20 17:40 Florian Dold Note Added: 0027297
2026-01-20 17:40 Florian Dold Status assigned => resolved
2026-01-20 17:40 Florian Dold Resolution open => fixed
2026-01-20 17:40 Florian Dold Target Version => 1.4