fix: use 330 sat dust limit for P2TR/P2WPKH change outputs #8807
+65
−10
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.
(Fixes #8395)
Problem
When creating transactions, change outputs between 330-546 sat were being treated as dust and absorbed into fees. This caused users to overpay transaction fees.
The issue was that change_amount() function used chainparams->dust_limit (546 sat) for all output types, but P2TR and P2WPKH outputs have a lower dust limit of 330 sat according to Bitcoin Core standards.
Solution
Changed change_amount() in bitcoin/tx.c to use 330 sat dust limit for change outputs. This is correct because:
Now change outputs between 330-546 sat are properly created instead of being absorbed into fees.
Testing
Important
26.04 FREEZE March 11th: Non-bugfix PRs not ready by this date will wait for 26.06.
RC1 is scheduled on March 23rd
The final release is scheduled for April 15th.
Checklist
Before submitting the PR, ensure the following tasks are completed. If an item is not applicable to your PR, please mark it as checked:
tools/lightning-downgrade