|
| 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 | + |
1 | 87 | # 0.2.2 - Feb 6, 2025 - "An Async Splicing Production" |
2 | 88 |
|
3 | 89 | ## API Updates |
|
0 commit comments