feat: gracefully handle recovering a duplicate output in LibWallet #3903
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR addresses the issue of creating duplicate Faux transaction when an output that has previously been recovered is recovered again. This can happen during reorgs.
It is a small fix to the code that when outputs are scanned to see if they can be rewound only new unique outputs are returned to the caller and duplicate outputs are ignored.
The UTXO scanner will then only create new Faux transactions for the outputs that have not been previously recovered.
Two Rust tests were added to confirm the correct behaviour in output scanning.
This behaviour was already implemented for One-sided payments and a test existed that tested the ignoring of duplicates.
How Has This Been Tested?
Rust tests provided