Skip to content

Commit 366ed1d

Browse files
committed
Draft release notes for 0.2.3
1 parent 141f649 commit 366ed1d

1 file changed

Lines changed: 86 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,89 @@
1+
# 0.2.3 - XXX - "XXX"
2+
3+
## API Updates
4+
* `DefaultMessageRouter` will now always generate blinded message paths which
5+
provide no privacy (where our node is the introduction node) for nodes with
6+
public channels. This works around an issue which will appear for any nodes
7+
with LND peers which enable onion messaging - such peers will refuse to
8+
forward BOLT 12 messages from unknown third parties, which most BOLT 12
9+
payers rely on today (#4647).
10+
* Explicit `amount_msats` of 0 is rejected in `Bolt12Offer`s, `OfferBuidler`
11+
now maps 0-amounts to an amount of `None` (#4324).
12+
13+
## Bug Fixes
14+
* `Features::supports_zero_conf` no longer clears the `ZeroConf` features and
15+
`Features::requires_zero_conf` now correctly reports required, rather than
16+
supported, status (#4517).
17+
* If an MPP payment is claimed but `ChannelMonitorUpdate`s for some parts are
18+
still being completed asynchronously, further channel updates (e.g.
19+
forwarding another payment) are pending and the node restarts, the channel
20+
could have become stuck (#4520).
21+
* The presence of unconfirmed transactions actually no longer causes
22+
`ElectrumSyncClient` to spuriously fail to sync (#4590).
23+
* LSPS1, LSPS2, and LSPS5 persistence will no longer get stuck and refuse to
24+
persist again after a single failure from the KVStore (#4597, #4282).
25+
* Dropping the future returned by
26+
`OutputSweeper::regenerate_and_broadcast_spend_if_necessary` no longer
27+
results in future calls to the same method being spuriously ignored (#4598).
28+
* Used async-receive offers are no longer refreshed on every timer tick once
29+
their refresh time is reached (#4672).
30+
* `FilesystemStore::list_all_keys` will no longer fail if there are stale
31+
intermediate files lying around from a previous unclean shutdown (#4618).
32+
* When forwarding an HTLC while in a blinded path with proportional fees over
33+
100%, LDK will no longer spuriously charge 1 msat too little (#4697).
34+
* Fixed a rare case where a channel could get stuck on reconnect when using
35+
both async `ChannelMonitorUpdate` persistence and async signing (#4684).
36+
* If we had exactly zero balance in a zero-fee-commitment channel, the
37+
counterparty was able to splice all of their balance out, violating the
38+
reserve requirements they'd otherwise be forced to keep (#4580).
39+
* Providing an `Event::HTLCIntercepted` to the `LSPS2ServiceHandler` twice no
40+
longer results in spuriously opening a channel early (#4656).
41+
* `Event::PaymentSent::fee_paid_msat` is no longer `None` in cases where
42+
`ChannelManager::abandon_payment` was called before the payment ultimately
43+
completing anyway (#4651).
44+
* `AnchorDescriptor::previous_utxo` now provides the correct `script_pubkey`
45+
for non-zero-commitment-fee anchor channels (#4669).
46+
* Syncing a `ChainMonitor` using the `Confirm` trait will no longer write some
47+
full `ChannelMonitor`s to disk several times per block (#4544).
48+
* `OMDomainResolver` now correctly accounts for failed queries when rate
49+
limiting, ensuring we continue to respond to queries after failures (#4591).
50+
* Calling `ChannelManager::send_payment_with_route` without a `route_params`
51+
and with an invalid `Route` will no longer panic (#4707).
52+
* `LSPS2ServiceHandler::channel_open_failed` now correctly fails intercepted
53+
HTLCs rather than allowing them to fail just before expiry (#4677).
54+
* `StaticInvoice::is_offer_expired` was corrected to check offer, rather than
55+
static invoice, expiry (#4594).
56+
* `lightning-custom-message`'s handling of `peer_connected` events now ensures
57+
that sub-handlers will see a `peer_disconnected` event if a different
58+
sub-handler refused the connection by `Err`ing `peer_connected` (#4595).
59+
* Replay protection for LSPS5 signatures now detects replays which are only
60+
different in the encoded signature's case (#4701).
61+
* When `lightning-liquidity` is configured in the background processor, there
62+
is no longer a stream of `Persisting LiquidityManager...` log spam (#4246).
63+
* Incomplete MPP keysend payments will no longer see their HTLCs held until
64+
expiry (#4558).
65+
* `InvoiceRequestBuilder` will no longer accept a `quantity` of `0` for a
66+
`Bolt12Offer` allowing any quantity up to a bound (#4667).
67+
* `lightning-custom-message` handlers which return `Ok(None)` when asked to
68+
deserialize a message in their defined range no longer cause panics (#4709).
69+
* Several spurious debug assertions were fixed (#4537, #4618, #4026)
70+
71+
72+
## Security
73+
0.2.3 fixes several underestimates of the anchor reserves required to ensure we
74+
can reliably close channels and a sanitization issue.
75+
* When using the `anchor_channel_reserves` module to calculate reserves
76+
required to pay for fees when closing anchor channels, zero-fee-commitment
77+
channels were not considered. This could allow a counterparty to open many
78+
channels, leaving us unable to properly force-close (#4592).
79+
* The `anchor_channel_reserves` module overestimated the value of `Utxo`s in
80+
the wallet by ignoring the `TxIn` cost to spend them (#4670).
81+
* `PrintableString` did not properly sanitize unicode format characters,
82+
allowing an attacker to corrupt the rendering of logs or UI (#4593, #4605).
83+
84+
Thanks to Project Loupe for reporting most of the issues fixed in this release.
85+
86+
187
# 0.2.2 - Feb 6, 2025 - "An Async Splicing Production"
288

389
## API Updates

0 commit comments

Comments
 (0)