-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Correctly set next_commitment_number
during splice reconnect
#736
Correctly set next_commitment_number
during splice reconnect
#736
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, integration tests with eclair would be nice.
NB: ACINQ/eclair#2965 isn't yet on mainnet
modules/core/src/commonMain/kotlin/fr/acinq/lightning/channel/states/Channel.kt
Show resolved
Hide resolved
I have tested that channel creation and splices are correctly resumed on reconnection. |
As pointed out in lightning/bolts#1214, when reconnecting a partially signed `interactive-tx` session, we should set `next_commitment_number` to the current commitment number if we haven't received our peer's `commit_sig`, which tells them they need to retransmit it. More importantly, if our peer behaves correctly and sends us the current commitment number, we must not think that they're late and halt, waiting for them to send `error`. This commit fixes that by allowing our peers to use the current commitment number when they set `next_funding_txid`. Note that we keep retransmitting our `commit_sig` regardless of the value our peer set in `next_commitment_number`, because we need to wait for them to have an opportunity to upgrade. In a future commit we will stop sending spurious `commit_sig`.
e882792
to
95f6261
Compare
Rebased to fix trivial import conflict. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now safe to merge
As pointed out in lightning/bolts#1214, when reconnecting a partially signed `interactive-tx` session, we should set `next_commitment_number` to the current commitment number if we haven't received our peer's `commit_sig`, which tells them they need to retransmit it. More importantly, if our peer behaves correctly and sends us the current commitment number, we must not think that they're late and halt, waiting for them to send `error`. This commit fixes that by allowing our peers to use the current commitment number when they set `next_funding_txid`. Note that we keep retransmitting our `commit_sig` regardless of the value our peer set in `next_commitment_number`, because we need to wait for them to have an opportunity to upgrade. In a future commit we will stop sending spurious `commit_sig`.
As pointed out in lightning/bolts#1214, when reconnecting a partially signed
interactive-tx
session, we should setnext_commitment_number
to the current commitment number if we haven't received our peer'scommit_sig
, which tells them they need to retransmit it.More importantly, if our peer behaves correctly and sends us the current commitment number, we must not think that they're late and halt, waiting for them to send
error
. This commit fixes that by allowing our peers to use the current commitment number when they setnext_funding_txid
.Note that we keep retransmitting our
commit_sig
regardless of the value our peer set innext_commitment_number
, because we need to wait for them to have an opportunity to upgrade. In a future commit we will stop sending spuriouscommit_sig
.This PR must only be merged once ACINQ/eclair#2965 has been deployed on the ACINQ node.