channeld: Code to implement splicing

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.
This commit is contained in:
Dusty Daemon
2023-07-27 14:37:52 -07:00
committed by Rusty Russell
parent ebd0a3fd69
commit 4628e3ace8
88 changed files with 4560 additions and 644 deletions

View File

@@ -1212,6 +1212,32 @@ class LightningRpc(UnixDomainSocketRpc):
}
return self.call("openchannel_abort", payload)
def splice_init(self, chan_id, amount, initialpsbt=None, feerate_per_kw=None):
""" Initiate a splice """
payload = {
"channel_id": chan_id,
"relative_amount": amount,
"initialpsbt": initialpsbt,
"feerate_per_kw": feerate_per_kw,
}
return self.call("splice_init", payload)
def splice_update(self, chan_id, psbt):
""" Update a splice """
payload = {
"channel_id": chan_id,
"psbt": psbt
}
return self.call("splice_update", payload)
def splice_signed(self, chan_id, psbt):
""" Initiate a splice """
payload = {
"channel_id": chan_id,
"psbt": psbt
}
return self.call("splice_signed", payload)
def paystatus(self, bolt11=None):
"""Detail status of attempts to pay {bolt11} or any."""
payload = {