Added documentation for splice_update & splice_signed and tweaked splice_init. Added corresponding schemas for splice_* commands Changelog-None
3.3 KiB
lightning-splice_update -- Command to initiate a channel to a peer
SYNOPSIS
(WARNING: experimental-splicing only)
splice_update channel_id psbt
DESCRIPTION
splice_update
is a low level RPC command which updates the active channel
splice associated with channel_id
.
channel_id is the channel id of the channel being spliced.
psbt is the base 64 encoded PSBT returned from splice_init
with any changes
added by the user.
splice_update
must be called repeatidly until the result commitments_secured
is true
. Each time splice_update
is called, it will return a new PSBT that
may have changes. In the simplest case, you take the returned psbt
and pass
it back into splice_update
for the incoming psbt
field.
For more complex use cases, you may modify the psbt
both before calling
splice_update
and inbetween subsequent calls until commitments_secured
is
true
. After which point you can no long make modifications to the PSBT (beyond
signing, which comes later with splice_signed
).
Each splice_update
result may include changes to the PSBT specified by your
channel peer. You can review these changes between calls to splice_update
to
perform additional validation or strategy adjustment.
Typically, splice_update
will return commitments_secured
true after one call
but you should assume it will need multiple calls. Here is an example way to
call splice_update
RESULT="{\"commitments_secured\":false}"
while [[ $(echo $RESULT | jq -r ".commitments_secured") == "false" ]]
do
RESULT=$(lightning-cli splice_update $CHANNEL_ID $PSBT)
PSBT=$(echo $RESULT | jq -r ".psbt")
echo $RESULT
done
Before each call to splice_update
you have the opportunity
to make additional changes.
Here is a full example set of splice commands that will splice in 100,000 sats
to the first channel that comes out of listpeerchannels
. The example assumes
you already have at least one confirmed channel.
RESULT=$(lightning-cli listpeerchannels)
CHANNEL_ID=$(echo $RESULT| jq -r ".channels[0].channel_id")
echo $RESULT
RESULT=$(lightning-cli fundpsbt -k satoshi=100000sat feerate=urgent startweight=800 excess_as_change=true)
INITIALPSBT=$(echo $RESULT | jq -r ".psbt")
echo $RESULT
RESULT=$(lightning-cli splice_init $CHANNEL_ID 100000 $INITIALPSBT)
PSBT=$(echo $RESULT | jq -r ".psbt")
echo $RESULT
RESULT="{\"commitments_secured\":false}"
while [[ $(echo $RESULT | jq -r ".commitments_secured") == "false" ]]
do
RESULT=$(lightning-cli splice_update $CHANNEL_ID $PSBT)
PSBT=$(echo $RESULT | jq -r ".psbt")
echo $RESULT
done
RESULT=$(lightning-cli signpsbt -k psbt="$PSBT")
PSBT=$(echo $RESULT | jq -r ".signed_psbt")
echo $RESULT
lightning-cli splice_signed $CHANNEL_ID $PSBT
RETURN VALUE
On success, an object is returned, containing:
- psbt (string): the (incomplete) PSBT of the splice transaction
- commitments_secured (boolean): whether or not the commitments were secured
SEE ALSO
AUTHOR
@dusty_daemon
RESOURCES
Main web site: https://github.com/ElementsProject/lightning