View Issue Details

IDProjectCategoryView StatusLast Update
0010900Talerwallet-corepublic2026-02-04 19:02
ReporterFlorian Dold Assigned ToFlorian Dold Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PriorityurgentSeverityblockReproducibilityhave not tried
Status closedResolutionfixed 
Target Version1.4Fixed in 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.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

Florian Dold

2026-01-20 16: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 ModifiedUsernameFieldChange
2026-01-20 16:40Florian DoldNew Issue
2026-01-20 16:40Florian DoldStatusnew => assigned
2026-01-20 16:40Florian DoldAssigned To => Florian Dold
2026-01-20 16:40Florian DoldNote Added: 0027297
2026-01-20 16:40Florian DoldStatusassigned => informing
2026-01-20 16:40Florian DoldResolutionopen => fixed
2026-01-20 16:40Florian DoldTarget Version => 1.4
2026-02-04 19:02Christian GrothoffFixed in Version => 1.4
2026-02-04 19:02Christian GrothoffStatusinforming => closed