Releases: ElementsProject/lightning
v26.06.1 Quantum-Resistant Lightning Channel II
What's Changed
This point release fixes the bwatch plugin failure at registration.
Fixed
- Plugins: bwatch failed to register on startup after make install ([#9192])
Check out the updated Changelog
Contributors
Thanks to the Lightning team and our community contributors for their work on this release.
A shutout to the core-Core Lightning team: @rustyrussell, @ShahanaFarooqui, @sangbida, @cdecker, @nepet, @Lagrang3, @daywalker90, @nGoline and @niftynei
v26.06 Quantum-Resistant Lightning Channel
This release has been named by @enaples
Highlights for Users
gracefulcommand to prepare CLN for shutdown... gracefully!- Added
sendamountcommand, to make a payment specifying the desired amount to send instead of the amount to be received. - We've started the cycle to deprecate
payand focus our efforts onxpay.xpaynow handlespaycommand by default (usexpay-handle-pay=falseto prevent this) and we now usexpaynotpayfor paying invoices made with invoicerequest(). xpaynow acceptslabelandlocalinvreqidparameters (likepay).xpaywill now update for the current payment if it gets achannel_updatein an error message.xkeysendcommand for keysend with modern routing support.invoice_creationnotification now includesoffer_idwhen the invoice is associated with a BOLT 12 offer.- Removed fields no longer present in documentation / GRPC interfaces.
- Experimental payment proof implementation updated to latest draft
- gossipd made more robust against channel_update spamming.
Highlights for Developers
- JSON-RPC:
createproofto create a payment proof for a (successful) BOLT12 payment. - JSON-RPC:
decodenow supports thelnppayer proof format. - Plugins:
bwatchplugin (enable usingplugin=bwatch)
Protocol Updates
message-paddingdefaults to false, due to poor detection of broken implementations.- We now wait 72 blocks, not 12, before closing channels (BOLT update)
See the changelog for full details
Since v26.04 we’ve had 236 commits in 42 days by 19 authors
A special mention to our three first time contributors:
An enormous thanks to the core-Core Lightning team:
@rustyrussell, @ShahanaFarooqui, @sangbida, @cdecker, @nepet, @Lagrang3, @daywalker90, @nGoline and @niftynei
v26.06rc2 Quantum-Resistant Lightning Channel
This release has been named by @enaples
Release Candidate 2 for cln v26.06
This RC builds upon RC1, with these changes:
- Removed fields no longer present in documentation / GRPC interfaces.
- Experimental payment proof implementation updated to latest draft
- gossipd made more robust against channel_update spamming.
See the changelog for full details
An enormous thanks to the core-Core Lightning team:
@rustyrussell, @ShahanaFarooqui, @sangbida, @cdecker, @nepet, @Lagrang3, @daywalker90, @nGoline and @niftynei
And of course, our invaluable open-source community!
v26.06 Release Candidate 1
Release Candidate 1 for Core Lightning v26.06
Highlights for Users
gracefulcommand to prepare CLN for shutdown... gracefully!- Added
sendamountcommand, to make a payment specifying the desired amount to send instead of the amount to be received. - We've started the cycle to deprecate
payand focus our efforts onxpay.xpaynow handlespaycommand by default (usexpay-handle-pay=falseto prevent this) and we now usexpaynotpayfor paying invoices made with invoicerequest(). xpaynow acceptslabelandlocalinvreqidparameters (likepay).xpaywill now update for the current payment if it gets achannel_updatein an error message.xkeysendcommand for keysend with modern routing support.invoice_creationnotification now includesoffer_idwhen the invoice is associated with a BOLT 12 offer.
Highlights for Developers
- JSON-RPC:
createproofto create a payment proof for a (successful) BOLT12 payment. - JSON-RPC:
decodenow supports thelnppayer proof format. - Plugins:
bwatchplugin (enable usingplugin=bwatch)
Protocol Updates
message-paddingdefaults to false, due to poor detection of broken implementations.- We now wait 72 blocks, not 12, before closing channels (BOLT update)
See the changelog for full details
Since v26.04 we’ve had 211 commits in 22 days by 17 authors.
A special mention to our three first time contributors:
An enormous thanks to the core-Core Lightning team:
@rustyrussell, @ShahanaFarooqui, @sangbida, @cdecker, @nepet, @Lagrang3, @daywalker90, @nGoline and @niftynei
v26.04.1 Negative Routing Fees II
What's Changed
This is a hotfix release addressing build and protocol correctness issues found shortly after v26.04.
Fixed
- Gossip: Malformed
channel_announcementmessages wherenode_id_1is not lexicographically less thannode_id_2are now rejected per BOLT spec (lightning/bolts#1333), preventing gossip store corruption and stress on readers. ([#9082]) - Build: Fixed
printfformat specifiers for splice weight logging (%zuforsize_t) acrosslightningd,channeld, and the spender plugin, resolving-Werror/-Wformatfailures in Docker and 32-bit ARM cross-compilation. ([#9083], [#9086]) - Build: Removed
__int128usage from bookkeeper currency rate math, restoring builds on 32-bit targets (armv7). ([#9085])
Contributors
Thanks to the Core Lightning team for their work on this release
An enormous thanks to the Core Lightning team:
@rustyrussell, @ShahanaFarooqui, @sangbida, @cdecker, @nepet, @Lagrang3, @daywalker90, @nGoline and @niftynei
v26.04 Negative Routing Fees
This release has been named by @Chand-ra
Highlights for Users
bkpr-reportintroduces a more flexible way to summarize Bookkeeper income, making it easier to break down earnings by category and period.- New command splicein allows for convenient splicing funds into a channel.
- New command spliceout for easily splicing out of channels.
- New ability to "cross-splice" between two channels by specifying a second channel id as the destination of spliceout.
- You can now add a note when paying (
payer-notein xpay). listpeerchannelscan filter bychannel_id, so you can zoom in on one channel without parsing the full list.- Improved payment reliability through parallel pathfinding and multiple bug fixes in askrene.
offernow includes afronting_nodes option, while the new payment-fronting-node config allows you to specify preferred peers that help route payers to your invoices and offers across both BOLT11 and BOLT12 flows.- Offer-related RPCs now expose decoded descriptions directly, making it easier to inspect, debug, and understand incoming and outgoing offers without manual decoding.
- gossipd offloads gossip_store compaction to a helper, improvin startup time especially for larger nodes while keeping the store around ~200MB.
- New currencyrate plugin exposes a currencyconvert RPC, enabling real-time conversion between Bitcoin and fiat currencies directly within Core Lightning.
- Most binaries are ~20% smaller .
- keysend now uses a final CLTV of 42 (instead of 22), improving compatibility with LDK nodes.
Highlights for Developers
- clnrest-register-path allows plugins to register custom HTTP endpoints at runtime, enabling dynamic REST APIs without restarting the node.
- bcli plugin is now synchronous: Simplifies the codebase and improves reliability of Bitcoin backend interactions by removing async complexity and queueing.
- Core Lightning builds are reproducible/deterministic on Fedora targets.
- Plugin options can now accumulate multiple values (
"multi": true). - STRICT tables and additional safety pragmas improve correctness and catch issues earlier during development.
- Lightningd now uses a more efficient ring buffer for logs, reducing overhead and simplifying log handling.
- Peer messages are now padded to a uniform length, mitigating traffic analysis and making it harder to infer node activity from message sizes.
Protocol Updates
- Splicing is now enabled by default!
- Legacy onion format support is removed (aligned with current interop, e.g. recent LND behavior).
- A splicing fix avoids an occasional hang when there is a pending closing HTLC during splice.
See the changelog for full details
Since v25.12 we’ve had 421 commits in 110 days by 23 authors
A special thanks to our three first time contributors:
@ScuttoZ
@Raimo33
@TatianaMoroz
@dovgopoly
@erdoganishe
@Nazarevsky
An enormous thanks to the Core Lightning team:
@rustyrussell, @ShahanaFarooqui, @sangbida, @endothermicdev, @cdecker, @nepet, @Lagrang3, @daywalker90 and @niftynei
v26.04 Negative Routing Fees Release Candidate 3
This release has been named by @Chand-ra
Release Candidate 3 for Core Lightning v26.04
Highlights for Users
bkpr-reportintroduces a more flexible way to summarize Bookkeeper income, making it easier to break down earnings by category and period.- New command splicein allows for convenient splicing funds into a channel.
- New command spliceout for easily splicing out of channels.
- New ability to "cross-splice" between two channels by specifying a second channel id as the destination of spliceout.
- You can now add a note when paying (
payer-notein xpay). listpeerchannelscan filter bychannel_id, so you can zoom in on one channel without parsing the full list.- Improved payment reliability through parallel pathfinding and multiple bug fixes in askrene.
offernow includes afronting_nodes option, while the new payment-fronting-node config allows you to specify preferred peers that help route payers to your invoices and offers across both BOLT11 and BOLT12 flows.- Offer-related RPCs now expose decoded descriptions directly, making it easier to inspect, debug, and understand incoming and outgoing offers without manual decoding.
- gossipd offloads gossip_store compaction to a helper, improvin startup time especially for larger nodes while keeping the store around ~200MB.
- New currencyrate plugin exposes a currencyconvert RPC, enabling real-time conversion between Bitcoin and fiat currencies directly within Core Lightning.
- Most binaries are ~20% smaller .
- keysend now uses a final CLTV of 42 (instead of 22), improving compatibility with LDK nodes.
Highlights for Developers
- clnrest-register-path allows plugins to register custom HTTP endpoints at runtime, enabling dynamic REST APIs without restarting the node.
- bcli plugin is now synchronous: Simplifies the codebase and improves reliability of Bitcoin backend interactions by removing async complexity and queueing.
- Core Lightning builds are reproducible/deterministic on Fedora targets.
- Plugin options can now accumulate multiple values (
"multi": true). - STRICT tables and additional safety pragmas improve correctness and catch issues earlier during development.
- Lightningd now uses a more efficient ring buffer for logs, reducing overhead and simplifying log handling.
- Peer messages are now padded to a uniform length, mitigating traffic analysis and making it harder to infer node activity from message sizes.
Protocol Updates
- Splicing is now enabled by default!
- Legacy onion format support is removed (aligned with current interop, e.g. recent LND behavior).
- A splicing fix avoids an occasional hang when there is a pending closing HTLC during splice.
See the changelog for full details
Since v25.12 we’ve had 421 commits in 110 days by 23 authors
A special thanks to our three first time contributors:
@ScuttoZ
@Raimo33
@TatianaMoroz
@dovgopoly
@erdoganishe
@Nazarevsky
An enormous thanks to the Core Lightning team:
@rustyrussell, @ShahanaFarooqui, @sangbida, @endothermicdev, @cdecker, @nepet, @Lagrang3, @daywalker90 and @niftynei
v26.04 Release Candidate 2
Release Candidate 2 for Core Lightning v26.04
Highlights for Users
- New command splicein allows for convenient splicing funds into a channel.
- New command spliceout for easily splicing out of channels.
- New ability to "cross-splice" between two channels by specifying a second channel id as the destination of spliceout.
- You can now add a note when paying (
payer-notein xpay). listpeerchannelscan filter bychannel_id, so you can zoom in on one channel without parsing the full list.- Improved payment reliability through parallel pathfinding and multiple bug fixes in askrene.
offernow includes afronting_nodes option, while the new payment-fronting-node config allows you to specify preferred peers that help route payers to your invoices and offers across both BOLT11 and BOLT12 flows.- Offer-related RPCs now expose decoded descriptions directly, making it easier to inspect, debug, and understand incoming and outgoing offers without manual decoding.
- gossipd offloads gossip_store compaction to a helper, improvin startup time especially for larger nodes while keeping the store around ~200MB.
- New currencyrate plugin exposes a currencyconvert RPC, enabling real-time conversion between Bitcoin and fiat currencies directly within Core Lightning.
- Most binaries are ~20% smaller .
Highlights for Developers
- clnrest-register-path allows plugins to register custom HTTP endpoints at runtime, enabling dynamic REST APIs without restarting the node.
- bcli plugin is now synchronous: Simplifies the codebase and improves reliability of Bitcoin backend interactions by removing async complexity and queueing.
- Core Lightning builds are reproducible/deterministic on Fedora targets.
- Plugin options can now accumulate multiple values (
"multi": true). - STRICT tables and additional safety pragmas improve correctness and catch issues earlier during development.
- Lightningd now uses a more efficient ring buffer for logs, reducing overhead and simplifying log handling.
- Peer messages are now padded to a uniform length, mitigating traffic analysis and making it harder to infer node activity from message sizes.
Protocol Updates
- Legacy onion format support is removed (aligned with current interop, e.g. recent LND behavior).
- A splicing fix avoids an occasional hang when there is a pending closing HTLC during splice.
See the changelog for full details
Since v25.12 we’ve had 421 commits in 110 days by 23 authors
A special thanks to our three first time contributors:
@ScuttoZ
@Raimo33
@TatianaMoroz
@dovgopoly
@erdoganishe
@Nazarevsky
An enormous thanks to the Core Lightning team:
@rustyrussell, @ShahanaFarooqui, @sangbida, @endothermicdev, @cdecker, @nepet, @Lagrang3, @daywalker90 and @niftynei
v26.04 Release Candidate 1
Release Candidate 1 for Core Lightning v26.04
Highlights for Users
- New command splicein allows for convenient splicing funds into a channel.
- New command spliceout for easily splicing out of channels.
- New ability to "cross-splice" between two channels by specifying a second channel id as the destination of spliceout.
- You can now add a note when paying (
payer-notein xpay). listpeerchannelscan filter bychannel_id, so you can zoom in on one channel without parsing the full list.- Improved payment reliability through parallel pathfinding and multiple bug fixes in askrene.
offernow includes afronting_nodes option, while the new payment-fronting-node config allows you to specify preferred peers that help route payers to your invoices and offers across both BOLT11 and BOLT12 flows.- Offer-related RPCs now expose decoded descriptions directly, making it easier to inspect, debug, and understand incoming and outgoing offers without manual decoding.
- gossipd offloads gossip_store compaction to a helper, improvin startup time especially for larger nodes while keeping the store around ~200MB.
- New currencyrate plugin exposes a currencyconvert RPC, enabling real-time conversion between Bitcoin and fiat currencies directly within Core Lightning.
- Most binaries are ~20% smaller .
Highlights for Developers
- clnrest-register-path allows plugins to register custom HTTP endpoints at runtime, enabling dynamic REST APIs without restarting the node.
- bcli plugin is now synchronous: Simplifies the codebase and improves reliability of Bitcoin backend interactions by removing async complexity and queueing.
- Core Lightning builds are reproducible/deterministic on Fedora targets.
- Plugin options can now accumulate multiple values (
"multi": true). - STRICT tables and additional safety pragmas improve correctness and catch issues earlier during development.
- Lightningd now uses a more efficient ring buffer for logs, reducing overhead and simplifying log handling.
- Peer messages are now padded to a uniform length, mitigating traffic analysis and making it harder to infer node activity from message sizes.
Protocol Updates
- Legacy onion format support is removed (aligned with current interop, e.g. recent LND behavior).
- A splicing fix avoids an occasional hang when there is a pending closing HTLC during splice.
See the changelog for full details
Since v25.12 we’ve had 421 commits in 110 days by 23 authors
A special thanks to our three first time contributors:
@ScuttoZ
@Raimo33
@TatianaMoroz
@dovgopoly
@erdoganishe
@Nazarevsky
An enormous thanks to the Core Lightning team:
@rustyrussell, @ShahanaFarooqui, @sangbida, @endothermicdev, @cdecker, @nepet, @Lagrang3, and @niftynei
v25.12.1 Boltz's Seamless Upgrade Experience II
This is a recommended point release, particularly for those creating new nodes.
Fixed
- lightningd: we now correctly sign for non-taproot addresses given by nodes created by v25.12 or newer. ([#8831])
lightning-hsmtool: handle mnemonic hsm_secret files (nodes created >= v25.12). ([#8831])- plugins:
paycan crash on errors returned from deep inside routehints. ([#8829]) - plugins:
askrenecan crash on a corner case in increase_flows. ([#8829]) - askrene: fix a plugin crash triggered during single path payments when a channel fees doesn't fit u32. ([#8832])
- JSON-RPC: malformed filters no longer crash lightningd. ([#8780])
- pay:
maxdelayparameter now enforced for direct channel payments ([#8740]) - gossipd: we would occasionally not show a node announcement in listnodes(). ([#8769])
- lightningd: potential crash on startup if bitcoind isn't up-to-date. ([#8779])
Changed
- JSON-RPC:
recovertakes a 12-word mnemonic for nodes created by v25.12 or later. ([#8830]) lightning-hsmtool:getsecretreplacesgetcodexsecretfor modern nodes (gives mnemonic). ([#8830])
Deprecated
Note: You should always set allow-deprecated-apis=false to test for changes.
lightning-hsmtool:getcodexsecret. Usegetsecret. ([#8830])
For more information, please see the changelog.
A shout out to acknowledge the significant efforts of the very cool Core Lightning team:
@rustyrussell, @ShahanaFarooqui, @sangbida, @endothermicdev, @cdecker, @nepet, @Lagrang3, and @niftynei