The Latest c-lightning: 0.7.3
Bring Your Own Database, Liquid Sidechain Support, Gossip Optimizations, and More!
By Lisa Neigut
The c-lightning team is proud to announce the release of version 0.7.3. This is the second of our “every two months” timed releases; the next is slated for December.
This issue is packed with some great new features:
- Options for database backends: prior to 0.7.3, c-lightning came with a single option for a database engine — sqlite3. With an eye towards improving c-lightning’s persistence and backup toolset, core dev Christian Decker contributed an SQL re-writing engine and a Postgres driver, officially making c-lightning ‘BYODB’ (bring your own database).
- Liquid Bitcoin support: c-lightning now has nominal support for Liquid Bitcoin (L-BTC) transactions. Note that Liquid’s Issued Assets are not supported at this time.
- Gossip improvements: Gossip queries were introduced as experimental in 0.7.2 and have now been promoted to be the standard method for asking peers for gossip (provided that they support it). Additionally, we’ve much improved (i.e. reduced) the number of peers and quantity of gossip that we solicit from those peers. This should positively impact c-lightning’s bandwidth usage, at the cost of slightly slower gossip propagation.
- New RPC methods: c-lightning now supports signing (
signmessage) and verifying (
checkmessage) the sender of encrypted messages, using a node’s public key. This matches similar functionality provided by LND.
- Coin control: low-level APIs have been added so plugins can do more intelligent coin control, including coins not in the c-lightning wallet (e.g. hardware wallet support).
Towards More Robust Data Storage
c-lightning now supports options for database backends. Originally built with a
sqlite3 data store, we’re now shipping c-lightning with an option to use a Postgres driver instead.
How to use it
This version of c-lightning is shipping with a Postgres driver. To take advantage of it, set the new lightningd configuration option
wallet to the fully qualified datasource name, e.g.
Note that the
configure command now verifies that you have the proper Postgres libraries installed on your machine.
Why offer options
sqlite3 is a robust, small footprint database that works great for small scale data storage, particularly on low-memory devices. However, the backup and replication ecosystem for supporting
sqlite3 data are not as robust as the tooling available for other data storage backends, such as Postgres. By opening up the options for backends that c-lightning works with natively, we hope to give users and node operators more flexibility and capabilities for securing their node’s data.
Wallet Hardening and External Support
0.7.3 also includes a much requested feature, from contributor @darosior: the option to encrypt the BIP32
hsm_secret on disk. Once the
hsm_secret has been encrypted, you’ll need to provide the passphrase at startup in order to unlock the wallet. Our next release will have more tools for hsm encryption and decryption, so watch this space.
In addition to seed encryption, 0.7.3 includes a few tweaks to existing RPC calls to further support external wallet integration. We’ve added the ability to close to a specified address using the
close RPC call. You can also now take advantage of a channel’s
upfront_shutdown_script capability (if supported by your node peer) by passing a
close_to address to
fundchannel_start. For mutual channel closures, the channel funds will be paid to this address.
Unilateral channel closures, however, will still see the funds returned to the c-lightning wallet, no matter if you’ve specified a shutdown script. This is due to a protocol level restriction on how unilateral outputs are calculated.