Core Lightning release v23.08 live exploration

LIVE #12August 31, 2023

In this live we explore Core Lightning release v23.08 with Vincenzo Palazzo core contribor of CLN. We see how to use setconfig new rpc command and listconfigs. We talk about experimental features that can be enable/disable at runtime. We do a Lightning Network splice in to resize a channel and add it 100000sat. We talk about the support for taproot addresses in CLN wallet. Then we look at the new renepay plugin implementing Pickhardt R. and Richter S. paper "Optimally Reliable & Cheap Payment Flows on the Lightning Network". And finally we do a self-payment with the command pay because in v23.08 it's possible.

Transcript with corrections and improvements

For this live we have Vincenzo Palazzo CLN core contributor as guest.

Tony: How are you doing Vincenzo?

Vincenzo: Hey thanks for having me, all good.

The goal of this session is to learn how to use all the new/updated features of Core Lightning v23.08. This should be complementary to the X/Twitter space that Rusty Russell, Shahana Farooqi and Alex Myers did last week and also the three blog posts presenting CLN v23.08 written by Rusty Russell:

Preliminary question to Vincenzo Palazzo

Tony: When did you started to contribute to Core Lightning?

Vincenzo: I started in 2019 by writing a Java library. I found some bugs, I patched some bugs and I never stopped.

Tony: 4 years ago, so you start to know well the software!

Vincenzo: Yes but they're still some parts that are like black boxes, like the wallet part.

Tony: Can you give us some advices on how to start contributing to CLN?

Vincenzo: It depends. I was quite familiar with C, but not that is in Core Lightning which uses ccan allocator (written by Rusty). I started from building tools for Core Lightning, I found some bugs and contributed back. And when you contributed back, usually you find some other stuffs that you want to do in CLN. And you implement it, you push it up on git and open a Github pull request. Usually the patch get merged (or maybe not). I think it's the best way to contribute. I know that some persons are scared of C (I've seen that by doing mentoring in Summer of Bitcoin). Don't be shy, Core Lightning makes a little bit better that usual C, I think. Maybe start by building tools and then contribute on the parts you like in the repository.

Tony: And with the plugin system there is some doors to enter in Core Lightning eco-system without having to write C code.

Vincenzo: Yeah, I started with Java. It was a difficult language to put inside Core Lightning but one of my plugin that I use for the Bitcoin backend on my cloud machine is written in Kotlin. He is still running. Yeah, the plugin system is super friendly when you understand how it works, because you take your language and start building tool for Core Lightning. They are people that write plugins in Haskell.

Tony: Thank you for those explanations. Now, let's talk a little bit more about that release. Two more questions before we jump into setconfig. What was the most exciting feature or bug fix or anything on the release v23.08?

Vincenzo: I will tell my best feature is setconfig. But I think one of the really important feature is splicing for Core lightning and also in general for the Lightning Network. The Taproot support is also interesting because we'll implement some protocol improvement, and improving the protocol is always good. But my personal feature is setconfig.

Tony: Great! And this is the one we are going to talk about, but just before you continue talking about setconfig, last question. What was the most challenging thing (maybe for you or for the team) to get into the release, if there is one?

Vincenzo: I will tell you the most difficult to review from my side was splicing. Because, I was not familiar with the proposal, I didn't help much on review splicing, and splicing touches a lot of parts of the code. And another difficult feature to do was the experimental feature at runtime. With the previous version of Core Lightning, when you wanted an experimental feature you had to compile the code and run it. Now you are able to say I want this at runtime. And this is very importants for tools like lnprotest. This is a a very huge performance improvement.

setconfig

Vincenzo: setconfig is a new RPC method that allows to modify the Core Lightning configuration at runtime. Maybe everybody is familiar that Core Lightning has configuration files where you say "hey I want to do have that field to be equal to this". Also plugins can have configuration options, right. This is my favorite RPC command because I am building coffee plugin manager for Core Lightning and with this RPC command you can have a plugin manager that asks to the user what is the value that you want for this configuration. So you have a very interactive way to do this at runtime. And also if I remember correctly, this also modify the configuration files. It's perfect for me. I love this feature.

Let's see how to use setconfig command.

Start 2 Lightning nodes running on regtest

Let's start two Lightning nodes running on the Bitcoin regtest chain by sourcing the script lightning/contrib/startup_regtest.sh provided in CLN repository and by running the command start_ln:

◉ tony@tony:~/clnlive:
$ source lightning/contrib/startup_regtest.sh
...
◉ tony@tony:~/clnlive:
$ start_ln
...

We can check that l1-cli is just an alias for lightning-cli with the base directory being /tmp/l1-regtest:

◉ tony@tony:~/clnlive:
$ alias l1-cli
alias l1-cli='lightning-cli --lightning-dir=/tmp/l1-regtest'

Let's also verify that we are running the new release of CLN:

◉ tony@tony:~/clnlive:
$ l1-cli --version
v23.08

We can also have a look at l1's config file /tmp/l1-regtest/config:

network=regtest
log-level=debug
log-file=/tmp/l1-regtest/log
addr=localhost:7171
allow-deprecated-apis=false

Before CLN v23.08 to change any config option we had to modified that config file and restart our node. Now, for the config options that are dynamic this is no longer needed, we can do this at runtime using setconfig command.

Let's take the example of min-capacity-sat dynamic config option that defines the minimum value a node accepts for channel open requests.

We can change it and set it to 20000sat by running the following command:

◉ tony@tony:~/clnlive:
$ l1-cli setconfig  min-capacity-sat 20000
{
   "config": {
      "config": "min-capacity-sat",
      "value_int": 20000,
      "source": "/tmp/l1-regtest/regtest/config:2",
      "dynamic": true
   }
}

Note that while this option has been change dynamically, its new value has been written to the appropriate config file and becomes persistent accross node restart:

◉ tony@tony:~/clnlive:
$ cat /tmp/l1-regtest/regtest/config
# Inserted by setconfig Thu Aug 31 16:22:14 2023
min-capacity-sat=20000

We can also look for the word dynamic in the lightningd-config man page to know about builtin config options that are dynamic.

Let's do this again with the option autoclean-cycle from autoclean plugin:

◉ tony@tony:~/clnlive:
$ l1-cli setconfig autoclean-cycle 10
{
   "config": {
      "config": "autoclean-cycle",
      "value_int": 10,
      "source": "/tmp/l1-regtest/regtest/config:4",
      "plugin": "/usr/local/libexec/c-lightning/plugins/autoclean",
      "dynamic": true
   }
}

And we can check again that this new value for autoclean-cycle is persistent accross node restart:

◉ tony@tony:~/clnlive:
$ cat /tmp/l1-regtest/regtest/config
# Inserted by setconfig Thu Aug 31 16:22:14 2023
min-capacity-sat=20000
# Inserted by setconfig Thu Aug 31 16:23:59 2023
autoclean-cycle=10

Before we continue with the improvement on listconfigs command, let's mentioned that if a plugin wants to declare some of its options to be dymanic, this can be done in the getmanifest response by setting the dynamic field for the option to true. See Plugin: The getmanifest method:

{
  "options": [
    {
      "name": "greeting",
      "type": "string",
      "default": "World",
      "description": "What name should I call you?",
      "deprecated": false,
          "dynamic": false
    }
  ],
  "rpcmethods": [...],
  "subscriptions": [...],
  "hooks": [...],
  "featurebits": {...},
  "notifications": [...],
  "nonnumericids": ...,
  "dynamic": ...
}

listconfigs

Vincenzo: listconfigs is a very important command because it makes the config of the running node accessible to the plugins. Plugins sometimes want to know if you've set a server port, for instance the grpc plugin works in this way. If you want to know if there is some configuration set in the config file which are not related to the plugin itself, listconfigs is the only method that you have to check the value of this configuration.

Back to our terminal, let's try the listconfigs command:

◉ tony@tony:~/clnlive:
$ l1-cli listconfigs
{
  "configs": {
    "lightning-dir": {
      "value_str": "/tmp/l1-regtest",
      "source": "cmdline"
    },
    "network": {
      "value_str": "regtest",
      "source": "cmdline"
    },
    "testnet": {
      "set": false,
      "source": "default"
    },
    "signet": {
      "set": false,
      "source": "default"
    },
    "mainnet": {
      "set": false,
      "source": "default"
    },
    "regtest": {
      "set": false,
      "source": "default"
    },
    "rpc-file": {
      "value_str": "lightning-rpc",
      "source": "default"
    },
    "allow-deprecated-apis": {
      "value_bool": false,
      "source": "/tmp/l1-regtest/config:5"
    },
    "plugin": {
      "values_str": [],
      "sources": []
    },
    "plugin-dir": {
      "values_str": [],
      "sources": []
    },
    "clear-plugins": {
      "set": false,
      "source": "default"
    },
    "disable-plugin": {
      "values_str": [],
      "sources": []
    },
    "important-plugin": {
      "values_str": [],
      "sources": []
    },
    "always-use-proxy": {
      "value_bool": false,
      "source": "default"
    },
    "daemon": {
      "set": false,
      "source": "default"
    },
    "large-channels": {
      "set": false,
      "source": "default"
    },
    "experimental-dual-fund": {
      "set": false,
      "source": "default"
    },
    "experimental-splicing": {
      "set": false,
      "source": "default"
    },
    "experimental-onion-messages": {
      "set": false,
      "source": "default"
    },
    "experimental-offers": {
      "set": false,
      "source": "default"
    },
    "experimental-shutdown-wrong-funding": {
      "set": false,
      "source": "default"
    },
    "experimental-peer-storage": {
      "set": false,
      "source": "default"
    },
    "experimental-quiesce": {
      "set": false,
      "source": "default"
    },
    "experimental-anchors": {
      "set": false,
      "source": "default"
    },
    "rgb": {
      "value_str": "02acf0",
      "source": "default"
    },
    "alias": {
      "value_str": "LATENTWATER",
      "source": "default"
    },
    "pid-file": {
      "value_str": "/tmp/l1-regtest/lightningd-regtest.pid",
      "source": "default"
    },
    "ignore-fee-limits": {
      "value_bool": true,
      "source": "default"
    },
    "watchtime-blocks": {
      "value_int": 6,
      "source": "default"
    },
    "max-locktime-blocks": {
      "value_int": 2016,
      "source": "default"
    },
    "funding-confirms": {
      "value_int": 1,
      "source": "default"
    },
    "require-confirmed-inputs": {
      "value_bool": false,
      "source": "default"
    },
    "cltv-delta": {
      "value_int": 6,
      "source": "default"
    },
    "cltv-final": {
      "value_int": 10,
      "source": "default"
    },
    "commit-time": {
      "value_int": 10,
      "source": "default"
    },
    "fee-base": {
      "value_int": 1,
      "source": "default"
    },
    "rescan": {
      "value_int": 30,
      "source": "default"
    },
    "fee-per-satoshi": {
      "value_int": 10,
      "source": "default"
    },
    "htlc-minimum-msat": {
      "value_msat": 0,
      "source": "default"
    },
    "htlc-maximum-msat": {
      "value_msat": 18446744073709552000,
      "source": "default"
    },
    "max-concurrent-htlcs": {
      "value_int": 483,
      "source": "default"
    },
    "max-dust-htlc-exposure-msat": {
      "value_msat": 50000000,
      "source": "default"
    },
    "min-capacity-sat": {
      "value_int": 20000,
      "source": "/tmp/l1-regtest/regtest/config:2",
      "dynamic": true
    },
    "addr": {
      "values_str": [
        "localhost:7171"
      ],
      "sources": [
        "/tmp/l1-regtest/config:4"
      ]
    },
    "bind-addr": {
      "values_str": [],
      "sources": []
    },
    "announce-addr": {
      "values_str": [],
      "sources": []
    },
    "announce-addr-discovered": {
      "value_str": "auto",
      "source": "default"
    },
    "announce-addr-discovered-port": {
      "value_int": 19846,
      "source": "default"
    },
    "offline": {
      "set": false,
      "source": "default"
    },
    "autolisten": {
      "value_bool": false,
      "source": "default"
    },
    "accept-htlc-tlv-type": {
      "values_int": [],
      "sources": []
    },
    "disable-dns": {
      "set": false,
      "source": "default"
    },
    "encrypted-hsm": {
      "set": false,
      "source": "default"
    },
    "rpc-file-mode": {
      "value_str": "0600",
      "source": "default"
    },
    "commit-fee": {
      "value_int": 100,
      "source": "default"
    },
    "min-emergency-msat": {
      "value_msat": 25000000,
      "source": "default"
    },
    "subdaemon": {
      "values_str": [],
      "sources": []
    },
    "experimental-upgrade-protocol": {
      "set": false,
      "source": "default"
    },
    "database-upgrade": {
      "value_bool": true,
      "source": "cmdline"
    },
    "log-level": {
      "value_str": "debug",
      "source": "/tmp/l1-regtest/config:2"
    },
    "log-timestamps": {
      "value_bool": true,
      "source": "default"
    },
    "log-file": {
      "values_str": [
        "/tmp/l1-regtest/log"
      ],
      "sources": [
        "/tmp/l1-regtest/config:3"
      ]
    },
    "renepay-debug-mcf": {
      "set": false,
      "source": "default",
      "plugin": "/usr/local/libexec/c-lightning/plugins/cln-renepay"
    },
    "renepay-debug-payflow": {
      "set": false,
      "source": "default",
      "plugin": "/usr/local/libexec/c-lightning/plugins/cln-renepay"
    },
    "bitcoin-datadir": {
      "value_str": "/home/tony/.bitcoin",
      "source": "cmdline",
      "plugin": "/usr/local/libexec/c-lightning/plugins/bcli"
    },
    "disable-mpp": {
      "set": false,
      "source": "default",
      "plugin": "/usr/local/libexec/c-lightning/plugins/pay"
    },
    "autoclean-cycle": {
      "value_int": 10,
      "source": "/tmp/l1-regtest/regtest/config:4",
      "plugin": "/usr/local/libexec/c-lightning/plugins/autoclean",
      "dynamic": true
    }
  }
}

Note that if an option has the dynamic field sets (this will always be to true) then it can be set dynamically with setconfig command.

If we want to filter that list and only keep the dynamic options we can use jq and this following one-liner:

◉ tony@tony:~/clnlive:
$ l1-cli listconfigs | jq '.configs | map(select(.. | .dynamic?))'
[
  {
    "value_int": 20000,
    "source": "/tmp/l1-regtest/regtest/config:2",
    "dynamic": true
  },
  {
    "value_int": 10,
    "source": "/tmp/l1-regtest/regtest/config:4",
    "plugin": "/usr/local/libexec/c-lightning/plugins/autoclean",
    "dynamic": true
  }
]

And to play a little more with setconfig and listconfigs commands, let set the value of min-capacity-sat to 30000 and list again the dynamic config options:

◉ tony@tony:~/clnlive:
$ l1-cli setconfig  min-capacity-sat 30000
{
   "config": {
      "config": "min-capacity-sat",
      "value_int": 30000,
      "source": "/tmp/l1-regtest/regtest/config:2",
      "dynamic": true
   }
}
◉ tony@tony:~/clnlive:
$ l1-cli listconfigs | jq '.configs | map(select(.. | .dynamic?))'
[
  {
    "value_int": 30000,
    "source": "/tmp/l1-regtest/regtest/config:2",
    "dynamic": true
  },
  {
    "value_int": 10,
    "source": "/tmp/l1-regtest/regtest/config:4",
    "plugin": "/usr/local/libexec/c-lightning/plugins/autoclean",
    "dynamic": true
  }
]

Note: I found out after the live that this jq filter is not exactly what I wanted because it doesn't return the keys of the key/value pairs we match. And we need recursive descent as dynamic presence/absence can be tested directly. Here a is a better jq filter:

◉ tony@tony:~/work/rich/db:[git»master]
$ l1-cli listconfigs | jq '.configs | map_values(select(.dynamic?))'
{
  "min-capacity-sat": {
    "value_int": 20000,
    "source": "/tmp/l1-regtest/regtest/config:2",
    "dynamic": true
  },
  "autoclean-cycle": {
    "value_int": 10,
    "source": "/tmp/l1-regtest/regtest/config:4",
    "plugin": "/usr/local/libexec/c-lightning/plugins/autoclean",
    "dynamic": true
  }
}

Experimental features at runtime-enabled

Vincenzo: Before this release, to enable exerimental features we had to run ./configure --enable-experimental-features in the CLN repository and recompile it. This was a little bit a pain from the user point of view, because if you wanted to use something new for just one time you need to recompile Core Lightning. It is not a trivial stuff if you are Raspberry Pi, it can takes 20 to 30 minutes. So it's not user-friendly. And I have Core Lightning in Raspberry Pi 0 and this is not something that I loved. But now we are able to say "I want that feature at runtime and have it". I will use that feature a lot in integration testing with Core Lightning because you just need to specify the experimental feature at runtime if you want. It will be interesting with lnprotest, no need anymore to recompile Core Lightning. This is nice.

For those who have never compiled CLN, the steps are the following (assuming all depencies installed):

◉ tony@tony:~/clnlive/lightning:[git»(HEAD detached at v23.08)]
$ ./configure
◉ tony@tony:~/clnlive/lightning:[git»(HEAD detached at v23.08)]
$ make

The option that can be passed to ./configure are the following:

◉ tony@tony:~/clnlive/lightning:[git»(HEAD detached at v23.08)]
$ ./configure --help
Usage: ./configure [--reconfigure] [setting=value] [options]
If --reconfigure is specified, config.vars will set defaults.
Default settings:
CSANFLAGS =
  CC (default cc)
  CWARNFLAGS (default -Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wold-style-definition -Werror -Wno-maybe-uninitialized -Wshadow=local)
  COPTFLAGS (default -Og)
  CDEBUGFLAGS (default -std=gnu11 -g -fstack-protector-strong)
  CONFIGURATOR_CC (default cc)
    To override compile line for configurator itself
  PYTEST (default python3 -m pytest)
  VALGRIND (default 1)
Options include:
  --prefix= (default /usr/local)
    Prefix for make install
  --enable/disable-developer (default disable)
    Developer mode, good for testing
  --enable/disable-debug (default disable)
    Extra debug checks in the build, good for testing
  --enable/disable-compat (default enable)
    Compatibility mode, good to disable to see if your software breaks
  --enable/disable-valgrind (default (autodetect))
    Run tests with Valgrind
  --enable/disable-static (default disable)
    Static link sqlite3 and zlib libraries
  --enable/disable-coverage (default disable)
    Compile with Clang coverage instrumentation
  --enable/disable-address-sanitizer (default disable)
    Compile with address-sanitizer
  --enable/disable-ub-sanitizer (default disable)
    Compile with undefined behaviour sanitizer
  --enable/disable-fuzzing (default disable)
    Compile with fuzzing
  --enable/disable-rust (default enable)
    Compile with Rust support

Before CLN v23.08, to enable experimental features we had to call ./configure like this

$ ./configure --enable-experimental-features

before running make.

We'll see in the next section an example of experimental feature enable at runtime with experimental-splicing.

The experimental features are listed in lightningd-config man page in the section "Experimental Options".

experimental-splicing

Vincenzo: Splicing enables to add funds and increase the maximum capacity of a channel at runtime without opening a new channel or closing a previous one. This is what splicing is for me. I think for other people splicing is more than that. I guess also Phoenix wallet is using this feature to enable the single balance in our wallet. Because we always talk about onchain and offchain balance. But with this feature you also improve the wallet, you say "there is no anymore onchain and offchain but there is a single balance".

If you want to know more about Lightning Network splicing you can check:

Steps to do a splice in of 100000sat

To do a splice in Core Lightning we need to use the command fundpsbt, signpsbt and the new splice commands splice_init, splice_update, splice_signed and run them in the following order:

◉ tony@tony:~/clnlive:
$ l1-cli -k fundpsbt satoshi=110000sat feerate=slow startweight=166 excess_as_change=true
{
   "psbt": "<psbt_0>",
   ...
}
◉ tony@tony:~/clnlive:
$ l1-cli -k splice_init channel_id=<channel_id> \relative_amount=100000 \initialpsbt=<psbt_0>
{
   "psbt": "<psbt_1>"
}
◉ tony@tony:~/clnlive:
$ l1-cli -k splice_update channel_id=<channel_id> \psbt=<psbt_1>
{
   "psbt": "<psbt_2>",
   "commitments_secured": true
}
◉ tony@tony:~/clnlive:
$ l1-cli -k signpsbt psbt=<psbt_2>
{
   "signed_psbt": "<psbt_3>"
}
◉ tony@tony:~/clnlive:
$ l1-cli -k splice_signed channel_id=<channel_id> \psbt=<psbt_3>
{
   "tx": "...",
   "txid": "..."
}

Fund a channel from the node l1 to the node l2 of 1000000sat

Let's fund a channel of 1000000sat from the node l1 to the node l2 using fund_nodes command from the lightning/contrib/startup_regtest.sh script:

◉ tony@tony:~/clnlive:
$ fund_nodes
Mining into address bcrt1qx0kcnjvdmw6ehw0vm90pln5k7mwacg0tz0grg3... done.
bitcoind balance: 50.00000000
Waiting for lightning node funds... found.
Funding channel from node 1 to node 2. Waiting for confirmation... done.

Restart l1 and l2 with experimental-splicing

We can check using listconfigs command that l1 is not running experimental-splicing feature:

◉ tony@tony:~/clnlive:
$ l1-cli listconfigs experimental-splicing | jq
{
  "configs": {
    "experimental-splicing": {
      "set": false,
      "source": "default"
    }
  }
}

Before restarting l1 with experimental-splicing let's check features supported by the node l2 he advertized to use previously:

◉ tony@tony:~/clnlive:
$ l1-cli listpeers
{
   "peers": [
      {
         "id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "num_channels": 1,
         "netaddr": [
            "127.0.0.1:7272"
         ],
         "features": "08a0000a0269a2"
      }
   ]
}

Now let's print out the channel we're going to resize in a moment:

◉ tony@tony:~/clnlive:
$ l1-cli listfunds
{
   "outputs": [
      {
         "txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "output": 1,
         "amount_msat": 98999834000,
         "scriptpubkey": "51207879d6347cd943f6bc54c21d820f61e5a4e12a557923f8c53629fc38bf4f2332",
         "address": "bcrt1p0puavdrum9pld0z5cgwcyrmpukjwz2j40y3l33fk987r3060yveqdj4cyk",
         "status": "confirmed",
         "blockheight": 103,
         "reserved": false
      }
   ],
   "channels": [
      {
         "peer_id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "state": "CHANNELD_NORMAL",
         "channel_id": "2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20",
         "short_channel_id": "103x1x0",
         "our_amount_msat": 1000000000,
         "amount_msat": 1000000000,
         "funding_txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "funding_output": 0
      }
   ]
}

Let's stop the node l1 and restart it with experimental-splicing at the command line:

◉ tony@tony:~/clnlive:
$ l1-cli stop
"Shutdown complete"
◉ tony@tony:~/clnlive:
$ lightningd --lightning-dir=/tmp/l1-regtest --experimental-splicing --daemon

Finally, we can verify l1 is now running with experimental-splicing enabled:

◉ tony@tony:~/clnlive:
$ l1-cli listconfigs experimental-splicing
{
  "configs": {
    "experimental-splicing": {
      "set": true,
      "source": "cmdline"
    }
  }
}

Note that we didn't have to recompile Core Lightning to make this work.

Both nodes need to support splicing to be able to resize the channel using splicing. Hence, we have to restart the node l2 with experimental-splicing.

First we stop the node l2:

◉ tony@tony:~/clnlive:
$ l2-cli stop
"Shutdown complete"

Then we add the line experimental-splicing in the config file /tmp/l2-regtest/config

network=regtest
log-level=debug
log-file=/tmp/l2-regtest/log
addr=localhost:7272
allow-deprecated-apis=false
experimental-splicing

and we restart l2 like this:

◉ tony@tony:~/clnlive:
$ lightningd --lightning-dir=/tmp/l2-regtest --daemon

Finally, we can verify l2 is now running with experimental-splicing enabled:

◉ tony@tony:~/clnlive:
$ l2-cli listconfigs experimental-splicing
{
  "configs": {
    "experimental-splicing": {
      "set": true,
      "source": "/tmp/l2-regtest/config:6"
    }
  }
}

We can also verify that features supported by the node l2 have changed accordingly with the fact that it now supports splicing:

◉ tony@tony:~/clnlive:
$ l1-cli listpeers
{
   "peers": [
      {
         "id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "num_channels": 1,
         "netaddr": [
            "127.0.0.1:7272"
         ],
         "features": "080000000000000000000000000008a0080a0269a2"
      }
   ]
}

Splice in to add 100000sat to channel between the node l1 and l2

First the node l1 funds a PSBT with some extra sats to pay the fees:

◉ tony@tony:~/clnlive:
$ l1-cli -k fundpsbt satoshi=110000sat feerate=slow startweight=166 excess_as_change=true
{
   "psbt": "cHNidP8BAF4CAAAAASNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQAAAAD9////AdDv5AUAAAAAIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejlsAAAAAAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIAAA==",
   "feerate_per_kw": 253,
   "estimated_final_weight": 609,
   "excess_msat": 0,
   "change_outnum": 0,
   "reservations": [
      {
         "txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "vout": 1,
         "was_reserved": false,
         "reserved": true,
         "reserved_to_block": 180
      }
   ]
}

Then the node l1 uses that previous PSBT as value of the key initialpsbt in the command splice_init:

◉ tony@tony:~/clnlive:
$ l1-cli -k splice_init channel_id=2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20 \relative_amount=100000 \initialpsbt=cHNidP8BAF4CAAAAASNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQAAAAD9////AdDv5AUAAAAAIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejlsAAAAAAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIAAA==
{
   "psbt": "cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEFR1IhAuEaqjleV/QHeAYbOYXFjlYyMjI0jkjC4ZSGdWFwsRkMIQPuF0K/Nyv334JI8U9sLDOz65B5Yj6CBWN1R/KhZiKUmVKuAQ4gI2TldBWGxmvvt0B8jUUsTf1ut27uzAVOeoh6m3yZXiABDwQAAAAAARAEAAAAAAz8CWxpZ2h0bmluZwEINPAjtW3bj34AAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAQAAAAEQBP3///8M/AlsaWdodG5pbmcBCNha7AErWMyuAAEDCNDv5AUAAAAAAQQiUSB2OWr5lX//6pXQGVhle21zOyYLVUxeXkKNnK0g4+d6OQz8CWxpZ2h0bmluZwEI40TubF/EhR4AAQMIAAAAAAAAAAABBCIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhDPwJbGlnaHRuaW5nAQjrDjTtqP057AA="
}

Then l1 update the splice with the command splice_update using the PSBT of the previous output:

◉ tony@tony:~/clnlive:
$ l1-cli -k splice_update channel_id=2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20 \psbt=cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEFR1IhAuEaqjleV/QHeAYbOYXFjlYyMjI0jkjC4ZSGdWFwsRkMIQPuF0K/Nyv334JI8U9sLDOz65B5Yj6CBWN1R/KhZiKUmVKuAQ4gI2TldBWGxmvvt0B8jUUsTf1ut27uzAVOeoh6m3yZXiABDwQAAAAAARAEAAAAAAz8CWxpZ2h0bmluZwEINPAjtW3bj34AAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAQAAAAEQBP3///8M/AlsaWdodG5pbmcBCNha7AErWMyuAAEDCNDv5AUAAAAAAQQiUSB2OWr5lX//6pXQGVhle21zOyYLVUxeXkKNnK0g4+d6OQz8CWxpZ2h0bmluZwEI40TubF/EhR4AAQMIAAAAAAAAAAABBCIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhDPwJbGlnaHRuaW5nAQjrDjTtqP057AA=
{
   "psbt": "cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAAAAAAEQBAAAAAAM/AlsaWdodG5pbmcBCDTwI7Vt249+AAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIBDiAjZOV0FYbGa++3QHyNRSxN/W63bu7MBU56iHqbfJleIAEPBAEAAAABEAT9////DPwJbGlnaHRuaW5nAQjYWuwBK1jMrgABAwjQ7+QFAAAAAAEEIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejkM/AlsaWdodG5pbmcBCONE7mxfxIUeAAEDCODIEAAAAAAAAQQiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQz8CWxpZ2h0bmluZwEI6w407aj9OewA",
   "commitments_secured": true
}

As the commitments_secured is true the node l1 can proceed and signed the PSBT returned by splice_update command:

◉ tony@tony:~/clnlive:
$ l1-cli -k signpsbt psbt=cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAAAAAAEQBAAAAAAM/AlsaWdodG5pbmcBCDTwI7Vt249+AAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIBDiAjZOV0FYbGa++3QHyNRSxN/W63bu7MBU56iHqbfJleIAEPBAEAAAABEAT9////DPwJbGlnaHRuaW5nAQjYWuwBK1jMrgABAwjQ7+QFAAAAAAEEIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejkM/AlsaWdodG5pbmcBCONE7mxfxIUeAAEDCODIEAAAAAAAAQQiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQz8CWxpZ2h0bmluZwEI6w407aj9OewA
{
   "signed_psbt": "cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAAAAAAEQBAAAAAAM/AlsaWdodG5pbmcBCDTwI7Vt249+AAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIBDiAjZOV0FYbGa++3QHyNRSxN/W63bu7MBU56iHqbfJleIAEPBAEAAAABEAT9////ARNAn1ief1Bc2LsrPQTcSdg7A4zbvw1Qht1ujTxnFQ4FK6Zg/vqEk6w4hEV04Pw5TKwjcyTs4Py0tRSnpTb+c4L2RyEWSM4xYkzRqLmfsVqnRrODxgXc/lzgKrbsicGdcjurlOYJAEepcUUAAAAADPwJbGlnaHRuaW5nAQjYWuwBK1jMrgABAwjQ7+QFAAAAAAEEIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejkhB8V1yT0zJd1z6oZgSQuMvSicMlABXx/NnR40UgvEyK2ZCQB2TDivBAAAAAz8CWxpZ2h0bmluZwEI40TubF/EhR4AAQMI4MgQAAAAAAABBCIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhDPwJbGlnaHRuaW5nAQjrDjTtqP057AA="
}

Finally, to terminate the splice, the node l1 uses the command splice_signed and passes it the previous signed_psbt as imput along with the channel id of the channel being spliced:

◉ tony@tony:~/clnlive:
$ l1-cli -k splice_signed channel_id=2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20 \psbt=cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAAAAAAEQBAAAAAAM/AlsaWdodG5pbmcBCDTwI7Vt249+AAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIBDiAjZOV0FYbGa++3QHyNRSxN/W63bu7MBU56iHqbfJleIAEPBAEAAAABEAT9////ARNAn1ief1Bc2LsrPQTcSdg7A4zbvw1Qht1ujTxnFQ4FK6Zg/vqEk6w4hEV04Pw5TKwjcyTs4Py0tRSnpTb+c4L2RyEWSM4xYkzRqLmfsVqnRrODxgXc/lzgKrbsicGdcjurlOYJAEepcUUAAAAADPwJbGlnaHRuaW5nAQjYWuwBK1jMrgABAwjQ7+QFAAAAAAEEIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejkhB8V1yT0zJd1z6oZgSQuMvSicMlABXx/NnR40UgvEyK2ZCQB2TDivBAAAAAz8CWxpZ2h0bmluZwEI40TubF/EhR4AAQMI4MgQAAAAAAABBCIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhDPwJbGlnaHRuaW5nAQjrDjTtqP057AA=
{
   "tx": "020000000001022364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e200000000000000000002364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e200100000000fdffffff02d0efe4050000000022512076396af9957fffea95d01958657b6d733b260b554c5e5e428d9cad20e3e77a39e0c81000000000002200209da9fb95340af03d03f757fa6f140fb60bdb085e49de120f1a01249c0fd182a104004730440220337b56db83160c533bdd5b01242b29da84ea696d0b7dd7b6102b1def3b19cc5b02206c5776636228c7e04cda1978b4b71ef284bddd17bd6945402d01dcccc654bc7b01473044022051e1b63ffea311220364fc5114cdf75f021d49bd8029a621633a44fe882c99ab022034823947f72faa85b4f3b6b5b0240295e44fb6246b7e9eddaa84f12e8b36b2870147522102e11aaa395e57f40778061b3985c58e56323232348e48c2e19486756170b1190c2103ee1742bf372bf7df8248f14f6c2c33b3eb9079623e8205637547f2a16622949952ae01409f589e7f505cd8bb2b3d04dc49d83b038cdbbf0d5086dd6e8d3c67150e052ba660fefa8493ac38844574e0fc394cac237324ece0fcb4b514a7a536fe7382f6476c000000",
   "txid": "a02600e06daee79e8fc8c4cb4f9ceea56eb24701bddc2833c225773ff4e32b29"
}

At that point, to make the splice effective and the channel resized, both nodes are waiting for the transaction 02000... with txid a0260...32b29 to be including in a block and to get confirmed 6 times:

As we run the regtest chain by ourself, we can first check that the transaction with the txid a0260...32b29 is in the mempool and then mine 6 blocks:

◉ tony@tony:~/clnlive:
$ alias bt-cli
alias bt-cli='bitcoin-cli -datadir=$PATH_TO_BITCOIN -regtest'
◉ tony@tony:~/clnlive:
$ bt-cli getrawmempool
[
  "a02600e06daee79e8fc8c4cb4f9ceea56eb24701bddc2833c225773ff4e32b29"
]
◉ tony@tony:~/clnlive:
$ bt-cli -rpcwallet=default getnewaddress
bcrt1qnk2vd6xz48my456tt009q6j4yuxx9hz8akhy7a
◉ tony@tony:~/clnlive:
$ bt-cli generatetoaddress 6 bcrt1qnk2vd6xz48my456tt009q6j4yuxx9hz8akhy7a
[
  "2be57cd5b3a071f0e8274da6248c59da7128b6f3161a8d43fea682638f8f2509",
  "326f91e5918abbdbcd397055584575604f922d0ec609e9de5547dae4d44ef7d7",
  "303bcea6fc15c2d59cf07fe258f04a640e0f1f65b3fc1e274730ff8f5418e797",
  "7f5bd209094c494c88a97174c230f779c6d814c4f3867f89f5a631c555f719d0",
  "3fe52d447e2c411dc32d6076d643d0707d329139d67337869ed552e8fed200ee",
  "6da9764ecef5f8576180b162bb22afbbe04d744a6e9a1cdba480bb7925b2dd7b"
]

As CLN takes some time to get (maybe every 30s, I don't know the numbers) data from the bitcoin backend, we can quickly check that the channel we are resizing is in the state CHANNELD_AWAITING_SPLICE:

◉ tony@tony:~/clnlive:
$ l1-cli listfunds
{
   "outputs": [
      {
         "txid": "a02600e06daee79e8fc8c4cb4f9ceea56eb24701bddc2833c225773ff4e32b29",
         "output": 0,
         "amount_msat": 98889680000,
         "scriptpubkey": "512076396af9957fffea95d01958657b6d733b260b554c5e5e428d9cad20e3e77a39",
         "address": "bcrt1pwcuk47v40ll749wsr9vx27mdwvajvz64f309us5dnjkjpcl80gusm0x226",
         "status": "unconfirmed",
         "reserved": false
      },
      {
         "txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "output": 1,
         "amount_msat": 98999834000,
         "scriptpubkey": "51207879d6347cd943f6bc54c21d820f61e5a4e12a557923f8c53629fc38bf4f2332",
         "address": "bcrt1p0puavdrum9pld0z5cgwcyrmpukjwz2j40y3l33fk987r3060yveqdj4cyk",
         "status": "confirmed",
         "blockheight": 103,
         "reserved": true,
         "reserved_to_block": 180
      }
   ],
   "channels": [
      {
         "peer_id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "state": "CHANNELD_AWAITING_SPLICE",
         "channel_id": "2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20",
         "short_channel_id": "103x1x0",
         "our_amount_msat": 1000000000,
         "amount_msat": 1000000000,
         "funding_txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "funding_output": 0
      }
   ]
}

And after a few more seconds we see that the channel between the node l1 and l2 has been resized:

◉ tony@tony:~/clnlive:
$ l1-cli listfunds
{
   "outputs": [
      {
         "txid": "a02600e06daee79e8fc8c4cb4f9ceea56eb24701bddc2833c225773ff4e32b29",
         "output": 0,
         "amount_msat": 98889680000,
         "scriptpubkey": "512076396af9957fffea95d01958657b6d733b260b554c5e5e428d9cad20e3e77a39",
         "address": "bcrt1pwcuk47v40ll749wsr9vx27mdwvajvz64f309us5dnjkjpcl80gusm0x226",
         "status": "confirmed",
         "blockheight": 109,
         "reserved": false
      }
   ],
   "channels": [
      {
         "peer_id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "state": "CHANNELD_NORMAL",
         "channel_id": "2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20",
         "short_channel_id": "109x1x1",
         "our_amount_msat": 1100000000,
         "amount_msat": 1100000000,
         "funding_txid": "a02600e06daee79e8fc8c4cb4f9ceea56eb24701bddc2833c225773ff4e32b29",
         "funding_output": 1
      }
   ]
}

Taproot addresses / p2tr

Vincenzo: This is a very cool feature and the first step to include taproot in the Lightning Network. Basically, Taproot was enable 1 or more years ago. In Core Lightning, Taproot is just used a the wallet level.

Note that Taproot addresses (p2tr) on Bitcoin mainnet start with bc1p and bech32 addresses on mainnet start with bc1q.

If we look the outputs field of the JSON objects returned by listfunds we used so far in that presentation, the addresses was p2tr addresses.

Some examples of newaddr command and p2tr addresses:

◉ tony@tony:~/clnlive:
$ l1-cli newaddr
{
   "bech32": "bcrt1q0esx06yg3t09u9n4wdl753tsz4v79f05czrqs2"
}
◉ tony@tony:~/clnlive:
$ l1-cli newaddr p2tr
{
   "p2tr": "bcrt1pkw5pysm32pyc64s8gahwvy2py86wwhj78kd4tl9y8thyjlwewlcqzwj2qx"
}
◉ tony@tony:~/clnlive:
$ l1-cli newaddr all
{
   "bech32": "bcrt1qsqk8j872je446lpkgtg9d3ke664qyd87t5yu0w",
   "p2tr": "bcrt1pau9p4jgu4jhfgqaa9pz6qzucuu4qc9jj88k9zt0dpyz5jhtyrv4qvc0ew5"
}

renepay plugin

Vincenzo: renepay is an experimental plugin that implements Pickhardt R. and Richter S. research about improving the path finding around the Lightning Network. Currently all the implementation are using the basic Dijkstra algorithm. The renepay uses something a little more technical I would say, in the sense that we use an algorithm that is the min cost flow and we don't use anymore Dijkstra. And I think it is also a probabilistic algorithm. Eduardo Quintana-Miranda implemented all the math of that plugin. But renepay is a plugin that needs more usage from the people using the Lightning Network because we are collecting bug reports to improve it. This plugin is experimental because we don't know how far we can get better. I think we will get better with this algorithm but currently there are no open data. There is simulation but no open data. I think CLN is the first implementation that implement the full Rene proposal. So if someone want to try this new way of paying, it is good moment to report the bugs. Something to add is if the plugin crash, Core Lightning doesn't crash, so don't worry about that. When I try a payment, usually I try renepay, if it works okay, if crash I will try pay.

Even if in our little network of only 2 nodes running on regtest, using renepay doesn't make much sens, let's do it just to demonstrate that in its most simple use case, its interface is the same as pay command: we just pass it a bolt11 invoice we want to pay as argument.

Back to our terminal, the node l2 generates the following invoice

◉ tony@tony:~/clnlive:
$ l2-cli invoice 10000sat label pizza
{
   "payment_hash": "3a315c41cae8a32ad86d16914b8a3edd27baa2ad9b262c651f9bb05d8bfe40ad",
   "expires_at": 1694100167,
   "bolt11": "lnbcrt100u1pj0pvz8sp5ed2wdf08knan6wzkqnld93f35h2khlh3pnsryrqdxckg3rxt65tspp58gc4csw2az3j4krdz6g5hz37m5nm4g4dnvnzceglnwc9mzl7gzksdqgwp5h57npxqyjw5qcqp29qxpqysgq35e3htpwntwtnh7usnh5v0nypk9ju77932zn49rkma436t64ltj8dvetrh9ekmpm4fxs42ejzs6zlv4pz5tccq7vsme5s4ct07jesvqp0hav94",
   "payment_secret": "cb54e6a5e7b4fb3d385604fed2c531a5d56bfef10ce0320c0d362c888ccbd517",
   "created_index": 1,
   "warning_capacity": "Insufficient incoming channel capacity to pay invoice"
}

that the node l1 pays using renepay command:

◉ tony@tony:~/clnlive:
$ l1-cli renepay lnbcrt100u1pj0pvz8sp5ed2wdf08knan6wzkqnld93f35h2khlh3pnsryrqdxckg3rxt65tspp58gc4csw2az3j4krdz6g5hz37m5nm4g4dnvnzceglnwc9mzl7gzksdqgwp5h57npxqyjw5qcqp29qxpqysgq35e3htpwntwtnh7usnh5v0nypk9ju77932zn49rkma436t64ltj8dvetrh9ekmpm4fxs42ejzs6zlv4pz5tccq7vsme5s4ct07jesvqp0hav94
# we have computed a set of 1 flows with probability 1.000, fees 0msat and delay 10
#   Flow 1: amount=10000000msat prob=1.000 fees=0msat delay=0 path=-109x1x1/1(min=max=1088360000msat)->
#   Flow 1: Success
{
   "payment_preimage": "cd3d5f225feaa7edbb920e2ec25b106ad0ba3ea014dc768c3f13d8a173d6fbd0",
   "payment_hash": "3a315c41cae8a32ad86d16914b8a3edd27baa2ad9b262c651f9bb05d8bfe40ad",
   "created_at": 1693495380.440,
   "parts": 1,
   "amount_msat": 10000000,
   "amount_sent_msat": 10000000,
   "status": "complete",
   "destination": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734"
}

self-payment with the pay command

Vincenzo: This is actually a feature I requested Rusty to implement and I tried to implement it but it was a bit tricky. This allows a node to pay an invoice that it also generated. It doesn't make sense if you think of a single Lightning node or a normal network of nodes, but this is the kind of payment that are useful for applications like Fedimint where the logics of an invoice has different meaning. Sometime the invoice is generated by the same node and the payment is for confirmation. This feature is just allowing an invoice to be paid by the same node.

Let's make a self-payment.

Let's stop the node l2 that no longer need for the demo of today:

◉ tony@tony:~/clnlive:
$ l2-cli stop
"Shutdown complete"

The node l1 does a sefl-payment by first generating an invoice, then paying that invoice and finally we list the l1's invoices to be sure the self-payment did really happened:

◉ tony@tony:~/clnlive:
$ l1-cli invoice 20000sat label pizza
{
   "payment_hash": "97e344f53a5eadd650cd1fb2ac87a2c268f358e0fb70022194e896ea9dfe0f48",
   "expires_at": 1694100463,
   "bolt11": "lnbcrt200u1pj0pvt0sp5wszfgmzp5ccymdnc4getzdw0m7tryn82458hlq7gq4tqnnwr86kspp5jl35faf6t6kav5xdr7e2epazcf50xk8qldcqygv5aztw4807payqdqgwp5h57npxqyjw5qcqp29qxpqysgqey60xcj9gkt7s6vjy8fpptfw6dnefcq3n7qzrnrz9ycmza6hxsq4p4x3kqll3cuzhcl9z7v7c3e2pnypkv952ml93qc76jqdmr3h75spd4xxtw",
   "payment_secret": "7404946c41a6304db678aa32b135cfdf96324ceaad0f7f83c8055609cdc33ead",
   "created_index": 1,
   "warning_capacity": "Insufficient incoming channel capacity to pay invoice"
}
◉ tony@tony:~/clnlive:
$ l1-cli pay lnbcrt200u1pj0pvt0sp5wszfgmzp5ccymdnc4getzdw0m7tryn82458hlq7gq4tqnnwr86kspp5jl35faf6t6kav5xdr7e2epazcf50xk8qldcqygv5aztw4807payqdqgwp5h57npxqyjw5qcqp29qxpqysgqey60xcj9gkt7s6vjy8fpptfw6dnefcq3n7qzrnrz9ycmza6hxsq4p4x3kqll3cuzhcl9z7v7c3e2pnypkv952ml93qc76jqdmr3h75spd4xxtw
{
   "destination": "02acf0a36ce2e27d13489a202bafc7065494b39650fbac2060ec9b0f6bd2c749c6",
   "payment_hash": "97e344f53a5eadd650cd1fb2ac87a2c268f358e0fb70022194e896ea9dfe0f48",
   "created_at": 1693495677.905,
   "parts": 1,
   "amount_msat": 20000000,
   "amount_sent_msat": 20000000,
   "payment_preimage": "5cc445be2a358359421267bcd65be03d45fe48e37508a0d83dbbfe80e96980fc",
   "status": "complete"
}
◉ tony@tony:~/clnlive:
$ l1-cli listinvoices
{
   "invoices": [
      {
         "label": "label",
         "bolt11": "lnbcrt200u1pj0pvt0sp5wszfgmzp5ccymdnc4getzdw0m7tryn82458hlq7gq4tqnnwr86kspp5jl35faf6t6kav5xdr7e2epazcf50xk8qldcqygv5aztw4807payqdqgwp5h57npxqyjw5qcqp29qxpqysgqey60xcj9gkt7s6vjy8fpptfw6dnefcq3n7qzrnrz9ycmza6hxsq4p4x3kqll3cuzhcl9z7v7c3e2pnypkv952ml93qc76jqdmr3h75spd4xxtw",
         "payment_hash": "97e344f53a5eadd650cd1fb2ac87a2c268f358e0fb70022194e896ea9dfe0f48",
         "amount_msat": 20000000,
         "status": "paid",
         "pay_index": 1,
         "amount_received_msat": 20000000,
         "paid_at": 1693495677,
         "payment_preimage": "5cc445be2a358359421267bcd65be03d45fe48e37508a0d83dbbfe80e96980fc",
         "description": "pizza",
         "expires_at": 1694100463,
         "created_index": 1,
         "updated_index": 1
      }
   ]
}

Terminal session

We ran the following commands in this order:

$ ls
$ source lightning/contrib/startup_regtest.sh
$ start_ln
$ alias l1-cli
$ l1-cli --version
$ l1-cli setconfig  min-capacity-sat 20000
$ cat /tmp/l1-regtest/regtest/config
$ l1-cli setconfig autoclean-cycle 10
$ cat /tmp/l1-regtest/regtest/config
$ l1-cli listconfigs | jq
$ l1-cli listconfigs | jq '.configs | map(select(.. | .dynamic?))'
$ l1-cli setconfig  min-capacity-sat 30000
$ l1-cli listconfigs | jq '.configs | map(select(.. | .dynamic?))'
$ cd lightning/
$ ./configure --help
$ ./configure
$ cd ..
$ fund_nodes
$ l1-cli listconfigs experimental-splicing | jq
$ l1-cli listpeers
$ l1-cli listfunds
$ alias l1-cli
$ l1-cli stop
$ lightningd --lightning-dir=/tmp/l1-regtest --experimental-splicing --daemon
$ l1-cli getinfo
$ l1-cli listconfigs experimental-splicing | jq
$ l2-cli stop
$ lightningd --lightning-dir=/tmp/l2-regtest --daemon
$ l2-cli listconfigs experimental-splicing | jq
$ l1-cli listpeers
$ l1-cli listpeers
$ l1-cli listfunds
$ l1-cli -k fundpsbt satoshi=110000sat feerate=slow startweight=166 excess_as_change=true
$ l1-cli -k splice_init channel_id=2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20 relative_amount=100000 initialpsbt=cHNidP8BAF4CAAAAASNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQAAAAD9////AdDv5AUAAAAAIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejlsAAAAAAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIAAA==
$ l1-cli -k splice_update channel_id=2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20 psbt=cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEFR1IhAuEaqjleV/QHeAYbOYXFjlYyMjI0jkjC4ZSGdWFwsRkMIQPuF0K/Nyv334JI8U9sLDOz65B5Yj6CBWN1R/KhZiKUmVKuAQ4gI2TldBWGxmvvt0B8jUUsTf1ut27uzAVOeoh6m3yZXiABDwQAAAAAARAEAAAAAAz8CWxpZ2h0bmluZwEINPAjtW3bj34AAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAQAAAAEQBP3///8M/AlsaWdodG5pbmcBCNha7AErWMyuAAEDCNDv5AUAAAAAAQQiUSB2OWr5lX//6pXQGVhle21zOyYLVUxeXkKNnK0g4+d6OQz8CWxpZ2h0bmluZwEI40TubF/EhR4AAQMIAAAAAAAAAAABBCIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhDPwJbGlnaHRuaW5nAQjrDjTtqP057AA=
$ l1-cli -k signpsbt psbt=cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAAAAAAEQBAAAAAAM/AlsaWdodG5pbmcBCDTwI7Vt249+AAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIBDiAjZOV0FYbGa++3QHyNRSxN/W63bu7MBU56iHqbfJleIAEPBAEAAAABEAT9////DPwJbGlnaHRuaW5nAQjYWuwBK1jMrgABAwjQ7+QFAAAAAAEEIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejkM/AlsaWdodG5pbmcBCONE7mxfxIUeAAEDCODIEAAAAAAAAQQiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQz8CWxpZ2h0bmluZwEI6w407aj9OewA
$ l1-cli -k splice_signed channel_id=2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20 psbt=cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAAAAAAEQBAAAAAAM/AlsaWdodG5pbmcBCDTwI7Vt249+AAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIBDiAjZOV0FYbGa++3QHyNRSxN/W63bu7MBU56iHqbfJleIAEPBAEAAAABEAT9////ARNAn1ief1Bc2LsrPQTcSdg7A4zbvw1Qht1ujTxnFQ4FK6Zg/vqEk6w4hEV04Pw5TKwjcyTs4Py0tRSnpTb+c4L2RyEWSM4xYkzRqLmfsVqnRrODxgXc/lzgKrbsicGdcjurlOYJAEepcUUAAAAADPwJbGlnaHRuaW5nAQjYWuwBK1jMrgABAwjQ7+QFAAAAAAEEIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejkhB8V1yT0zJd1z6oZgSQuMvSicMlABXx/NnR40UgvEyK2ZCQB2TDivBAAAAAz8CWxpZ2h0bmluZwEI40TubF/EhR4AAQMI4MgQAAAAAAABBCIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhDPwJbGlnaHRuaW5nAQjrDjTtqP057AA=
$ alias bt-cli
$ bt-cli getrawmempool
$ bt-cli -rpcwallet=default getnewaddress
$ bt-cli generatetoaddress 6 bcrt1qnk2vd6xz48my456tt009q6j4yuxx9hz8akhy7a
$ l1-cli listfunds
$ l1-cli listfunds
$ l1-cli newaddr
$ l1-cli newaddr p2tr
$ l1-cli newaddr all
$ ps -ax | rg lightn
$ l2-cli invoice 10000sat label pizza
$ l1-cli renepay lnbcrt100u1pj0pvz8sp5ed2wdf08knan6wzkqnld93f35h2khlh3pnsryrqdxckg3rxt65tspp58gc4csw2az3j4krdz6g5hz37m5nm4g4dnvnzceglnwc9mzl7gzksdqgwp5h57npxqyjw5qcqp29qxpqysgq35e3htpwntwtnh7usnh5v0nypk9ju77932zn49rkma436t64ltj8dvetrh9ekmpm4fxs42ejzs6zlv4pz5tccq7vsme5s4ct07jesvqp0hav94
$ l2-cli stop
$ l1-cli invoice 20000sat label pizza
$ l1-cli pay lnbcrt200u1pj0pvt0sp5wszfgmzp5ccymdnc4getzdw0m7tryn82458hlq7gq4tqnnwr86kspp5jl35faf6t6kav5xdr7e2epazcf50xk8qldcqygv5aztw4807payqdqgwp5h57npxqyjw5qcqp29qxpqysgqey60xcj9gkt7s6vjy8fpptfw6dnefcq3n7qzrnrz9ycmza6hxsq4p4x3kqll3cuzhcl9z7v7c3e2pnypkv952ml93qc76jqdmr3h75spd4xxtw
$ l1-cli listinvoices

And below you can read the terminal session (command lines and outputs):

◉ tony@tony:~/clnlive:
$ ls
clnlive-scratch/  lightning/  notes.org
◉ tony@tony:~/clnlive:
$ source lightning/contrib/startup_regtest.sh
lightning-cli is /usr/local/bin/lightning-cli
lightningd is /usr/local/bin/lightningd
Useful commands:
  start_ln 3: start three nodes, l1, l2, l3
  connect 1 2: connect l1 and l2
  fund_nodes: connect all nodes with channels, in a row
  stop_ln: shutdown
  destroy_ln: remove ln directories
◉ tony@tony:~/clnlive:
$ start_ln
Bitcoin Core starting
awaiting bitcoind...
Making "default" bitcoind wallet.
error code: -35
error message:
Wallet "default" is already loaded.
[1] 693143
[2] 693187
WARNING: eatmydata not found: install it for faster testing
Commands:
        l1-cli, l1-log,
        l2-cli, l2-log,
        bt-cli, stop_ln, fund_nodes
◉ tony@tony:~/clnlive:
$ alias l1-cli
alias l1-cli='lightning-cli --lightning-dir=/tmp/l1-regtest'
◉ tony@tony:~/clnlive:
$ l1-cli --version
v23.08
◉ tony@tony:~/clnlive:
$ l1-cli setconfig  min-capacity-sat 20000
{
   "config": {
      "config": "min-capacity-sat",
      "value_int": 20000,
      "source": "/tmp/l1-regtest/regtest/config:2",
      "dynamic": true
   }
}
◉ tony@tony:~/clnlive:
$ cat /tmp/l1-regtest/regtest/config
# Inserted by setconfig Thu Aug 31 16:22:14 2023
min-capacity-sat=20000
◉ tony@tony:~/clnlive:
$ l1-cli setconfig autoclean-cycle 10
{
   "config": {
      "config": "autoclean-cycle",
      "value_int": 10,
      "source": "/tmp/l1-regtest/regtest/config:4",
      "plugin": "/usr/local/libexec/c-lightning/plugins/autoclean",
      "dynamic": true
   }
}
◉ tony@tony:~/clnlive:
$ cat /tmp/l1-regtest/regtest/config
# Inserted by setconfig Thu Aug 31 16:22:14 2023
min-capacity-sat=20000
# Inserted by setconfig Thu Aug 31 16:23:59 2023
autoclean-cycle=10
◉ tony@tony:~/clnlive:
$ l1-cli listconfigs | jq
{
  "configs": {
    "lightning-dir": {
      "value_str": "/tmp/l1-regtest",
      "source": "cmdline"
    },
    "network": {
      "value_str": "regtest",
      "source": "cmdline"
    },
    "testnet": {
      "set": false,
      "source": "default"
    },
    "signet": {
      "set": false,
      "source": "default"
    },
    "mainnet": {
      "set": false,
      "source": "default"
    },
    "regtest": {
      "set": false,
      "source": "default"
    },
    "rpc-file": {
      "value_str": "lightning-rpc",
      "source": "default"
    },
    "allow-deprecated-apis": {
      "value_bool": false,
      "source": "/tmp/l1-regtest/config:5"
    },
    "plugin": {
      "values_str": [],
      "sources": []
    },
    "plugin-dir": {
      "values_str": [],
      "sources": []
    },
    "clear-plugins": {
      "set": false,
      "source": "default"
    },
    "disable-plugin": {
      "values_str": [],
      "sources": []
    },
    "important-plugin": {
      "values_str": [],
      "sources": []
    },
    "always-use-proxy": {
      "value_bool": false,
      "source": "default"
    },
    "daemon": {
      "set": false,
      "source": "default"
    },
    "large-channels": {
      "set": false,
      "source": "default"
    },
    "experimental-dual-fund": {
      "set": false,
      "source": "default"
    },
    "experimental-splicing": {
      "set": false,
      "source": "default"
    },
    "experimental-onion-messages": {
      "set": false,
      "source": "default"
    },
    "experimental-offers": {
      "set": false,
      "source": "default"
    },
    "experimental-shutdown-wrong-funding": {
      "set": false,
      "source": "default"
    },
    "experimental-peer-storage": {
      "set": false,
      "source": "default"
    },
    "experimental-quiesce": {
      "set": false,
      "source": "default"
    },
    "experimental-anchors": {
      "set": false,
      "source": "default"
    },
    "rgb": {
      "value_str": "02acf0",
      "source": "default"
    },
    "alias": {
      "value_str": "LATENTWATER",
      "source": "default"
    },
    "pid-file": {
      "value_str": "/tmp/l1-regtest/lightningd-regtest.pid",
      "source": "default"
    },
    "ignore-fee-limits": {
      "value_bool": true,
      "source": "default"
    },
    "watchtime-blocks": {
      "value_int": 6,
      "source": "default"
    },
    "max-locktime-blocks": {
      "value_int": 2016,
      "source": "default"
    },
    "funding-confirms": {
      "value_int": 1,
      "source": "default"
    },
    "require-confirmed-inputs": {
      "value_bool": false,
      "source": "default"
    },
    "cltv-delta": {
      "value_int": 6,
      "source": "default"
    },
    "cltv-final": {
      "value_int": 10,
      "source": "default"
    },
    "commit-time": {
      "value_int": 10,
      "source": "default"
    },
    "fee-base": {
      "value_int": 1,
      "source": "default"
    },
    "rescan": {
      "value_int": 30,
      "source": "default"
    },
    "fee-per-satoshi": {
      "value_int": 10,
      "source": "default"
    },
    "htlc-minimum-msat": {
      "value_msat": 0,
      "source": "default"
    },
    "htlc-maximum-msat": {
      "value_msat": 18446744073709552000,
      "source": "default"
    },
    "max-concurrent-htlcs": {
      "value_int": 483,
      "source": "default"
    },
    "max-dust-htlc-exposure-msat": {
      "value_msat": 50000000,
      "source": "default"
    },
    "min-capacity-sat": {
      "value_int": 20000,
      "source": "/tmp/l1-regtest/regtest/config:2",
      "dynamic": true
    },
    "addr": {
      "values_str": [
        "localhost:7171"
      ],
      "sources": [
        "/tmp/l1-regtest/config:4"
      ]
    },
    "bind-addr": {
      "values_str": [],
      "sources": []
    },
    "announce-addr": {
      "values_str": [],
      "sources": []
    },
    "announce-addr-discovered": {
      "value_str": "auto",
      "source": "default"
    },
    "announce-addr-discovered-port": {
      "value_int": 19846,
      "source": "default"
    },
    "offline": {
      "set": false,
      "source": "default"
    },
    "autolisten": {
      "value_bool": false,
      "source": "default"
    },
    "accept-htlc-tlv-type": {
      "values_int": [],
      "sources": []
    },
    "disable-dns": {
      "set": false,
      "source": "default"
    },
    "encrypted-hsm": {
      "set": false,
      "source": "default"
    },
    "rpc-file-mode": {
      "value_str": "0600",
      "source": "default"
    },
    "commit-fee": {
      "value_int": 100,
      "source": "default"
    },
    "min-emergency-msat": {
      "value_msat": 25000000,
      "source": "default"
    },
    "subdaemon": {
      "values_str": [],
      "sources": []
    },
    "experimental-upgrade-protocol": {
      "set": false,
      "source": "default"
    },
    "database-upgrade": {
      "value_bool": true,
      "source": "cmdline"
    },
    "log-level": {
      "value_str": "debug",
      "source": "/tmp/l1-regtest/config:2"
    },
    "log-timestamps": {
      "value_bool": true,
      "source": "default"
    },
    "log-file": {
      "values_str": [
        "/tmp/l1-regtest/log"
      ],
      "sources": [
        "/tmp/l1-regtest/config:3"
      ]
    },
    "renepay-debug-mcf": {
      "set": false,
      "source": "default",
      "plugin": "/usr/local/libexec/c-lightning/plugins/cln-renepay"
    },
    "renepay-debug-payflow": {
      "set": false,
      "source": "default",
      "plugin": "/usr/local/libexec/c-lightning/plugins/cln-renepay"
    },
    "bitcoin-datadir": {
      "value_str": "/home/tony/.bitcoin",
      "source": "cmdline",
      "plugin": "/usr/local/libexec/c-lightning/plugins/bcli"
    },
    "disable-mpp": {
      "set": false,
      "source": "default",
      "plugin": "/usr/local/libexec/c-lightning/plugins/pay"
    },
    "autoclean-cycle": {
      "value_int": 10,
      "source": "/tmp/l1-regtest/regtest/config:4",
      "plugin": "/usr/local/libexec/c-lightning/plugins/autoclean",
      "dynamic": true
    }
  }
}
◉ tony@tony:~/clnlive:
$ l1-cli listconfigs | jq '.configs | map(select(.. | .dynamic?))'
[
  {
    "value_int": 20000,
    "source": "/tmp/l1-regtest/regtest/config:2",
    "dynamic": true
  },
  {
    "value_int": 10,
    "source": "/tmp/l1-regtest/regtest/config:4",
    "plugin": "/usr/local/libexec/c-lightning/plugins/autoclean",
    "dynamic": true
  }
]
◉ tony@tony:~/clnlive:
$ l1-cli setconfig  min-capacity-sat 30000
{
   "config": {
      "config": "min-capacity-sat",
      "value_int": 30000,
      "source": "/tmp/l1-regtest/regtest/config:2",
      "dynamic": true
   }
}
◉ tony@tony:~/clnlive:
$ l1-cli listconfigs | jq '.configs | map(select(.. | .dynamic?))'
[
  {
    "value_int": 30000,
    "source": "/tmp/l1-regtest/regtest/config:2",
    "dynamic": true
  },
  {
    "value_int": 10,
    "source": "/tmp/l1-regtest/regtest/config:4",
    "plugin": "/usr/local/libexec/c-lightning/plugins/autoclean",
    "dynamic": true
  }
]
◉ tony@tony:~/clnlive:
$ cd lightning/
◉ tony@tony:~/clnlive/lightning:[git»(HEAD detached at v23.08)]
$ ./configure --help
Usage: ./configure [--reconfigure] [setting=value] [options]
If --reconfigure is specified, config.vars will set defaults.
Default settings:
CSANFLAGS =
  CC (default cc)
  CWARNFLAGS (default -Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wold-style-definition -Werror -Wno-maybe-uninitialized -Wshadow=local)
  COPTFLAGS (default -Og)
  CDEBUGFLAGS (default -std=gnu11 -g -fstack-protector-strong)
  CONFIGURATOR_CC (default cc)
    To override compile line for configurator itself
  PYTEST (default python3 -m pytest)
  VALGRIND (default 1)
Options include:
  --prefix= (default /usr/local)
    Prefix for make install
  --enable/disable-developer (default disable)
    Developer mode, good for testing
  --enable/disable-debug (default disable)
    Extra debug checks in the build, good for testing
  --enable/disable-compat (default enable)
    Compatibility mode, good to disable to see if your software breaks
  --enable/disable-valgrind (default (autodetect))
    Run tests with Valgrind
  --enable/disable-static (default disable)
    Static link sqlite3 and zlib libraries
  --enable/disable-coverage (default disable)
    Compile with Clang coverage instrumentation
  --enable/disable-address-sanitizer (default disable)
    Compile with address-sanitizer
  --enable/disable-ub-sanitizer (default disable)
    Compile with undefined behaviour sanitizer
  --enable/disable-fuzzing (default disable)
    Compile with fuzzing
  --enable/disable-rust (default enable)
    Compile with Rust support
◉ tony@tony:~/clnlive/lightning:[git»(HEAD detached at v23.08)]
$ ./configure
...
◉ tony@tony:~/clnlive/lightning:[git»(HEAD detached at v23.08)]
$ cd ..
◉ tony@tony:~/clnlive:
$ fund_nodes
Mining into address bcrt1qx0kcnjvdmw6ehw0vm90pln5k7mwacg0tz0grg3... done.
bitcoind balance: 50.00000000
Waiting for lightning node funds... found.
Funding channel from node 1 to node 2. Waiting for confirmation... done.
◉ tony@tony:~/clnlive:
$ l1-cli listconfigs experimental-splicing | jq
{
  "configs": {
    "experimental-splicing": {
      "set": false,
      "source": "default"
    }
  }
}
◉ tony@tony:~/clnlive:
$ l1-cli listpeers
{
   "peers": [
      {
         "id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "num_channels": 1,
         "netaddr": [
            "127.0.0.1:7272"
         ],
         "features": "08a0000a0269a2"
      }
   ]
}
◉ tony@tony:~/clnlive:
$ l1-cli listfunds
{
   "outputs": [
      {
         "txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "output": 1,
         "amount_msat": 98999834000,
         "scriptpubkey": "51207879d6347cd943f6bc54c21d820f61e5a4e12a557923f8c53629fc38bf4f2332",
         "address": "bcrt1p0puavdrum9pld0z5cgwcyrmpukjwz2j40y3l33fk987r3060yveqdj4cyk",
         "status": "confirmed",
         "blockheight": 103,
         "reserved": false
      }
   ],
   "channels": [
      {
         "peer_id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "state": "CHANNELD_NORMAL",
         "channel_id": "2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20",
         "short_channel_id": "103x1x0",
         "our_amount_msat": 1000000000,
         "amount_msat": 1000000000,
         "funding_txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "funding_output": 0
      }
   ]
}
◉ tony@tony:~/clnlive:
$ alias l1-cli
alias l1-cli='lightning-cli --lightning-dir=/tmp/l1-regtest'
◉ tony@tony:~/clnlive:
$ l1-cli stop
"Shutdown complete"
◉ tony@tony:~/clnlive:
$ lightningd --lightning-dir=/tmp/l1-regtest --experimental-splicing --daemon
◉ tony@tony:~/clnlive:
$ l1-cli getinfo
{
   "id": "02acf0a36ce2e27d13489a202bafc7065494b39650fbac2060ec9b0f6bd2c749c6",
   "alias": "LATENTWATER",
   "color": "02acf0",
   "num_peers": 1,
   "num_pending_channels": 0,
   "num_active_channels": 1,
   "num_inactive_channels": 0,
   "address": [],
   "binding": [
      {
         "type": "ipv4",
         "address": "127.0.0.1",
         "port": 7171
      }
   ],
   "version": "v23.08",
   "blockheight": 108,
   "network": "regtest",
   "fees_collected_msat": 0,
   "lightning-dir": "/tmp/l1-regtest/regtest",
   "our_features": {
      "init": "080000000000000000000000000008a0080a0269a2",
      "node": "080000000000000000000000000088a0080a0269a2",
      "channel": "",
      "invoice": "02000002024100"
   }
}
◉ tony@tony:~/clnlive:
$ l1-cli listconfigs experimental-splicing | jq
{
  "configs": {
    "experimental-splicing": {
      "set": true,
      "source": "cmdline"
    }
  }
}
◉ tony@tony:~/clnlive:
$ l2-cli stop
"Shutdown complete"
◉ tony@tony:~/clnlive:
$ lightningd --lightning-dir=/tmp/l2-regtest --daemon
◉ tony@tony:~/clnlive:
$ l2-cli listconfigs experimental-splicing | jq
{
  "configs": {
    "experimental-splicing": {
      "set": true,
      "source": "/tmp/l2-regtest/config:6"
    }
  }
}
◉ tony@tony:~/clnlive:
$ l1-cli listpeers
{
   "peers": [
      {
         "id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "num_channels": 1,
         "netaddr": [
            "127.0.0.1:7272"
         ],
         "features": "080000000000000000000000000008a0080a0269a2"
      }
   ]
}
◉ tony@tony:~/clnlive:
$ l1-cli listpeers
{
   "peers": [
      {
         "id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "num_channels": 1,
         "netaddr": [
            "127.0.0.1:7272"
         ],
         "features": "080000000000000000000000000008a0080a0269a2"
      }
   ]
}
◉ tony@tony:~/clnlive:
$ l1-cli listfunds
{
   "outputs": [
      {
         "txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "output": 1,
         "amount_msat": 98999834000,
         "scriptpubkey": "51207879d6347cd943f6bc54c21d820f61e5a4e12a557923f8c53629fc38bf4f2332",
         "address": "bcrt1p0puavdrum9pld0z5cgwcyrmpukjwz2j40y3l33fk987r3060yveqdj4cyk",
         "status": "confirmed",
         "blockheight": 103,
         "reserved": false
      }
   ],
   "channels": [
      {
         "peer_id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "state": "CHANNELD_NORMAL",
         "channel_id": "2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20",
         "short_channel_id": "103x1x0",
         "our_amount_msat": 1000000000,
         "amount_msat": 1000000000,
         "funding_txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "funding_output": 0
      }
   ]
}
◉ tony@tony:~/clnlive:
$ l1-cli -k fundpsbt satoshi=110000sat feerate=slow startweight=166 excess_as_change=true
{
   "psbt": "cHNidP8BAF4CAAAAASNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQAAAAD9////AdDv5AUAAAAAIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejlsAAAAAAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIAAA==",
   "feerate_per_kw": 253,
   "estimated_final_weight": 609,
   "excess_msat": 0,
   "change_outnum": 0,
   "reservations": [
      {
         "txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "vout": 1,
         "was_reserved": false,
         "reserved": true,
         "reserved_to_block": 180
      }
   ]
}
◉ tony@tony:~/clnlive:
$ l1-cli -k splice_init channel_id=2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20 \relative_amount=100000 \initialpsbt=cHNidP8BAF4CAAAAASNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQAAAAD9////AdDv5AUAAAAAIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejlsAAAAAAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIAAA==
{
   "psbt": "cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEFR1IhAuEaqjleV/QHeAYbOYXFjlYyMjI0jkjC4ZSGdWFwsRkMIQPuF0K/Nyv334JI8U9sLDOz65B5Yj6CBWN1R/KhZiKUmVKuAQ4gI2TldBWGxmvvt0B8jUUsTf1ut27uzAVOeoh6m3yZXiABDwQAAAAAARAEAAAAAAz8CWxpZ2h0bmluZwEINPAjtW3bj34AAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAQAAAAEQBP3///8M/AlsaWdodG5pbmcBCNha7AErWMyuAAEDCNDv5AUAAAAAAQQiUSB2OWr5lX//6pXQGVhle21zOyYLVUxeXkKNnK0g4+d6OQz8CWxpZ2h0bmluZwEI40TubF/EhR4AAQMIAAAAAAAAAAABBCIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhDPwJbGlnaHRuaW5nAQjrDjTtqP057AA="
}
◉ tony@tony:~/clnlive:
$ l1-cli -k splice_update channel_id=2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20 \psbt=cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEFR1IhAuEaqjleV/QHeAYbOYXFjlYyMjI0jkjC4ZSGdWFwsRkMIQPuF0K/Nyv334JI8U9sLDOz65B5Yj6CBWN1R/KhZiKUmVKuAQ4gI2TldBWGxmvvt0B8jUUsTf1ut27uzAVOeoh6m3yZXiABDwQAAAAAARAEAAAAAAz8CWxpZ2h0bmluZwEINPAjtW3bj34AAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAQAAAAEQBP3///8M/AlsaWdodG5pbmcBCNha7AErWMyuAAEDCNDv5AUAAAAAAQQiUSB2OWr5lX//6pXQGVhle21zOyYLVUxeXkKNnK0g4+d6OQz8CWxpZ2h0bmluZwEI40TubF/EhR4AAQMIAAAAAAAAAAABBCIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhDPwJbGlnaHRuaW5nAQjrDjTtqP057AA=
{
   "psbt": "cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAAAAAAEQBAAAAAAM/AlsaWdodG5pbmcBCDTwI7Vt249+AAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIBDiAjZOV0FYbGa++3QHyNRSxN/W63bu7MBU56iHqbfJleIAEPBAEAAAABEAT9////DPwJbGlnaHRuaW5nAQjYWuwBK1jMrgABAwjQ7+QFAAAAAAEEIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejkM/AlsaWdodG5pbmcBCONE7mxfxIUeAAEDCODIEAAAAAAAAQQiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQz8CWxpZ2h0bmluZwEI6w407aj9OewA",
   "commitments_secured": true
}
◉ tony@tony:~/clnlive:
$ l1-cli -k signpsbt psbt=cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAAAAAAEQBAAAAAAM/AlsaWdodG5pbmcBCDTwI7Vt249+AAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIBDiAjZOV0FYbGa++3QHyNRSxN/W63bu7MBU56iHqbfJleIAEPBAEAAAABEAT9////DPwJbGlnaHRuaW5nAQjYWuwBK1jMrgABAwjQ7+QFAAAAAAEEIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejkM/AlsaWdodG5pbmcBCONE7mxfxIUeAAEDCODIEAAAAAAAAQQiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQz8CWxpZ2h0bmluZwEI6w407aj9OewA
{
   "signed_psbt": "cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAAAAAAEQBAAAAAAM/AlsaWdodG5pbmcBCDTwI7Vt249+AAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIBDiAjZOV0FYbGa++3QHyNRSxN/W63bu7MBU56iHqbfJleIAEPBAEAAAABEAT9////ARNAn1ief1Bc2LsrPQTcSdg7A4zbvw1Qht1ujTxnFQ4FK6Zg/vqEk6w4hEV04Pw5TKwjcyTs4Py0tRSnpTb+c4L2RyEWSM4xYkzRqLmfsVqnRrODxgXc/lzgKrbsicGdcjurlOYJAEepcUUAAAAADPwJbGlnaHRuaW5nAQjYWuwBK1jMrgABAwjQ7+QFAAAAAAEEIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejkhB8V1yT0zJd1z6oZgSQuMvSicMlABXx/NnR40UgvEyK2ZCQB2TDivBAAAAAz8CWxpZ2h0bmluZwEI40TubF/EhR4AAQMI4MgQAAAAAAABBCIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhDPwJbGlnaHRuaW5nAQjrDjTtqP057AA="
}
◉ tony@tony:~/clnlive:
$ l1-cli -k splice_signed channel_id=2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20 \psbt=cHNidP8BAgQCAAAAAQMEbAAAAAEEAQIBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABATuLitvtahYA/VcNzbfl4i4qPQ6ewqMT9ZzKdUvhIi1SAAAAAAD9////AkBCDwAAAAAAIgAgnan7lTQK8D0D91f6bxQPtgvbCF5J3hIPGgEknA/RgqEanuYFAAAAACJRIHh51jR82UP2vFTCHYIPYeWk4SpVeSP4xTYp/Di/TyMyAkcwRAIgOAwO3dLPsxQwJZuQHWsvCW7xnCJFeDKzmpbbm9CaDP8CIFmNKnbi+9F1beSgD9ZmM/uxSc4+R0p+X+xWqpsPDtLLASEDVYGhmPfMHSUv351Zlrl+4k9YnCoa/3SGR6cwyu6MtkdmAAAAAQErQEIPAAAAAAAiACCdqfuVNArwPQP3V/pvFA+2C9sIXkneEg8aASScD9GCoQEOICNk5XQVhsZr77dAfI1FLE39brdu7swFTnqIept8mV4gAQ8EAAAAAAEQBAAAAAAM/AlsaWdodG5pbmcBCDTwI7Vt249+AAEA9gIAAAAAAQE7i4rb7WoWAP1XDc235eIuKj0OnsKjE/WcynVL4SItUgAAAAAA/f///wJAQg8AAAAAACIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhGp7mBQAAAAAiUSB4edY0fNlD9rxUwh2CD2HlpOEqVXkj+MU2Kfw4v08jMgJHMEQCIDgMDt3Sz7MUMCWbkB1rLwlu8ZwiRXgys5qW25vQmgz/AiBZjSp24vvRdW3koA/WZjP7sUnOPkdKfl/sVqqbDw7SywEhA1WBoZj3zB0lL9+dWZa5fuJPWJwqGv90hkenMMrujLZHZgAAAAEBKxqe5gUAAAAAIlEgeHnWNHzZQ/a8VMIdgg9h5aThKlV5I/jFNin8OL9PIzIBDiAjZOV0FYbGa++3QHyNRSxN/W63bu7MBU56iHqbfJleIAEPBAEAAAABEAT9////ARNAn1ief1Bc2LsrPQTcSdg7A4zbvw1Qht1ujTxnFQ4FK6Zg/vqEk6w4hEV04Pw5TKwjcyTs4Py0tRSnpTb+c4L2RyEWSM4xYkzRqLmfsVqnRrODxgXc/lzgKrbsicGdcjurlOYJAEepcUUAAAAADPwJbGlnaHRuaW5nAQjYWuwBK1jMrgABAwjQ7+QFAAAAAAEEIlEgdjlq+ZV//+qV0BlYZXttczsmC1VMXl5CjZytIOPnejkhB8V1yT0zJd1z6oZgSQuMvSicMlABXx/NnR40UgvEyK2ZCQB2TDivBAAAAAz8CWxpZ2h0bmluZwEI40TubF/EhR4AAQMI4MgQAAAAAAABBCIAIJ2p+5U0CvA9A/dX+m8UD7YL2wheSd4SDxoBJJwP0YKhDPwJbGlnaHRuaW5nAQjrDjTtqP057AA=
{
   "tx": "020000000001022364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e200000000000000000002364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e200100000000fdffffff02d0efe4050000000022512076396af9957fffea95d01958657b6d733b260b554c5e5e428d9cad20e3e77a39e0c81000000000002200209da9fb95340af03d03f757fa6f140fb60bdb085e49de120f1a01249c0fd182a104004730440220337b56db83160c533bdd5b01242b29da84ea696d0b7dd7b6102b1def3b19cc5b02206c5776636228c7e04cda1978b4b71ef284bddd17bd6945402d01dcccc654bc7b01473044022051e1b63ffea311220364fc5114cdf75f021d49bd8029a621633a44fe882c99ab022034823947f72faa85b4f3b6b5b0240295e44fb6246b7e9eddaa84f12e8b36b2870147522102e11aaa395e57f40778061b3985c58e56323232348e48c2e19486756170b1190c2103ee1742bf372bf7df8248f14f6c2c33b3eb9079623e8205637547f2a16622949952ae01409f589e7f505cd8bb2b3d04dc49d83b038cdbbf0d5086dd6e8d3c67150e052ba660fefa8493ac38844574e0fc394cac237324ece0fcb4b514a7a536fe7382f6476c000000",
   "txid": "a02600e06daee79e8fc8c4cb4f9ceea56eb24701bddc2833c225773ff4e32b29"
}
◉ tony@tony:~/clnlive:
$ alias bt-cli
alias bt-cli='bitcoin-cli -datadir=$PATH_TO_BITCOIN -regtest'
◉ tony@tony:~/clnlive:
$ bt-cli getrawmempool
[
  "a02600e06daee79e8fc8c4cb4f9ceea56eb24701bddc2833c225773ff4e32b29"
]
◉ tony@tony:~/clnlive:
$ bt-cli -rpcwallet=default getnewaddress
bcrt1qnk2vd6xz48my456tt009q6j4yuxx9hz8akhy7a
◉ tony@tony:~/clnlive:
$ bt-cli generatetoaddress 6 bcrt1qnk2vd6xz48my456tt009q6j4yuxx9hz8akhy7a
[
  "2be57cd5b3a071f0e8274da6248c59da7128b6f3161a8d43fea682638f8f2509",
  "326f91e5918abbdbcd397055584575604f922d0ec609e9de5547dae4d44ef7d7",
  "303bcea6fc15c2d59cf07fe258f04a640e0f1f65b3fc1e274730ff8f5418e797",
  "7f5bd209094c494c88a97174c230f779c6d814c4f3867f89f5a631c555f719d0",
  "3fe52d447e2c411dc32d6076d643d0707d329139d67337869ed552e8fed200ee",
  "6da9764ecef5f8576180b162bb22afbbe04d744a6e9a1cdba480bb7925b2dd7b"
]
◉ tony@tony:~/clnlive:
$ l1-cli listfunds
{
   "outputs": [
      {
         "txid": "a02600e06daee79e8fc8c4cb4f9ceea56eb24701bddc2833c225773ff4e32b29",
         "output": 0,
         "amount_msat": 98889680000,
         "scriptpubkey": "512076396af9957fffea95d01958657b6d733b260b554c5e5e428d9cad20e3e77a39",
         "address": "bcrt1pwcuk47v40ll749wsr9vx27mdwvajvz64f309us5dnjkjpcl80gusm0x226",
         "status": "unconfirmed",
         "reserved": false
      },
      {
         "txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "output": 1,
         "amount_msat": 98999834000,
         "scriptpubkey": "51207879d6347cd943f6bc54c21d820f61e5a4e12a557923f8c53629fc38bf4f2332",
         "address": "bcrt1p0puavdrum9pld0z5cgwcyrmpukjwz2j40y3l33fk987r3060yveqdj4cyk",
         "status": "confirmed",
         "blockheight": 103,
         "reserved": true,
         "reserved_to_block": 180
      }
   ],
   "channels": [
      {
         "peer_id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "state": "CHANNELD_AWAITING_SPLICE",
         "channel_id": "2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20",
         "short_channel_id": "103x1x0",
         "our_amount_msat": 1000000000,
         "amount_msat": 1000000000,
         "funding_txid": "205e997c9b7a887a4e05ccee6eb76efd4d2c458d7c40b7ef6bc6861574e56423",
         "funding_output": 0
      }
   ]
}
◉ tony@tony:~/clnlive:
$ l1-cli listfunds
{
   "outputs": [
      {
         "txid": "a02600e06daee79e8fc8c4cb4f9ceea56eb24701bddc2833c225773ff4e32b29",
         "output": 0,
         "amount_msat": 98889680000,
         "scriptpubkey": "512076396af9957fffea95d01958657b6d733b260b554c5e5e428d9cad20e3e77a39",
         "address": "bcrt1pwcuk47v40ll749wsr9vx27mdwvajvz64f309us5dnjkjpcl80gusm0x226",
         "status": "confirmed",
         "blockheight": 109,
         "reserved": false
      }
   ],
   "channels": [
      {
         "peer_id": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734",
         "connected": true,
         "state": "CHANNELD_NORMAL",
         "channel_id": "2364e5741586c66befb7407c8d452c4dfd6eb76eeecc054e7a887a9b7c995e20",
         "short_channel_id": "109x1x1",
         "our_amount_msat": 1100000000,
         "amount_msat": 1100000000,
         "funding_txid": "a02600e06daee79e8fc8c4cb4f9ceea56eb24701bddc2833c225773ff4e32b29",
         "funding_output": 1
      }
   ]
}
◉ tony@tony:~/clnlive:
$ l1-cli newaddr
{
   "bech32": "bcrt1q0esx06yg3t09u9n4wdl753tsz4v79f05czrqs2"
}
◉ tony@tony:~/clnlive:
$ l1-cli newaddr p2tr
{
   "p2tr": "bcrt1pkw5pysm32pyc64s8gahwvy2py86wwhj78kd4tl9y8thyjlwewlcqzwj2qx"
}
◉ tony@tony:~/clnlive:
$ l1-cli newaddr all
{
   "bech32": "bcrt1qsqk8j872je446lpkgtg9d3ke664qyd87t5yu0w",
   "p2tr": "bcrt1pau9p4jgu4jhfgqaa9pz6qzucuu4qc9jj88k9zt0dpyz5jhtyrv4qvc0ew5"
}
◉ tony@tony:~/clnlive:
$ ps -ax | rg lightn
 696891 ?        Ss     0:00 lightningd --lightning-dir=/tmp/l1-regtest --experimental-splicing --daemon
 696892 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/autoclean
 696893 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/chanbackup
 696894 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/bcli
 696895 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/commando
 696897 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/funder
 696898 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/topology
 696899 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/keysend
 696900 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/offers
 696901 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/pay
 696902 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/txprepare
 696903 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/cln-renepay
 696904 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/spenderp
 696905 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/sql
 696907 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/bookkeeper
 696918 pts/0    SL     0:00 /usr/local/libexec/c-lightning/lightning_hsmd
 696919 pts/0    S      0:00 /usr/local/libexec/c-lightning/lightning_connectd
 696929 pts/0    S      0:00 /usr/local/libexec/c-lightning/lightning_gossipd
 697158 ?        Ss     0:00 lightningd --lightning-dir=/tmp/l2-regtest --daemon
 697159 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/autoclean
 697160 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/chanbackup
 697161 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/bcli
 697162 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/commando
 697164 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/funder
 697165 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/topology
 697166 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/keysend
 697167 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/offers
 697168 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/pay
 697169 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/txprepare
 697170 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/cln-renepay
 697171 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/spenderp
 697172 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/sql
 697174 pts/0    S      0:00 /usr/local/libexec/c-lightning/plugins/bookkeeper
 697184 pts/0    SL     0:00 /usr/local/libexec/c-lightning/lightning_hsmd
 697185 pts/0    S      0:00 /usr/local/libexec/c-lightning/lightning_connectd
 697195 pts/0    S      0:00 /usr/local/libexec/c-lightning/lightning_gossipd
 697272 ?        S      0:00 /usr/local/libexec/c-lightning/lightning_channeld
 697273 ?        S      0:00 /usr/local/libexec/c-lightning/lightning_channeld
 698460 pts/0    S+     0:00 rg lightn
◉ tony@tony:~/clnlive:
$ l2-cli invoice 10000sat label pizza
{
   "payment_hash": "3a315c41cae8a32ad86d16914b8a3edd27baa2ad9b262c651f9bb05d8bfe40ad",
   "expires_at": 1694100167,
   "bolt11": "lnbcrt100u1pj0pvz8sp5ed2wdf08knan6wzkqnld93f35h2khlh3pnsryrqdxckg3rxt65tspp58gc4csw2az3j4krdz6g5hz37m5nm4g4dnvnzceglnwc9mzl7gzksdqgwp5h57npxqyjw5qcqp29qxpqysgq35e3htpwntwtnh7usnh5v0nypk9ju77932zn49rkma436t64ltj8dvetrh9ekmpm4fxs42ejzs6zlv4pz5tccq7vsme5s4ct07jesvqp0hav94",
   "payment_secret": "cb54e6a5e7b4fb3d385604fed2c531a5d56bfef10ce0320c0d362c888ccbd517",
   "created_index": 1,
   "warning_capacity": "Insufficient incoming channel capacity to pay invoice"
}
◉ tony@tony:~/clnlive:
$ l1-cli renepay lnbcrt100u1pj0pvz8sp5ed2wdf08knan6wzkqnld93f35h2khlh3pnsryrqdxckg3rxt65tspp58gc4csw2az3j4krdz6g5hz37m5nm4g4dnvnzceglnwc9mzl7gzksdqgwp5h57npxqyjw5qcqp29qxpqysgq35e3htpwntwtnh7usnh5v0nypk9ju77932zn49rkma436t64ltj8dvetrh9ekmpm4fxs42ejzs6zlv4pz5tccq7vsme5s4ct07jesvqp0hav94
# we have computed a set of 1 flows with probability 1.000, fees 0msat and delay 10
#   Flow 1: amount=10000000msat prob=1.000 fees=0msat delay=0 path=-109x1x1/1(min=max=1088360000msat)->
#   Flow 1: Success
{
   "payment_preimage": "cd3d5f225feaa7edbb920e2ec25b106ad0ba3ea014dc768c3f13d8a173d6fbd0",
   "payment_hash": "3a315c41cae8a32ad86d16914b8a3edd27baa2ad9b262c651f9bb05d8bfe40ad",
   "created_at": 1693495380.440,
   "parts": 1,
   "amount_msat": 10000000,
   "amount_sent_msat": 10000000,
   "status": "complete",
   "destination": "0205b3210eb490efd5debbed87df4b507f50dbbde9ab7980faf0367bbe8d27c734"
}
◉ tony@tony:~/clnlive:
$ l2-cli stop
"Shutdown complete"
◉ tony@tony:~/clnlive:
$ l1-cli invoice 20000sat label pizza
{
   "payment_hash": "97e344f53a5eadd650cd1fb2ac87a2c268f358e0fb70022194e896ea9dfe0f48",
   "expires_at": 1694100463,
   "bolt11": "lnbcrt200u1pj0pvt0sp5wszfgmzp5ccymdnc4getzdw0m7tryn82458hlq7gq4tqnnwr86kspp5jl35faf6t6kav5xdr7e2epazcf50xk8qldcqygv5aztw4807payqdqgwp5h57npxqyjw5qcqp29qxpqysgqey60xcj9gkt7s6vjy8fpptfw6dnefcq3n7qzrnrz9ycmza6hxsq4p4x3kqll3cuzhcl9z7v7c3e2pnypkv952ml93qc76jqdmr3h75spd4xxtw",
   "payment_secret": "7404946c41a6304db678aa32b135cfdf96324ceaad0f7f83c8055609cdc33ead",
   "created_index": 1,
   "warning_capacity": "Insufficient incoming channel capacity to pay invoice"
}
◉ tony@tony:~/clnlive:
$ l1-cli pay lnbcrt200u1pj0pvt0sp5wszfgmzp5ccymdnc4getzdw0m7tryn82458hlq7gq4tqnnwr86kspp5jl35faf6t6kav5xdr7e2epazcf50xk8qldcqygv5aztw4807payqdqgwp5h57npxqyjw5qcqp29qxpqysgqey60xcj9gkt7s6vjy8fpptfw6dnefcq3n7qzrnrz9ycmza6hxsq4p4x3kqll3cuzhcl9z7v7c3e2pnypkv952ml93qc76jqdmr3h75spd4xxtw
{
   "destination": "02acf0a36ce2e27d13489a202bafc7065494b39650fbac2060ec9b0f6bd2c749c6",
   "payment_hash": "97e344f53a5eadd650cd1fb2ac87a2c268f358e0fb70022194e896ea9dfe0f48",
   "created_at": 1693495677.905,
   "parts": 1,
   "amount_msat": 20000000,
   "amount_sent_msat": 20000000,
   "payment_preimage": "5cc445be2a358359421267bcd65be03d45fe48e37508a0d83dbbfe80e96980fc",
   "status": "complete"
}
◉ tony@tony:~/clnlive:
$ l1-cli listinvoices
{
   "invoices": [
      {
         "label": "label",
         "bolt11": "lnbcrt200u1pj0pvt0sp5wszfgmzp5ccymdnc4getzdw0m7tryn82458hlq7gq4tqnnwr86kspp5jl35faf6t6kav5xdr7e2epazcf50xk8qldcqygv5aztw4807payqdqgwp5h57npxqyjw5qcqp29qxpqysgqey60xcj9gkt7s6vjy8fpptfw6dnefcq3n7qzrnrz9ycmza6hxsq4p4x3kqll3cuzhcl9z7v7c3e2pnypkv952ml93qc76jqdmr3h75spd4xxtw",
         "payment_hash": "97e344f53a5eadd650cd1fb2ac87a2c268f358e0fb70022194e896ea9dfe0f48",
         "amount_msat": 20000000,
         "status": "paid",
         "pay_index": 1,
         "amount_received_msat": 20000000,
         "paid_at": 1693495677,
         "payment_preimage": "5cc445be2a358359421267bcd65be03d45fe48e37508a0d83dbbfe80e96980fc",
         "description": "pizza",
         "expires_at": 1694100463,
         "created_index": 1,
         "updated_index": 1
      }
   ]
}

Resources