Skip to content

Commit 4741bb1

Browse files
committed
Add draft release notes for 0.2
1 parent 0dc5da0 commit 4741bb1

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed

CHANGELOG.md

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,154 @@
1+
# 0.2 - XXX, 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 no backed by an async `WalletSource` (and
18+
`Wallet`) or an async `CoinSelectionSource` and is now async. Sync versions
19+
are in the new `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 mesage
35+
mailbox" feature (setting `intercept_messages_for_offline_peers` on
36+
`OnionMessegner` and handling `Event::OnionMessageIntercepted`s), and handle
37+
`Event::PersistStaticInvoice` events.
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+
presigned transactions, relying on anchor bumps instead. This only works with
41+
LDK peers, and feature signaling may change in a future version of LDK,
42+
breaking compatibility. This is negotiated automatically for
43+
manually-accepted inbound channels and negotiated for outbound channels based
44+
on `ChannelHandshakeConfig::negotiate_anchors_zero_fee_htlc_tx`.
45+
46+
* `Event::BumpTransaction` is now always generated even if the transaction has
47+
sufficient fee. This allows you to manage transaction broadcasting more
48+
granularly for anchor channels (#4001).
49+
* The local key which receives non-HTLC-encumbered funds when the counterparty
50+
force-closes a channel is now one of a static list of 1000 keys when using
51+
`KeysManager` if `v2_remote_key_derivation` is set or after splicing (#4117).
52+
* LSPS5 support was added, providing a push notification API for LSPS clients.
53+
* Client-trusts-LSP is now supported on LSPS2 service (#3838).
54+
* `LSPS2ClientEvent` now has events for failure events (#3804).
55+
* `LSPS2ServiceHandler::channel_open_abandoned` was added (#3712).
56+
* `Event::PendingHTLCsForwardable` has been replaced with regular calls to
57+
`process_pending_htlc_forwards` in the background processor when
58+
`ChannelManager::needs_pending_htlc_processing` is true (#3891, #3955).
59+
* `Event::HTLCHandlingFailed`s now include a`LocalHTLCFailureReason`, providing
60+
much more granular reasons for HTLCs having been failed (#3744, etc).
61+
* `Event::HTLCHandlingFailed` is now generated any time forwarding an HTLC
62+
fails, i.e. including cases where the HTLC onion is invalid (#2933).
63+
* `OffersMessageFlow` was introduced to make it easier to implement most of the
64+
BOLT 12 flows without using a `ChannelManager` (#3639).
65+
* `ChannelManager::pay_for_bolt11_invoice` was added (#3617).
66+
* `ChannelManager::pay_for_offer_from_human_readable_name` has been deprecated
67+
in favor of the `bitcoin-payment-instructions` and
68+
`ChannelManager::pay_for_offer_from_hrn`. Language bindings users may still
69+
wish to use the original (#3903, #4083).
70+
* `lightning::util::anchor_channel_reserves` was added to assist in estimating
71+
on-chain fund requirements for anchor channel closures (#3487).
72+
* Using both asynchronous and synchronous `ChannelMonitor[Update]` persistence
73+
on the same `ChannelManager` will now panic. This never functioned correctly
74+
and is now detected to prevent issues (#3737).
75+
* LDK can now validate if HTLC errors have been tampered with (once nodes
76+
upgrade). It also reports and logs the amount of time an HTLC was held so
77+
that (as nodes upgrade) slow nodes can be found (#2256, #3801, other fixes).
78+
* Repeated `Listen::block_disconnected` calls for each disconnected block in a
79+
reorg have been replaced with a single `blocks_disconnected` call with the
80+
fork point block (i.e. the highest block on both sides of the reorg, #3876).
81+
* `lightning::routing::scoring::CombinedScorer` was added to better support
82+
nodes using both remote scoring info and their own payment results (#3562).
83+
* LDK will now store up to 1KiB of "peer storage" data in `ChannelManager` per
84+
peer with which we have a funded channel (#3575).
85+
* `ProbabilisticScoringFeeParameters::probing_diversity_penalty` was added to
86+
allow for better information gathering while probing (#3422, #3713).
87+
* `Persist` now takes a `MonitorName` rather than a `funding_txo` `OutPoint` to
88+
ensure the storage key is consistent across splices (#3569).
89+
* `lightning-liquidity` now supports persisting relevant state (#4059, #4118).
90+
* Some arguments to `ChannelManager::pay_for_offer[_from_human_readable_name]`
91+
have moved behind `optional_params` (#3808, #3903).
92+
* `Event::PaymentSent::bolt12_invoice` was added for proof-of-payment (#3593).
93+
* Channel values are now synchronized via RGS, improving scoring (#3924).
94+
* `SendOnlyMessageHandler` was added, implemented for `ChainMonitor`, and
95+
an instance added to `MessageHandler`. Note that `ChainMonitor` does not yet
96+
send any messages, though will in the future (#3922).
97+
* `lightning_background_processor::NO_{ONION_MESSENGER,LIQUIDITY_MANAGER}` were
98+
added to simplify background processor init without some args (#4100, #4132).
99+
* `ChannelManager::set_current_config` was added (#4038).
100+
* Onion messages received to a blinded path we generated are now authenticated
101+
implicitly rather than explicitly in blinded path `Context`s (#3917, #4144).
102+
* `OMNameResolver::expire_pending_resolution` has been added for those who
103+
cannot or do not wish to call `new_best_block` regularly (#3900).
104+
* `lightning-liquidity`'s LSPS1 client now supports BOLT 12 payments (#3649).
105+
* `LengthReadable::read` has been renamed `read_from_fixed_length_buffer` and
106+
is implemented for all `Readable` (#3579).
107+
* `LengthReadable` is now required to read various objects which consume the
108+
full available buffer (#3640).
109+
* structs in `lightning-liquidity` were renamed to be globally unique (#3583).
110+
* Renamed `SpendableOutputDescriptor::outpoint` to `spendable_outpoint` (#3634)
111+
112+
## Performance Improvements
113+
* `ChainMonitor::load_existing_monitor` was added and should be used on startup
114+
to load existing `ChannelMonitor`s rather than via `Persist`, avoiding
115+
re-persisting each `ChannelMonitor` during startup (#3996).
116+
* RGS data application was further sped up (#3581).
117+
118+
## Bug Fixes
119+
* `FilesystemStore::list` is now more robust against race conditions with
120+
simultaneous `write`/`archive` operations (#3799).
121+
* Pending async persistence of `ChannelMonitorUpdate`s required to forward an
122+
HTLC can no longer result in the HTLC being forgotten if the channel is
123+
force-closed (#3989).
124+
* `lightning-liquidity`'s service support now properly responds to the
125+
`ListProtocols` message (#3785).
126+
* The fields in `SocketAddress::OnionV3` are now corectly parsed, and the
127+
`Display` for such addresses is now lowercase (#4090).
128+
* `PeerManager` is now more conservative about disconnecting peers which aren't
129+
responding to pings in a timely manner. This may reduce disconnections
130+
marginally when forwarding gossip to a slow peer (#4093, #4096).
131+
* `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by
132+
default, #3726).
133+
* Blinded path serialization is now padded to better hide its contents (#3177).
134+
* In cases of incredibly long async monitor update or async signing operations,
135+
LDK may have previously spuriously disconnected peers (#3721).
136+
* Total dust exposure on a commitment now rounds correctly (#3572).
137+
138+
## Backwards Compatibility
139+
* `ChannelMonitor`s which were created prior to LDK 0.0.110 and which saw no
140+
updates since LDK 0.0.116 may now fail to deserialize (#3638, #4146).
141+
* After upgrading to 0.2, downgrading to versions of LDK prior to 0.0.123 is no
142+
longer supported (#2933).
143+
* Blinded paths generated by previous versions of LDK, except those generated
144+
for inclusion in `Bolt12Offer`s will no longer be accepted (#3917).
145+
* Once a channel has been spliced, LDK can no longer be downgraded.
146+
`UserConfig::reject_inbound_splices` can be set to block inbound ones (#4150)
147+
* LDK now requires the `channel_type` feature in line with spec updates (#3896)
148+
149+
XXX release stats
150+
151+
1152
# 0.1.6 - Oct 10, 2025 - "Async Preimage Claims"
2153

3154
## Performance Improvements

0 commit comments

Comments
 (0)