-
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
splicing: Adds the features needed to enable collaborative splicing & resizing of active channels. #5675
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.
biggest PR ever, but looking like a great splice_start
.
Reviewed in-person w/ @ddustin, really really nice work!
Splice to the moon! 🚀 🌔 |
9ee496a
to
8b0713a
Compare
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
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 <[email protected]>
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
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? |
Due to github's "force-close" I had to move this over to a new PR: #6253 |
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
channeld
splice_finalized
committed_splice_count
check fails inhandle_peer_commitsig
check_balances