Skip to content

Conversation

@t-bast
Copy link
Member

@t-bast t-bast commented May 20, 2025

This PR contains a collection of small, independent commits that refactor various force-close helper functions. This is a first step towards simplifying LocalCommitPublished and RemoteCommitPublished in order to only store the outpoints of interest and not any TransactionWithInputInfo instances, which will simplify our codecs, be more consistent with RBF scenarios, and remove bugs like #3085.

Each commit should be reviewed on its own: please read the commit message which should help understand the change! The only commit that isn't trivial is the 3rd one, where we start re-computing commit outputs in order to identify closing transactions. This is something we'll start doing more often as we get rid of our dependencies on LocalCommitPublished and RemoteCommitPublished.

t-bast added 4 commits May 20, 2025 16:01
We move functions that compute the confirmation target outside of
`LocalCommitPublished` and `RemoteCommitPublished` to helper functions
in the `Closing` object.

We also slightly refactor `doPublish` functions to remove the pattern
matching on the commitment format, which was actually unnecessary since
we introduced the `redeemableHtlcTxs` function.
This is a trivial refactoring where we explicitly create a single anchor
transaction instead of replacing an empty list. We also clean up
comments and variable names in force-close helpers.
We stop relying on `LocalCommitPublished` and `RemoteCommitPublished` to
identify when HTLCs should be failed upstream because they are either
trimmed or their timeout transaction is confirmed. We instead rely on
commitment data for local commitments, and re-create the commit outputs
on-the-fly for remote commitments.
In case of a revoked close, we previously published 3rd-stage penalty
txs as soon as we saw our peer's HTLC transactions in our mempool.
This isn't necessary and may actually help them get confirmed since
it is essentially a CPFP. We now instead wait for the revoked HTLC
transaction to be confirmed before publishing a penalty transaction
claiming its outputs.
@t-bast t-bast requested a review from sstone May 20, 2025 17:06
@t-bast t-bast merged commit 1e23081 into master May 21, 2025
1 check passed
@t-bast t-bast deleted the refactor-closing-helpers branch May 21, 2025 15:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants