Skip to content

Commit a94f9f8

Browse files
committed
Add draft release notes for 0.2
1 parent 683d03c commit a94f9f8

12 files changed

+182
-53
lines changed

CHANGELOG.md

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,185 @@
1+
# 0.2 - TODO: Add release date, 2025 - "Natively Asynchronous Splicing"
2+
3+
## API Updates
4+
5+
* Splicing is now supported. The current implementation is expected to be
6+
compatible with Eclair and future versions of CLN, but may change feature
7+
signaling in a future version as testing completes, breaking compatibility.
8+
Support for accepting splices is gated on
9+
`UserConfig::reject_inbound_splices`. Outbound splices can be initiated with
10+
`ChannelManager::splice_channel`.
11+
* Various APIs have been updated to offer a native Rust async API. All
12+
newly-async traits and structs have a `*Sync` variant which offers the
13+
same API but with sync methods:
14+
* `KVStore` has been made async. Note that `KVStore` methods are not
15+
`async fn`, but rather write ordering is fixed when the methods return,
16+
though write completion is async.
17+
* `BumpTransactionEventHandler` is now backed by an async `WalletSource` (and
18+
`Wallet`) or an async `CoinSelectionSource` and is now async. Sync versions
19+
are in the new `events::bump_transaction::sync` submodule (#3752).
20+
* `OutputSweeper` is now backed by an async `KVStore` and
21+
`ChangeDestinationSource` and is now async (#3819, #3734, #4131).
22+
* `MonitorUpdatingPersisterAsync` and `ChainMonitor::new_async_beta` were
23+
added for async `ChannelMonitor` persistence. Note that this feature is
24+
still considered beta (#4063).
25+
* An initial version of async payments is now supported. The current
26+
implementation is specific to LDK and only LDK supports paying static
27+
invoices. However, because BOLT 12 invoice requests will gracefully "upgrade"
28+
to a non-static invoice when the recipient comes online, offers backed by
29+
static invoices are expected to be payable by any BOLT 12 payer.
30+
With an LDK-based LSP, often-offline clients should set
31+
`UserConfig::hold_outbound_htlcs_at_next_hop` and call
32+
`ChannelManager::set_paths_to_static_invoice_server`.
33+
LDK-based LSPs wishing to support often-offline senders and recipients should
34+
set `UserConfig::enable_htlc_hold`, support the existing "onion message
35+
mailbox" feature (setting `intercept_messages_for_offline_peers` on
36+
`OnionMessenger` and handling `Event::OnionMessageIntercepted`s), and handle
37+
`Event::PersistStaticInvoice`s and `Event::StaticInvoiceRequested`s.
38+
* Zero-Fee-Commitment channels are now supported in LDK. These channels remove
39+
force-closure risk for feerate disagreements by using a fixed, zero fee on
40+
pre-signed transactions, relying on anchor bumps instead. They also utilize
41+
the new TRUC + ephemeral dust policy in Bitcoin Core 29 to substantially
42+
improve the lightning security model. This requires having a path of Bitcoin
43+
Core 29+ nodes between you and a miner for transactions to be mined. This
44+
only works with LDK peers, and feature signaling may change in a future
45+
version of LDK, breaking compatibility. This is negotiated automatically for
46+
manually-accepted inbound channels and negotiated for outbound channels based
47+
on `ChannelHandshakeConfig::negotiate_anchor_zero_fee_commitments`.
48+
* `Event::BumpTransaction` is now always generated even if the transaction has
49+
sufficient fee. This allows you to manage transaction broadcasting more
50+
granularly for anchor channels (#4001).
51+
* The local key which receives non-HTLC-encumbered funds when the counterparty
52+
force-closes a channel is now one of a static list of 1000 keys when using
53+
`KeysManager` if `v2_remote_key_derivation` is set or after splicing (#4117).
54+
* LSPS5 support was added, providing a push notification API for LSPS clients.
55+
* Client-trusts-LSP is now supported on LSPS2 service (#3838).
56+
* `LSPS2ClientEvent` now has events for failure events (#3804).
57+
* `LSPS2ServiceHandler::channel_open_abandoned` was added (#3712).
58+
* `Event::PendingHTLCsForwardable` has been replaced with regular calls to
59+
`process_pending_htlc_forwards` in the background processor while
60+
`ChannelManager::needs_pending_htlc_processing` is true. The delay between
61+
calls (and, thus, HTLC forwarding delay) is random between zero and 200ms,
62+
averaging 50ms, faster than the previous recommendation (#3891, #3955).
63+
* `Event::HTLCHandlingFailed`s now include a`LocalHTLCFailureReason`, providing
64+
much more granular reasons for HTLCs having been failed (#3744, etc).
65+
* `Event::HTLCHandlingFailed` is now generated any time forwarding an HTLC
66+
fails, i.e. including cases where the HTLC onion is invalid (#2933).
67+
* `Event::HTLCHandlingFailed::failure_type` of `UnknownNextHop` has been
68+
deprecated and is no longer generated (#3700).
69+
* `OffersMessageFlow` was introduced to make it easier to implement most of the
70+
BOLT 12 flows without using a `ChannelManager` (#3639).
71+
* `ChannelManager::pay_for_bolt11_invoice` was added (#3617).
72+
* `ChannelManager::pay_for_offer_from_human_readable_name` has been deprecated
73+
in favor of the `bitcoin-payment-instructions` and
74+
`ChannelManager::pay_for_offer_from_hrn`. Language bindings users may still
75+
wish to use the original (#3903, #4083).
76+
* `lightning::util::anchor_channel_reserves` was added to assist in estimating
77+
on-chain fund requirements for anchor channel closures (#3487).
78+
* Using both asynchronous and synchronous `ChannelMonitor[Update]` persistence
79+
on the same `ChannelManager` will now panic. This never functioned correctly
80+
and is now detected to prevent issues (#3737).
81+
* LDK can now validate if HTLC errors have been tampered with (once nodes
82+
upgrade). It also reports and logs the amount of time an HTLC was held so
83+
that (as nodes upgrade) slow nodes can be found (#2256, #3801, other fixes).
84+
* Repeated `Listen::block_disconnected` calls for each disconnected block in a
85+
reorg have been replaced with a single `blocks_disconnected` call with the
86+
fork point block (i.e. the highest block on both sides of the reorg, #3876).
87+
* `lightning::routing::scoring::CombinedScorer` was added to combine scoring
88+
data between remote scoring info and local payment results (#3562).
89+
* LDK will now store up to 1KiB of "peer storage" data in `ChannelManager` per
90+
peer with which we have a funded channel (#3575).
91+
* The `Persister` trait was removed. You can match on namespace constants in
92+
`KVStore` to restore custom logic for specific storage objects (#3905).
93+
* `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by
94+
default, #3726). You can use `NodeIdMessageRouter` to enable dummy hops.
95+
* `ProbabilisticScoringFeeParameters::probing_diversity_penalty` was added to
96+
allow for better information gathering while probing (#3422, #3713).
97+
* `Persist` now takes a `MonitorName` rather than a `funding_txo` `OutPoint` to
98+
ensure the storage key is consistent across splices (#3569).
99+
* `lightning-liquidity` now supports persisting relevant state (#4059, #4118).
100+
* `ChannelManager::funding_transaction_generated_manual_broadcast` was added to
101+
open a channel without automatically broadcasting the funding transaction
102+
(#3838). In it and `unsafe_manual_funding_transaction_generated`
103+
force-closure logic has been updated to no longer automatically broadcast the
104+
commitment tx unless the funding transaction has been seen on-chain (#4109).
105+
* Various instances of channel closure which provided a
106+
`ClosureReason::HolderForceClosed` now provide more accurate
107+
`ClosureReason`s, especially `ClosureReason::ProcessingError` (#3881).
108+
* A new `ClosureReason::LocallyCoopClosedUnfundedChannel` was added (#3881).
109+
* Some arguments to `ChannelManager::pay_for_offer[_from_human_readable_name]`
110+
have moved behind `optional_params` (#3808, #3903).
111+
* `Event::PaymentSent::bolt12_invoice` was added for proof-of-payment (#3593).
112+
* Channel values are now synchronized via RGS, improving scoring (#3924).
113+
* `SendOnlyMessageHandler` was added, implemented for `ChainMonitor`, and
114+
an instance added to `MessageHandler`. Note that `ChainMonitor` does not yet
115+
send any messages, though will in the future (#3922).
116+
* `lightning_background_processor::NO_{ONION_MESSENGER,LIQUIDITY_MANAGER}` were
117+
added to simplify background processor init without some args (#4100, #4132).
118+
* `ChannelManager::set_current_config` was added (#4038).
119+
* Onion messages received to a blinded path we generated are now authenticated
120+
implicitly rather than explicitly in blinded path `Context`s (#3917, #4144).
121+
* `OMNameResolver::expire_pending_resolution` has been added for those who
122+
cannot or do not wish to call `new_best_block` regularly (#3900).
123+
* `lightning-liquidity`'s LSPS1 client now supports BOLT 12 payments (#3649).
124+
* `LengthReadable::read` has been renamed `read_from_fixed_length_buffer` and
125+
is implemented for all `Readable` (#3579).
126+
* `LengthReadable` is now required to read various objects which consume the
127+
full available buffer (#3640).
128+
* Structs in `lightning-liquidity` were renamed to be globally unique (#3583).
129+
* Renamed `SpendableOutputDescriptor::outpoint` to `spendable_outpoint` (#3634)
130+
131+
## Performance Improvements
132+
* `ChainMonitor::load_existing_monitor` was added and should be used on startup
133+
to load existing `ChannelMonitor`s rather than via `Persist`, avoiding
134+
re-persisting each `ChannelMonitor` during startup (#3996).
135+
* RGS data application was further sped up (#3581).
136+
137+
## Bug Fixes
138+
* `FilesystemStore::list` is now more robust against race conditions with
139+
simultaneous `write`/`archive` operations (#3799).
140+
* Pending async persistence of `ChannelMonitorUpdate`s required to forward an
141+
HTLC can no longer result in the HTLC being forgotten if the channel is
142+
force-closed (#3989).
143+
* `lightning-liquidity`'s service support now properly responds to the
144+
`ListProtocols` message (#3785).
145+
* A rare race which might lead `PeerManager` (and `lightning-net-tokio`) to
146+
stop reading from a peer until a new message is sent to that peer has been
147+
fixed (#4168).
148+
* The fields in `SocketAddress::OnionV3` are now correctly parsed, and the
149+
`Display` for such addresses is now lowercase (#4090).
150+
* `PeerManager` is now more conservative about disconnecting peers which aren't
151+
responding to pings in a timely manner. This may reduce disconnections
152+
marginally when forwarding gossip to a slow peer (#4093, #4096).
153+
* Blinded path serialization is now padded to better hide its contents (#3177).
154+
* In cases of incredibly long async monitor update or async signing operations,
155+
LDK may have previously spuriously disconnected peers (#3721).
156+
* Total dust exposure on a commitment now rounds correctly (#3572).
157+
158+
## Backwards Compatibility
159+
* `ChannelMonitor`s which were created prior to LDK 0.0.110 and which saw no
160+
updates since LDK 0.0.116 may now fail to deserialize (#3638, #4146).
161+
* Setting `v2_remote_key_derivation` on `KeysManager` to true, or splicing a
162+
channel results in using keys which prior versions of LDK do not know how to
163+
derive. This may result in missing funds or panics trying to sweep closed
164+
channels after downgrading (#4117).
165+
* After upgrading to 0.2, downgrading to versions of LDK prior to 0.0.123 is no
166+
longer supported (#2933).
167+
* Upgrading from versions prior to 0.0.116 is not supported (#3604, #3678).
168+
* Upgrading to v0.2.0 will time out any pending async payment waiting for the
169+
often offline peer to come online (#3918).
170+
* Blinded message paths generated by previous versions of LDK, except those
171+
generated for inclusion in BOLT 12 `Offer`s will no longer be accepted. As
172+
most blinded message paths are ephemeral, this should only invalidate issued
173+
BOLT 12 `Refund`s in practice (#3917).
174+
* Once a channel has been spliced, LDK can no longer be downgraded.
175+
`UserConfig::reject_inbound_splices` can be set to block inbound ones (#4150)
176+
* Downgrading after setting `UserConfig::enable_htlc_hold` is not supported
177+
(#4045, #4046).
178+
* LDK now requires the `channel_type` feature in line with spec updates (#3896)
179+
180+
TODO release stats
181+
182+
1183
# 0.1.7 - Oct 21, 2025 - "Unstable Release CI"
2184

3185
## Bug Fixes

pending_changelog/3531-buggy-router-leak.txt

Lines changed: 0 additions & 4 deletions
This file was deleted.

pending_changelog/3604-upgrades-prior-to-113-not-supported.txt

Lines changed: 0 additions & 2 deletions
This file was deleted.

pending_changelog/3638-0.2-upgrade-without-counterparty-node-id-in-monitor-not-supported.txt

Lines changed: 0 additions & 5 deletions
This file was deleted.

pending_changelog/3664-downgrades-to-0.0.115-not-supported.txt

Lines changed: 0 additions & 3 deletions
This file was deleted.

pending_changelog/3678-channel-type-check.txt

Lines changed: 0 additions & 5 deletions
This file was deleted.

pending_changelog/3700-reason-in-handling-failed.txt

Lines changed: 0 additions & 8 deletions
This file was deleted.

pending_changelog/3881.txt

Lines changed: 0 additions & 6 deletions
This file was deleted.

pending_changelog/3905-async-background-persistence.txt

Lines changed: 0 additions & 9 deletions
This file was deleted.

pending_changelog/3917-blinded-path-auth.txt

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)