|
| 1 | +# Release Notes |
| 2 | +- [Bug Fixes](#bug-fixes) |
| 3 | +- [New Features](#new-features) |
| 4 | + - [Functional Enhancements](#functional-enhancements) |
| 5 | + - [RPC Additions](#rpc-additions) |
| 6 | + - [lncli Additions](#lncli-additions) |
| 7 | +- [Improvements](#improvements) |
| 8 | + - [Functional Updates](#functional-updates) |
| 9 | + - [RPC Updates](#rpc-updates) |
| 10 | + - [lncli Updates](#lncli-updates) |
| 11 | + - [Breaking Changes](#breaking-changes) |
| 12 | + - [Performance Improvements](#performance-improvements) |
| 13 | + - [Deprecations](#deprecations) |
| 14 | +- [Technical and Architectural Updates](#technical-and-architectural-updates) |
| 15 | + - [BOLT Spec Updates](#bolt-spec-updates) |
| 16 | + - [Testing](#testing) |
| 17 | + - [Database](#database) |
| 18 | + - [Code Health](#code-health) |
| 19 | + - [Tooling and Documentation](#tooling-and-documentation) |
| 20 | +- [Contributors (Alphabetical Order)](#contributors-alphabetical-order) |
| 21 | + |
| 22 | +# Bug Fixes |
| 23 | + |
| 24 | +* [Bounded the memory used while syncing the channel |
| 25 | + graph](https://github.com/lightningnetwork/lnd/pull/10992). A peer replying |
| 26 | + to our `query_channel_range` could previously make us buffer an |
| 27 | + unpredictable number of short channel IDs, as the only limit was a coarse |
| 28 | + 67MB cap on the bytes a single zlib-compressed reply could decompress to. |
| 29 | + Replies are now capped at a precise number of short channel IDs, both |
| 30 | + per-message and in aggregate across a single query, and the accumulated |
| 31 | + reply state is released as soon as any reply fails validation so that a |
| 32 | + peer cannot pin it by deliberately forcing an error. |
| 33 | + |
| 34 | +* [Refined invoice update |
| 35 | + handling](https://github.com/lightningnetwork/lnd/pull/11024) across MPP, AMP, |
| 36 | + and legacy payment paths, including keysend records and preimage-dependent |
| 37 | + settlement outcomes. |
| 38 | + |
| 39 | +* [Fixed a data race](https://github.com/lightningnetwork/lnd/pull/11019) in the |
| 40 | + legacy cooperative close state machine, which was advanced from both the link |
| 41 | + goroutine and the peer goroutine with nothing synchronizing the two. The link |
| 42 | + now reports a flushed channel to the peer's channel manager instead of driving |
| 43 | + the closer itself, so every step of a close runs on a single goroutine. The |
| 44 | + same change has the RBF closer validate the remote party's delivery script in |
| 45 | + all cases, rather than only when an upfront shutdown script was on record for |
| 46 | + that peer, and rejects an absent script instead of treating it as nothing to |
| 47 | + check. |
| 48 | + |
| 49 | +* Outgoing contest resolvers now [retain the corresponding incoming HTLC |
| 50 | + expiry](https://github.com/lightningnetwork/lnd/pull/11032) when transitioning |
| 51 | + to timeout resolution, allowing the sweeper to continue using an |
| 52 | + expiry-aware confirmation target. |
| 53 | + |
| 54 | +# New Features |
| 55 | + |
| 56 | +## Functional Enhancements |
| 57 | + |
| 58 | +## RPC Additions |
| 59 | + |
| 60 | +* The [HTLC interceptor](https://github.com/lightningnetwork/lnd/pull/10942) now |
| 61 | + exposes the next hop of a blinded route that identifies it by node ID |
| 62 | + (`next_node_id`) rather than by channel. |
| 63 | + |
| 64 | +## lncli Additions |
| 65 | + |
| 66 | +# Improvements |
| 67 | + |
| 68 | +## Functional Updates |
| 69 | + |
| 70 | +* [The HTLC forward interceptor now validates](https://github.com/lightningnetwork/lnd/pull/11028) |
| 71 | + that derived auto-fail heights are within the supported range before they are |
| 72 | + exposed through the interceptor API. |
| 73 | + |
| 74 | +## RPC Updates |
| 75 | + |
| 76 | +* `ForwardHtlcInterceptRequest.outgoing_requested_chan_id` now holds a reserved |
| 77 | + sentinel value (`18446744073709551615`, all bits set) when the |
| 78 | + [HTLC interceptor](https://github.com/lightningnetwork/lnd/pull/10942) reports |
| 79 | + a blinded forward that identifies the next hop by node ID. The sender of such |
| 80 | + a forward requests no channel, so a zero value here would make a client that |
| 81 | + detects the exit hop by a zero channel ID classify the forward as a final |
| 82 | + receive. Clients that switch on this field must handle the sentinel and read |
| 83 | + `outgoing_requested_node_id` for the next hop. |
| 84 | + |
| 85 | +## lncli Updates |
| 86 | + |
| 87 | +## Breaking Changes |
| 88 | + |
| 89 | +## Performance Improvements |
| 90 | + |
| 91 | +## Deprecations |
| 92 | + |
| 93 | +# Technical and Architectural Updates |
| 94 | + |
| 95 | +## BOLT Spec Updates |
| 96 | + |
| 97 | +* [Fixed an issue](https://github.com/lightningnetwork/lnd/pull/10942) where an |
| 98 | + lnd node acting as a relaying node (including the introduction node) in a |
| 99 | + blinded path failed to forward the payment when the next hop was identified by |
| 100 | + node ID (`next_node_id`) rather than a short channel ID. The next hop's public |
| 101 | + key is now resolved to one of our channels with that peer using non-strict |
| 102 | + forwarding. |
| 103 | + |
| 104 | +## Testing |
| 105 | + |
| 106 | +## Database |
| 107 | + |
| 108 | +## Code Health |
| 109 | + |
| 110 | +## Tooling and Documentation |
| 111 | + |
| 112 | +# Contributors (Alphabetical Order) |
| 113 | + |
| 114 | +* bitromortac |
| 115 | +* Olaoluwa Osuntokun |
| 116 | +* Ziggie |
0 commit comments