Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
9e14203
hsmd: don't grant gossip signing permission to channeld
Oct 9, 2026
c207f70
lightningd: don't crash on duplicate payment_hash in createinvoice
Oct 5, 2026
a46e0bf
msggen: update bundled schema for createinvoice error 901
Oct 12, 2026
7081739
bcli: clamp feerate floor before applying it to estimates
Sep 22, 2026
28f6495
common/bolt12: reject offers with an empty offer_paths.
Oct 5, 2026
9120013
channeld: don't crash if peer skips commitment_signed on splice finalize
Oct 7, 2026
a3cad1a
lightningd: only accept unverified channel_updates from the channel p…
Oct 5, 2026
e91fcd5
signpsbt: don't kill hsmd with a PSBT libwally can't sign.
Oct 7, 2026
560f902
lightningd: time out dual-funded opens the peer never completes.
Oct 16, 2026
61cb4a7
lightningd: time out dual-funded RBFs the peer never completes.
sangbida Oct 16, 2026
8dd07ba
offers: add overflow checks on recurrence helpers
Lagrang3 Sep 17, 2026
1104b16
offers: propagate recurrence dates errors upstream
Lagrang3 Sep 17, 2026
159daf1
offers: recurrence: internal API error refactor
Lagrang3 Sep 18, 2026
0eb9d19
offers: add checks on recurrence values
Lagrang3 Sep 18, 2026
709c3cb
docs: offers: add comment about recurrence policy limits
Lagrang3 Sep 18, 2026
0c2f188
dualopend: enforce BOLT2 zeroconf allowlist check
Andezion Sep 21, 2026
fd49590
plugins: handle hook handler errors and panics with safe fallbacks
daywalker90 Sep 24, 2026
c1bf4f2
common: don't print concealed option values in option errors.
Oct 8, 2026
d3b3b30
lightningd: wipe --recover from argv once parsed, and don't replay it…
Sep 29, 2026
a2e4e29
lightningd: pass the recover command's secret to the re-exec'd lightn…
Sep 29, 2026
af499ee
gossipd: ignore enabled channel_updates for dying channels
Sep 30, 2026
4c492d3
libplugin-pay: disable a dying channel on errors whose channel_update…
Oct 1, 2026
b7b3d0d
connectd, lightningd: ignore error and warning for unknown channels
Sep 30, 2026
ce7f6cd
connectd: log error and warning for unknown channels
Oct 1, 2026
ba55bc2
connectd: send a single peer_spoke whether or not we allocate a subd.
Oct 26, 2026
2508c7c
closingd: reject out-of-range legacy closing fee offers.
Oct 2, 2026
ee853b7
runes: fail pname restrictions when the parameter is ambiguous
Oct 13, 2026
59c848c
onchaind: bounds-check HTLC tx output index in steal_htlc_tx
Andezion Oct 13, 2026
9f0e7f3
gossipd: do cheap gossip checks before signature verification
Andezion Oct 13, 2026
d0bfdc9
common/sphinx: accept 0-length per-hop payloads in onion messages
Andezion Oct 14, 2026
97e7df4
commando: fix use-after-free on error path reusing a command id
Andezion Oct 15, 2026
a9e9071
lightningd: don't crash closing a dual-funded open we haven't saved yet.
Oct 19, 2026
7fc5f18
dualopend: reject a peer dust_limit above our reserve
Oct 12, 2026
4a41306
openingd: use check_dust_limit() for v1 opens too
sangbida Oct 20, 2026
e4a5920
openingd: reject a peer dust_limit_satoshis above 5000sat
sangbida Oct 20, 2026
fdee627
wire/tlvstream: initialize meta for fields appended by tlvstream_set_…
Oct 20, 2026
6aef96e
channeld: tell hsmd the non-opener's balance after a splice.
Oct 22, 2026
e2d9bfa
channeld: build a penalty tx for each splice candidate.
Oct 22, 2026
3195b74
wallet: update run-wallet mocks for channeld_got_revoke
nGoline Oct 27, 2026
b54561b
lightningd: don't match payment waiters on a freed payment_hash.
Oct 27, 2026
c9dc579
openingd: don't index the funding PSBT by the peer's prevtx_vout.
Oct 27, 2026
2adbff7
channeld: require both channel_ready before commitment updates
sangbida Oct 7, 2026
fd83e99
lightningd: don't record HTLCs added while awaiting lockin
sangbida Oct 7, 2026
2e05986
lightningd: fail a channel with HTLCs instead of forgetting it
sangbida Oct 7, 2026
84bba52
openingd: don't include channel_config.h twice
nGoline Oct 27, 2026
e71856f
lightningd: don't write every peer channel_update to the db
Oct 14, 2026
d1e3876
closing: reject close feerange with min above max
Sep 24, 2026
e5c3fa3
funder: serialize concurrent openchannel2 funding policy checks
Sep 23, 2026
52cf7f7
funder: queue RBF funding and reserve the inputs it adds.
Sep 29, 2026
a18cb4f
funder: keep the channel's saved utxos when an RBF attempt fails.
nGoline Oct 28, 2026
8c781d0
channeld: persist the next commitment before signing it
Sep 24, 2026
e502b98
tests: check the next commitment survives a crash before signing
Oct 5, 2026
4f653bc
jsonrpc: don't crash running getlog/check after the client hung up
Oct 9, 2026
fd2491f
connectd: drop pending incoming connections before peers when out of …
Oct 15, 2026
2138c47
connectd: don't crash when accept() fails on a websocket port.
Oct 19, 2026
0d2aeb3
lightningd: don't fail hooks an important plugin dies holding
nGoline Oct 27, 2026
f382755
gossipd: resize range_replies once per reply_channel_range.
jaonoctus Oct 23, 2026
f353ef6
bookkeeper: only write the income CSV as a plain .csv file
nGoline Oct 5, 2026
573b2e8
lightningd: store the revocation secret before acting on its HTLCs
Oct 26, 2026
3be2dae
lightningd: fix crash on mutual close of an unconfirmed dual-funded c…
sangbida Oct 29, 2026
6507aea
gossipd: ignore gossip messages far larger than any valid one
sangbida Oct 29, 2026
816f79e
gossipd: also compact gossip_store based on its size
sangbida Oct 29, 2026
0ded447
connectd: don't forward oversized gossip messages to gossipd
sangbida Oct 29, 2026
64eff9c
lightningd: watch the funding output on restart while awaiting a splice
Oct 29, 2026
de2998e
connectd: never block the io loop on DNS resolution
Oct 21, 2026
5c48094
hsmd: sign our HTLC tx input with SIGHASH_ALL
Nov 2, 2026
d7cc368
onchaind: Close a racy onchain resolution
Aug 11, 2026
61e1e3b
onchaind: resolve THEIR_HTLC when the peer takes it back
Aug 18, 2026
3728013
onchaind: only record an HTLC as theirs once that's final
Aug 18, 2026
7275e2b
onchaind: name the depth at which outputs are irrevocably resolved
Sep 10, 2026
562c070
onchaind: giving up on claiming their HTLC isn't only for timeouts
Sep 10, 2026
fe7ac3f
lightningd: sign inflight commitments with the splice's remote fundin…
Andezion Oct 29, 2026
08fb3fa
lightningd: an RBF splice_init must meet the 25/24 feerate floor
Andezion Oct 29, 2026
ac22b39
lightningd: refuse a splice RBF feerate above the most we'll pay
sangbida Nov 3, 2026
ed4bba0
channeld: abort_channels no longer fails a channel with a signed splice
Andezion Oct 29, 2026
4fcd793
channeld: reject start_batch with batch_size above 20
Andezion Oct 15, 2026
cd12de0
onchaind: tell lightningd whether the closing tx is our commitment or…
sangbida Oct 28, 2026
a8fd3ba
lightningd: tell onchaind which HTLCs are actually in the closing tx.
sangbida Oct 28, 2026
35721a7
onchaind: give an HTLC output to a live HTLC, not a removed look-alike.
sangbida Oct 28, 2026
ef11527
runes: reject runes longer than 64KiB before decoding
Andezion Oct 12, 2026
5b6ab29
pytest: don't rely on -txindex in test_onchain_all_dust
nGoline Nov 3, 2026
2ca70bd
common/test: don't start a non-quote comment with BOLT
nGoline Oct 27, 2026
dccbea3
CHANGELOG: add the 26.06.10 release entry
nGoline Nov 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,74 @@ All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## [26.06.10] - 2026-11-05: "Quantum-Resistant Lightning Channel VII"

This point release is recommended for all users.

### Added

- offers: create a CLN policy to constraint recurrence parameters to reasonable values, to avoid user footguns and computation overflows.
- docs: offers and fetchinvoice documentation mention the limits set on recurrence variables stablished by CLN's policy.

### Changed

- xpay: computes a budget for the number of hops in the payment depending on the final payload and blinded paths, it can fail early if the onion packet doesn't fit
- askrene-getroutes: penalizes every extra hop in every route with an homogeneous and constant probability of failure of 1%, as a consequence askrene will slightly prefer smaller routes and fewer payment parts.
- Plugins: a hook handler that fails or panics (pyln-client, cln-plugin) now gets a safe default reply instead of crashing or hanging lightningd; commitment_revocation and db_write still stop the node.
- bookkeeper: `bkpr-dumpincomecsv` `csv_file` must now be a plain filename ending in `.csv`; it is written in the node's network directory, and never through a symlink.
- `connect` with a host name now resolves it asynchronously in connectd, and fails with `--disable-dns`.
- currencyrate: IPv6 proxy addresses are rejected because bitreq does not support them

### Fixed

- xpay: Clamp the length of the payment routes using askrene's maxhops option aiming at producing routes that fit the data limits in the onion packet.
- JSON-RPC: `createinvoice` now returns error 901 for an already-used preimage instead of crashing the node.
- offers: no longer crashes on an offer with an empty offer_paths.
- channeld no longer crashes when a peer sends tx_signatures instead of commitment_signed during splice finalization.
- Protocol: a connected node could overwrite our peer's channel_update for a public channel before it was announced.
- JSON-RPC: `signpsbt` no longer crashes the node when given a PSBT it cannot sign (e.g. one with no outputs); it returns an error instead.
- dual-funding: a peer stalling a channel open no longer keeps our contributed UTXOs reserved.
- dual-funding: a peer stalling an RBF can no longer keep our channel from confirming.
- dualopend: a v2 channel open requesting 'option_zeroconf' is now refused unless we're configured to accept 0-confirmation channels from that peer, as openingd already does.
- Avoid closingd crashes on invalid legacy closing fee offers.
- runes: `pname` restrictions can no longer be bypassed with duplicate or punctuation-variant parameter names.
- onchaind: no longer crashes when an unexpected transaction spends a revoked HTLC output with too few outputs
- Protocol: onion messages with an empty (0-length) per-hop payload are now accepted, as BOLT 4 allows, instead of being silently dropped
- commando: a peer can no longer crash the node via a use-after-free by reusing a command id after a failed command
- dual-funding: `close` on a channel still being negotiated no longer crashes the node.
- dualopend: reject a dual-funded channel whose peer dust_limit exceeds the channel reserve.
- a peer can no longer open a channel with a dust_limit_satoshis above 5000sat, which let it trim our balance into fees on force close.
- Plugins: `commitment_revocation` is now called for each splice candidate while a splice is pending, so watchtowers can penalize whichever revoked commitment gets broadcast.
- lightningd: a self-payment completing while another payment was in flight read freed memory.
- openingd: a dual-funding peer could crash our Elements dualopend with an out-of-range prevtx_vout.
- Protocol: a peer could crash lightningd by committing an HTLC before the funding tx confirmed, then sending an error.
- lightningd: a channel peer flooding us with channel_updates no longer causes a db write for each one.
- lightningd: replay htlc_accepted for HTLCs committed before shutdown or on-chain instead of failing them on restart without calling the hook.
- lightningd: no longer crashes if a client hangs up while an `rpc_command` hook holds its `getlog` or `check` command.
- connectd: when out of file descriptors, close incoming connections which haven't sent init before disconnecting peers.
- connectd: no longer crashes when accepting a websocket connection fails (e.g. out of file descriptors).
- Plugins: hooks pending on an important plugin that dies are now called again on restart, instead of continuing as if the plugin had answered (an `htlc_accepted` hook could fail the HTLC).
- gossipd: more efficient handling of large reply_channel_range replies.
- lightningd: fix a crash on cooperative close of an unconfirmed dual-funded channel.
- gossipd: ignore gossip messages far larger than any valid one.
- gossipd: stale, duplicate and unknown-node gossip is now rejected before signature verification, so peers can no longer force needless ECDSA work
- gossipd: the gossip_store is also compacted based on its size, not just its record count.
- connectd: gossip messages far larger than any valid one are dropped before they are queued for gossipd.
- lightningd: a channel with an unconfirmed splice now notices if its funding output gets spent after a restart.
- connectd: a stalling DNS name in a peer's announced address no longer freezes all peer traffic; resolution is now done asynchronously.
- cln-grpc no longer panics on malformed request values.
- onchaind: Fixed a race between preimage return from downstream to upstream
- onchaind: Don't wait forever if the peer takes back an HTLC we were trying to claim with a late preimage
- bookkeeper: An incoming HTLC we claim with a late preimage after it timed out is no longer booked both to the peer and to us
- lightningd: unilateral close of a channel with a pending splice now works when the peer used a new funding key for it.
- splice_init: RBF of a pending splice now uses at least 25/24 of its feerate, which peers such as Eclair require.
- splice_init: a feerate above the most we'll pay no longer leaves the channel unable to splice until channeld restarts.
- abort_channels no longer fails the channel when a splice we already signed is pending.
- Protocol: channeld now rejects a 'start_batch' with 'batch_size' above 20, as the spec requires, so a peer can no longer stall the channel or use up memory
- dualopen and splicing: added tx_signatures verification according to BOLT-2
- onchaind: an HTLC removed just before a unilateral close, with the same payment hash, amount and cltv as a live one, could be mistaken for it onchain, causing us to fail the live HTLC upstream while the peer could still claim it.
- commando and rune RPCs reject oversized runes instead of spending quadratic time decoding them.

## [26.06.9] - 2026-10-06: "Quantum-Resistant Lightning Channel VI"

This point release is recommended for all users.
Expand Down
Loading
Loading