View Issue Details

IDProjectCategoryView StatusLast Update
0008082Talerlibeufin-nexuspublic2024-03-07 19:49
ReporterAntoine A Assigned ToAntoine A 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
PriorityimmediateSeverityblockReproducibilityN/A
Status closedResolutionfixed 
Target Version0.9.4Fixed in Version0.9.4 
Summary0008082: Make payment bouncing deterministic
DescriptionWhen libeufin-nexus bounces an incoming payment, it issues a message with an outgoing payment with a random bank ID and a subject mentioning the bounced payment. When rebuilding the database from scratch, there is no way of knowing whether a malformed incoming payment has already been bounced and we risk bouncing the same payment multiple times.
In addition, it should be easy for auditors to establish a link between an outgoing payment and a bounced incoming payment.
Additional InformationThe solution is to generate a deterministic bank ID from the bank ID of the bounced payment. As libeufin-bank and libeufin-nexus are linked using SQL triggers to perform conversion logic, it must be possible to generate the ID entirely in postgres SQL.

The bank ID can be a maximum of 35 characters long and we are not sure that this field is case sensitive as the standard does not clearly specify this.

Our solution is to perform a SHA-256 hash of the bank ID, encode it using base64, then truncate it to 35 characters and finally capitalise the result.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

There are no notes attached to this issue.

Issue History

Date ModifiedUsernameFieldChange
2024-01-12 17:31Antoine ANew Issue
2024-01-12 17:31Antoine AStatusnew => assigned
2024-01-12 17:31Antoine AAssigned To => Antoine A
2024-01-15 14:19Antoine AStatusassigned => informing
2024-01-15 14:19Antoine AResolutionopen => fixed
2024-02-10 22:31Christian GrothoffFixed in Version => 0.9.4
2024-03-07 19:49Christian GrothoffStatusinforming => closed