splicing: Adds the features needed to enable collaborative splicing & resizing of active channels.#5675
Closed
ddustin wants to merge 819 commits into
Closed
splicing: Adds the features needed to enable collaborative splicing & resizing of active channels.#5675ddustin wants to merge 819 commits into
ddustin wants to merge 819 commits into
Conversation
niftynei
requested changes
Nov 3, 2022
Collaborator
|
Splice to the moon! 🚀 🌔 |
9ee496a to
8b0713a
Compare
Collaborator
Author
|
Forcing locktime to 0 until a spec conversation can happen: https://github.com/lightning/bolts/pull/863/files#r1059493624 |
81c2ab5 to
e1e0fb6
Compare
a7d187f to
e6b4ab3
Compare
Collaborator
Author
Spec talk was to allow all locktimes in the spec and implementations can restrict which they'll accept as they decide (ie not too far in the future). |
|
🚀 |
625e737 to
d1aceb3
Compare
…-block. Turns out this was accidentally changed for v0.10.1 in d8e6889 where we made fee levels less aggressive. Oops. I guess we can fix the docs. And we now have "2blocks" if you want it really fast! Closes: ElementsProject#6129 Changelog-Fixed: JSON-RPC: `feerates` document correctly that urgent means 6 blocks (not 2), and give better feerate examples. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Using the -n flag on echo is non-standard for zsh. printf ‘%s’ accomplishes the equivilent thing. Changelog-Added: Small fix for Mac OS building
Changelog-None
Changelog-None
Update gossip routiens and various other hecks on the channel state to consider AWAITING_SPLICE to be routable and treated similar to CHANNELD_NORMAL. Small updates to psbt interface Changelog-None
Some fields weren’t intitialized causing complex crashes elsewhere. Changelog-None
Changelog-None
Changelog-None
Changelog-None
Update the lightningd <-> channeld interface with lots of new commands to needed to facilitate spicing. Implement the channeld splicing protocol leveraging the interactivetx protocol. Implement lightningd’s channel_control to support channeld in its splicing efforts. Changelog-Added: Added the features to enable splicing & resizing of active channels.
# Conflicts: # channeld/channeld.c
Switches implementation over to a signed relative amount instead of absolute splice result
Make HTLC balance enforcement aware of pending slice-out’s
Handle REMOTE vs LOCAL on view correctly
Fixing small balance typos
Implement channel reestablish for splicing
Fix shadow variable problem
Also convert everything to an array thingy
Collaborator
Author
|
Github inadvertently auto-closed this PR. It appears I don't have repo permissions to re-open it. Could someone with admin privileges reopen it for me? |
19 tasks
Collaborator
Author
|
Due to github's "force-close" I had to move this over to a new PR: #6253 |
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.
Note this PR has been closed in favor of #6253
This PR is meant to add splicing to CoreLightning. Splicing enables the resizing of multiple channels in a single on-chain transaction, without any channels being "down" or closed during any part of the process. While enabling the resizing of multiple of your own channels -- splicing also gives your peers (and their peers, and their peers' peers, etc.) an opportunity to dynamically add channels as well.
Not only can participants add their own resizes, due to compatibility with @niftynei's dual funding feature, they can also add channel opens into the same batch. Eventually dual closing will allow all onchain lightning events to be batched into a single bitcoin transaction.
This will also, in time, enable wallets to implement "one balance" apps that allow users to send lightning & on-chain payments without needing to manage two "bitcoin balances" -- with the lowest fees possible.
The code implements splicing spec located here: lightning/bolts#863
My endless gratitude to @niftynei 🙏 who has helped an insane amount with planning, disagnosing, and literally writing parts of the code -- not sure I could have gotten this far without her. Thanks as well to @cdecker, @rustyrussell and everyone who helped me while working on this.
Here are the things I believe need to be done before the PR can be considered ready for a developer-only release
channeldsplice_finalizedcommitted_splice_countcheck fails inhandle_peer_commitsigcheck_balances