Search

Core Lightning v24.08 Released with Significant Plugin Updates and Performance Improvements

After three months of development and 378 commits, Core Lightning has rolled out its latest version, v24.08. This new release brings notable advancements across multiple areas, particularly focusing on enhancing the functionality of offers, payments, and the experimental renepay plugin.

The update also includes improvements to documentation, optimization of I/O operations, and refinements to various Core Lightning components such as gossipd and reckless.

Core Lightning (CLN) is a lightweight, modular implementation of the Bitcoin Lightning Network, designed to enable fast, low-cost Bitcoin transactions by using a network of payment channels. Developed by Blockstream, Core Lightning focuses on offering flexibility, scalability, and efficiency, making it a popular choice for developers and operators of Lightning nodes.

Key Plugin Enhancements

BOLT12 Offers and Pay Plugin Improvements

One of the major highlights of this release is the update to the BOLT12 offers. This update now allows support for self-payments and adds blinded paths, which improves user privacy by hiding transaction routes. Additionally, the pay plugin has received several important upgrades, including capacity checks, advanced error handling, and improved logging. These enhancements are designed to streamline payment operations, making them more efficient and transparent for users.

The pay plugin now also includes a “channel_hint_updated” notification feature, which keeps track of payment failures and shares inferred balances across payments. This allows the system to avoid unreliable channels for future transactions, increasing the success rate. Moreover, the plugin now performs pre-flight checks to verify whether channels have sufficient capacity before attempting payments. The handling of BOLT12 invoices has also been improved, especially in scenarios where the node is part of a blinded path.

Renepay Plugin Upgrades

The renepay plugin, first introduced in v23.08, has seen major upgrades in this release. Based on the optimal routing strategy developed by Rene Pickhardt and Stefan Richter, renepay enhances multi-part payment (MPP) routing by using a minimum cost flow computation, considering both fees and success probability when determining routes. This approach offers a more reliable payment experience than the default pay strategy, which focuses on minimizing fees and splitting payments when a single path fails.

In v24.08, renepay now includes a refined probability cost function that accounts for channels rejecting payments independent of liquidity or payment size. A new ‘exclude’ option has also been introduced, allowing users to filter out specific channels or nodes from route calculations. The update also extends the global time scale for network knowledge decay, reducing the risk of using depleted channels for payments and improving routing reliability.

Introducing the Askrene Plugin

A major addition in this release is the introduction of the askrene plugin, which builds on the renepay routing strategy. Askrene divides the functionality into two separate plugins—one for querying routes and the other for executing payments. This offers users greater control and precision in managing payments.

Askrene introduces eight new commands, such as askrene-age for aging out outdated constraints and askrene-create-channel for managing channel directions. Other commands, like askrene-disable-node and askrene-inform-channel, provide enhanced control over routing. Additionally, the new getroutes command improves route optimization by considering multiple intermediary layers, providing more robust pathfinding capabilities for complex payments.

Enhanced Privacy and Flexibility for Unannounced Nodes

The offers plugin now fully supports BOLT12 specifications and provides critical enhancements for unannounced nodes, which don’t publicly reveal their channels. This update allows these nodes to generate and manage offers more securely by automatically adding blinded paths from peers. This feature enables unannounced nodes to participate in the network while maintaining their privacy. When processing invoice requests, the plugin will automatically use blinded paths for unannounced nodes, further securing their involvement in the payment process.

Additionally, the fetchinvoice process has been updated to attempt all available blinded paths to ensure a valid route is found. This refinement helps manage multi-hop routing in complex scenarios, making Core Lightning’s payment routing more reliable and flexible.

Upgrades to the Reckless Plugin Manager

The reckless plugin manager has also received substantial improvements. A new reckless-rpc plugin has been introduced, allowing users to issue commands to reckless via remote procedure calls (RPC). This adds flexibility in how users manage plugins within Core Lightning. The reckless plugin now also supports the installation of Rust-based plugins, expanding the ecosystem of compatible tools.

Other updates to reckless include position-independent option flags and the ability to output data in JSON format, making it easier to interact with and automate plugin management tasks.

Performance Optimizations and Documentation Accuracy

Beyond plugin updates, Core Lightning v24.08 introduces several performance enhancements aimed at improving the overall efficiency. Notably, new I/O optimizations reduce CPU usage, particularly benefiting larger nodes by speeding up their operations. The update also ensures that Core Lightning requests all gossip data from the first connected peer, improving network knowledge right from the start.

Support for onion messages, which provide enhanced privacy and security, is now enabled by default in Core Lightning. This feature bolsters secure communication within the network.

Additionally, the development team has made significant improvements to documentation accuracy. All code snippets in the documentation are now automatically generated by executing the code, ensuring that the examples reflect current functionality. This ensures that developers and users alike have access to reliable, up-to-date information when working with Core Lightning.