-
Notifications
You must be signed in to change notification settings - Fork 912
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
Splice Interop #7719
Merged
rustyrussell
merged 22 commits into
ElementsProject:master
from
ddustin:ddustin/splice_interop
Nov 21, 2024
Merged
Splice Interop #7719
rustyrussell
merged 22 commits into
ElementsProject:master
from
ddustin:ddustin/splice_interop
Nov 21, 2024
Conversation
This file contains 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
ddustin
force-pushed
the
ddustin/splice_interop
branch
2 times, most recently
from
October 4, 2024 23:29
2d1a68b
to
201e95b
Compare
ddustin
force-pushed
the
ddustin/splice_interop
branch
4 times, most recently
from
November 15, 2024 21:03
17aa694
to
cccb1d2
Compare
Rebasing off master broke a bunch of things -- working on them now |
ddustin
force-pushed
the
ddustin/splice_interop
branch
3 times, most recently
from
November 16, 2024 14:00
c25f3c8
to
761bc05
Compare
ddustin
force-pushed
the
ddustin/splice_interop
branch
5 times, most recently
from
November 20, 2024 07:08
5485e9f
to
0b56f55
Compare
This last failure appears to be a logic issue that was exposed by switching to eclair's behavior around Working through it here: https://gist.github.com/ddustin/10f4cfd1e5d84395c9678ea90f1a7f7f Edit: After reviewing further this logic is already handled correctly in channel_control -- the test just needs updating. |
ddustin
force-pushed
the
ddustin/splice_interop
branch
3 times, most recently
from
November 20, 2024 21:26
7996a36
to
75efc61
Compare
Added and updated error messages when splicing to make it more clear to the user why a splice is failing. Changelog-Changed: Improved error messaging for splice commands.
Switch to using same message format for `tx_abort` that wire_error and wire_warning use. Changelog-None
Enable storing the remote funding pubkey in DB if the channel peer decides to change it during splicing. It needs to be in DB incase of restarts mid-splice. Changelog-None
It is possible for prevtx to be larger than max packet size, so for shared outputs (currently only the funding tx) we add support for sending the `txid` only across the wire and filling in the prevtx locally. Changelog-None
Instead of assuming the remote funding pubkey does not change during splice, we store the new pubkey in the splice object. Changelog-None
Channeld stores its own cache of `inflight` and that needs to have a copy of `remote_funding` as well. Since copying a secp256k1 pubkey isn’t documented and `copy_inflight` isn’t used anyway — we’re dropping `copy_inflight`. Changelog-None
Update lightningd and channeld interface to pass the remote funding pubkey back and forth to both daemons. Changelog-None
In anticipation of adding support for rotating funding pubkeys during a splice, `channel_txs` is updated to support specifying these manually instead of using the channel’s funding pubkeys. Changelog-None
Since funding keys can be rotated during splice, commit sig routines must be able to handle a dynamic value for the funding keys. Changelog-None
This is no longer used. Changelog-None
Update to use spec signature type. Changelog-None
The prior spec left this value at 0 to be calculted later but the current spec requires we fill it in in advance. Changelog-None
As per eclair spec proposal. 1) A renaming to `funding_txid` 2) Adding of `batch_size` to indicate how many commitment_signed msgs are expected. Changelog-None
Update the sending and receiving of commit sigs to use dyniamic funding pubkeys incase our remote peer rotates theirs during a splice. Changelog-None
We need to differentiate the funding pubkey since we allow the peer to rotate it now. Changelog-None
This function needs to be used earlier in the file so it is moved vertically up. Chanelog-None
By placing the funding tx into `interactivetx`, the message will be compressed by only sending the txid via tlvs. Changelog-None
`tx_abort` should not send reestablish message and instead go into ‘reconnect only mode’ Changelog-None
Set the remote funding pubkey on both lightningd and channeld when mutual splice lock is achieved. This will be needed once rotating funding keys is enabled during splicing Changelog-None.
Allows our peer to change their funding pub key during a splice. Changelog-Changed: Support added for peers that wish to rotate their funding pubkey during a splice.
Changelog-Changed: Splicing moved from test numbers to spec numbers.
As per eclair implementation we skip `channel_reestablish` and go straight into the channel for `tx_abort` events. Changelog-None
ddustin
force-pushed
the
ddustin/splice_interop
branch
from
November 20, 2024 21:26
75efc61
to
f1ed25e
Compare
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.
Interop PR
This PR brings Eclair and CLN into interop status allowing splices to be executed between the two implementations.
Many things needed to be done to accomplish this:
remote_funding
.remote_funding
on the splice.batch_size
for commitment signed messages.prevtx
for the funding tx due to packet size limitation.blockhash
from messages.splice
andsplice_ack
message numbers moved to 80 & 81.tx_abort
message encoding was corrected.Things left to be done: