Core Lightning v24.05: "The Infinitely Divisible Satoshi"
Lightning Network

Core Lightning v24.05: "The Infinitely Divisible Satoshi"

Alex Myers

We are pleased to announce the v24.05 release of Core Lightning, codenamed "The Infinitely Divisible Satoshi" - named by CLN contributor daywalker90.

The Core Lightning v24.05 release focuses on stability and quality-of-life improvements. Pain points around the pay command and recent gossip update were addressed, and notable new interfaces were added as well.

New Interfaces

Core Lightning has supported gRPC through the cln-grpc plugin since release 0.11 two years ago. The RPC methods exposed through this plugin have previously been high-level commands commonly needed by the end user. This release finally backfills 49 gRPC methods, thanks in large part to the work of daywalker90! These range from high-level commands such as listconfigs to low-level RPCs for opening and funding channels. Plugin RPCs were also backfilled: bookkeeper, renepay, recover, and autoclean all now have functionality exposed through gRPC!

Speaking of RPCs, this release features a massive documentation overhaul. All schemas for existing RPCs have been reviewed and revamped, and new schemas have been added where missing. The request and response schemas have been merged into one, which also now includes all the information necessary to generate a readme file for the RPC. All the RPC-specific help content is autogenerated from the schema, even including example requests and responses for nearly every RPC command!

All these schemas are also fully validated, covering any lingering corner cases around msat_or_all types.

Other new ways to interact with your Core Lightning node include new rune restrictions, which can be applied to invoices, and a secure WebSocket proxy.

The new rune restrictions empower users to introspect a BOLT11 or BOLT12 invoice and limit it by node, description, or amount. This is achieved with the pinvX_N restriction, where x is the invoice type, and N is the field name (i.e., pinvbolt11_node=<node_id>). Such a restriction allows the creation of a rune which can be restricted to a specific recurring payment only, giving you more control over your transactions.

Another user-requested feature is a secure WebSocket. This plugin will allow a page served over HTTPS to communicate directly with an end node via a WebSocket. (All Lightning traffic is natively encrypted anyway, but do not tell your web browser that!)

Performance Improvements

A couple of pain points in the pay command have been addressed. One was the need to sync to the latest block before pay could accurately construct a route. This has been rectified, along with a more accurate evaluation of local channel capacity. These changes mean the pay command should be usable as soon as a node comes back online and is less likely to fail on a local channel.

Other performance improvements include less verbose logging in several instances and faster block processing while synchronizing with the blockchain. Benchmarks noticed an ~11% speedup of block processing by optimizing memory allocations!

Stability Improvements

User-reported crashes around the gossip store and anchor spends have been patched to prevent crashes. The renepay plugin has been refactored.

Pruned node operation was previously problematic when asking bitcoind to fetch old blocks via the bcli plugin. This release features a much more robust process for procuring historical blocks, filtering and cycling through Bitcoin peers, and retrying as needed to ensure the block is fetched before providing the result back to lightningd.

The hsmd is safer to access in the new HSM_VERSION 6, with the get_per_commitment_point call no longer revoking the previous index - 2.  Furthermore, the check command has been extended to the hsmd with a keysend command to see if it would approve the payment.

Finally, for those large node operators bumping up against file descriptor limits (i.e., >900 channels), the file descriptor limit is now automatically increased, and sensible warning messages are generated should constraints on the system file descriptor limit continue to impose upon lightningd.

Join the CLN Community

It's your active involvement that keeps us going. We want to give a special shout-out to the three first-time contributors (Se7eNz, snoppy, bstin) and thank all 21 contributors to v24.05, which has had 380 commits since the last release.

Visit the release page to stay informed about the newest version of CLN. If you want to delve into the specifics, check out the changelog. We appreciate your feedback, so please let us know what you like or how we can improve by commenting in the latest release thread on BOL2 or in our Telegram and Discord channels.

If you have specific preferences, please, mark the topic(s) you would like to read: