txbatcher: don't spend anchors if ctx fee is already sufficient#10093
Merged
SomberNight merged 2 commits intospesmilo:masterfrom Feb 28, 2026
Merged
txbatcher: don't spend anchors if ctx fee is already sufficient#10093SomberNight merged 2 commits intospesmilo:masterfrom
SomberNight merged 2 commits intospesmilo:masterfrom
Conversation
5a65984 to
bcea3eb
Compare
bcea3eb to
27603e9
Compare
7549a43 to
531feb1
Compare
SomberNight
reviewed
Feb 27, 2026
| self.logger.info(f"anchor not needed {prevout}") | ||
| self.batch_inputs.pop(prevout) # note: if the input is already in a batch tx, this will trigger assert error | ||
| continue | ||
| prev_tx_current_fee = self.wallet.adb.get_tx_fee(prev_txid) |
Member
There was a problem hiding this comment.
Just a note: I believe currently it just so happens that this does not occur here, but adb.get_tx_fee in some cases trusts the electrum server for the fee instead of calculating it itself.
Atm this does not seem to be the case as all the addresses watched by lnwatcher count as adb.is_mine and this includes the anchor outputs.
If the tx fee of the ctx is already higher than the required target it is not useful to spend the anchor with a lower fee (the current target), so instead it is skipped.
Adds unittest for `TxBatch._to_sweep_after()` anchor claiming part.
531feb1 to
04a034e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
If the tx fee of the ctx is already higher than the required target it is not useful to spend the anchor so instead it is skipped.
As a side effect the closing tx is not shown in the history anymore until any output got claimed, only the lightning part of the closing group is shown, but the closing tx can be found in the channel details:

This is because
sweep_commitment_transactiononly adds the anchor and to_local outputs to the accounting addresses once there is a (nonlocal) spending tx, so it is missed byget_onchain_history(), same issue(?) for SRK channels. However only declaring them "accounting address" after the sweep seems intentional:electrum/electrum/wallet.py
Line 420 in dfd480d