Releases: ElementsProject/lightning
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
v25.12 Boltz's Seamless Upgrade Experience
This release has been named by @sangbida
Highlights for Users
- This release candidate includes a downgrade tool!
lightningd-downgradewill downgrade your database from v25.12 to v25.09 if something goes wrong - New nodes will now be created with a BIP-39 12-word phrase as their root secret. BIP-39 12-word base functionality in
lightning-hsmtoolto supporthsm_secretfiles. - We solved the case of the
missing_utxobug!! - We received great feedback about
xpayand adjusted accordingly: which will no longer try to send too many HTLCs through unknown channels (6, as that is Phoenix's limit) unless it has no choice, we've fixed a clash with simultaneous payments viaroutehintsand blinded paths and asked xpay to wait if it suspects a payment failure is due to a height disagreement with the final node. - Added
askrene-bias-node: an RPC command to set a bias on node's outgoing or incoming channels. - Use the new
networkeventssubsystem to access information about peers: ping times and connection times. - We've configured an
experimental-lsps-clientandexperimental-lsps2-servicesupport for LSPS level 2 specification.
Highlights for Developers
There's a vast array of performance improvements for large nodes... Do not pass go. Go directly to the changelog!
- Multiple significant speedups for large nodes have been added to lightningd, especially preventing "freezes" under exceptionally high load and helping it to handle large numbers of command outputs gracefully.
- Postgres: significant speedup on read-only operations (e.g. 30% on empty SELECTs)
Protocol Updates
- We now re-transmit unseen funding transactions on startup, for more robustness.
- Stricter conformance to Bolt spec for splice commitments.
See the changelog for full details
Since 25.09 we’ve had 520 commits in 92 days by 24 authors
A special thanks to our four first time contributors:
@noblepayne
@claudio.raimondi
@botantony
@wqxoxo
An enormous thanks to the very cool Core Lightning team:
@rustyrussell, @ShahanaFarooqui, @sangbida, @endothermicdev, @cdecker, @nepet, @Lagrang3, and @niftynei
25.12 Release Candidate 3
A critical and longstanding fix for missing UTXOs.