Skip to content

Conversation

t-bast
Copy link
Collaborator

@t-bast t-bast commented Sep 9, 2025

When disconnecting in the middle of the signing steps of an interactive-tx transaction, we must retransmit signatures on reconnection to complete the interactive-tx protocol.

Nodes first exchange commitment_signed, followed by tx_signatures once they have both sent and received commitment_signed.

We previously always retransmitted commitment_signed, even when our peer had already received it. We now include an explicit bitfield that lets nodes request commitment_signed if they haven't received it.

Note that this is a breaking change, and we are thus changing the TLV type to make it easier to detect. In practice it should be fine, since only eclair and cln have shipped support for dual funding, and those two implementations are already incompatible on reconnection because eclair implements #1214 but cln doesn't. This edge case only creates an issue when nodes disconnect after exchanging tx_complete but before receiving signatures, which should happen very infrequently.

Replaces #1214.

When disconnecting in the middle of the signing steps of an
`interactive-tx` transaction, we must retransmit signatures
on reconnection to complete the `interactive-tx` protocol.

Nodes first exchange `commitment_signed`, followed by
`tx_signatures` once they have both sent and received
`commitment_signed`.

We previously always retransmitted `commitment_signed`, even
when our peer had already received it. We now include an explicit
bitfield that lets nodes request `commitment_signed` if they
haven't received it.

Note that this is a breaking change, and we are thus changing
the TLV type to make it easier to detect. In practice it should
be fine, since only `eclair` and `cln` have shipped support for
dual funding, and those two implementations are already incompatible
on reconnection because `eclair` implements lightning#1214 but `cln` doesn't.
This edge case only creates an issue when nodes disconnect after
exchanging `tx_complete` but before receiving signatures, which should
happen very infrequently.

Replaces lightning#1214.
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.

1 participant