1
+ # 0.0.123 - May 08, 2024 - "BOLT12 Dust Sweeping"
2
+
3
+ ## API Updates
4
+
5
+ * To reduce risk of force-closures and improve HTLC reliability the default
6
+ dust exposure limit has been increased to
7
+ ` MaxDustHTLCExposure::FeeRateMultiplier(10_000) ` . Users with existing
8
+ channels might want to consider using
9
+ ` ChannelManager::update_channel_config ` to apply the new default (#3045 ).
10
+ * ` ChainMonitor::archive_fully_resolved_channel_monitors ` is now provided to
11
+ remove from memory ` ChannelMonitor ` s that have been fully resolved on-chain
12
+ and are now not needed. It uses the new ` Persist::archive_persisted_channel `
13
+ to inform the storage layer that such a monitor should be archived (#2964 ).
14
+ * An ` OutputSweeper ` is now provided which will automatically sweep
15
+ ` SpendableOutputDescriptor ` s, retrying until the sweep confirms (#2825 ).
16
+ * After initiating an outbound channel, a peer disconnection no longer results
17
+ in immediate channel closure. Rather, if the peer is reconnected before the
18
+ channel times out LDK will automatically retry opening it (#2725 ).
19
+ * ` PaymentPurpose ` now has separate variants for BOLT12 payments, which
20
+ include fields from the ` invoice_request ` as well as the ` OfferId ` (#2970 ).
21
+ * ` ChannelDetails ` now includes a list of in-flight HTLCs (#2442 ).
22
+ * ` Event::PaymentForwarded ` now includes ` skimmed_fee_msat ` (#2858 ).
23
+ * The ` hashbrown ` dependency has been upgraded and the use of ` ahash ` as the
24
+ no-std hash table hash function has been removed. As a consequence, LDK's
25
+ ` Hash{Map,Set} ` s no longer feature several constructors when LDK is built
26
+ with no-std; see the ` util::hash_tables ` module instead. On platforms that
27
+ ` getrandom ` supports, setting the ` possiblyrandom/getrandom ` feature flag
28
+ will ensure hash tables are resistant to HashDoS attacks, though the
29
+ ` possiblyrandom ` crate should detect most common platforms (#2810 , #2891 ).
30
+ * ` ChannelMonitor ` -originated requests to the ` ChannelSigner ` can now fail and
31
+ be retried using ` ChannelMonitor::signer_unblocked ` (#2816 ).
32
+ * ` SpendableOutputDescriptor::to_psbt_input ` now includes the ` witness_script `
33
+ where available as well as new proprietary data which can be used to
34
+ re-derive some spending keys from the base key (#2761 , #3004 ).
35
+ * ` OutPoint::to_channel_id ` has been removed in favor of
36
+ ` ChannelId::v1_from_funding_outpoint ` in preparation for v2 channels with a
37
+ different ` ChannelId ` derivation scheme (#2797 ).
38
+ * ` PeerManager::get_peer_node_ids ` has been replaced with ` list_peers ` and
39
+ ` peer_by_node_id ` , which provide more details (#2905 ).
40
+ * ` Bolt11Invoice::get_payee_pub_key ` is now provided (#2909 ).
41
+ * ` Default[Message]Router ` now take an ` entropy_source ` argument (#2847 ).
42
+ * ` ClosureReason::HTLCsTimedOut ` has been separated out from
43
+ ` ClosureReason::HolderForceClosed ` as it is the most common case (#2887 ).
44
+ * ` ClosureReason::CooperativeClosure ` is now split into
45
+ ` {Counterparty,Locally}Initiated ` variants (#2863 ).
46
+ * ` Event::ChannelPending::channel_type ` is now provided (#2872 ).
47
+ * ` PaymentForwarded::{prev,next}_user_channel_id ` are now provided (#2924 ).
48
+ * Channel init messages have been refactored towards V2 channels (#2871 ).
49
+ * ` BumpTransactionEvent ` now contains the channel and counterparty (#2873 ).
50
+ * ` util::scid_utils ` is now public, with some trivial utilities to examine
51
+ short channel ids (#2694 ).
52
+ * ` DirectedChannelInfo::{source,target} ` are now public (#2870 ).
53
+ * Bounds in ` lightning-background-processor ` were simplified by using
54
+ ` AChannelManager ` (#2963 ).
55
+ * The ` Persist ` impl for ` KVStore ` no longer requires ` Sized ` , allowing for
56
+ the use of ` dyn KVStore ` as ` Persist ` (#2883 , #2976 ).
57
+ * ` From<PaymentPreimage> ` is now implemented for ` PaymentHash ` (#2918 ).
58
+ * ` NodeId::from_slice ` is now provided (#2942 ).
59
+ * ` ChannelManager ` deserialization may now fail with ` DangerousValue ` when
60
+ LDK's persistence API was violated (#2974 ).
61
+
62
+ ## Bug Fixes
63
+ * Excess fees on counterparty commitment transactions are now included in the
64
+ dust exposure calculation. This lines behavior up with some cases where
65
+ transaction fees can be burnt, making them effectively dust exposure (#3045 ).
66
+ * ` Future ` s used as an ` std::...::Future ` could grow in size unbounded if it
67
+ was never woken. For those not using async persistence and using the async
68
+ ` lightning-background-processor ` , this could cause a memory leak in the
69
+ ` ChainMonitor ` (#2894 ).
70
+ * Inbound channel requests that fail in
71
+ ` ChannelManager::accept_inbound_channel ` would previously have stalled from
72
+ the peer's perspective as no ` error ` message was sent (#2953 ).
73
+ * Blinded path construction has been tuned to select paths more likely to
74
+ succeed, improving BOLT12 payment reliability (#2911 , #2912 ).
75
+ * After a reorg, ` lightning-transaction-sync ` could have failed to follow a
76
+ transaction that LDK needed information about (#2946 ).
77
+ * ` RecipientOnionFields ` ' ` custom_tlvs ` are now propagated to recipients when
78
+ paying with blinded paths (#2975 ).
79
+ * ` Event::ChannelClosed ` is now properly generated and peers are properly
80
+ notified for all channels that as a part of a batch channel open fail to be
81
+ funded (#3029 ).
82
+ * In cases where user event processing is substantially delayed such that we
83
+ complete multiple round-trips with our peers before a ` PaymentSent ` event is
84
+ handled and then restart without persisting the ` ChannelManager ` after having
85
+ persisted a ` ChannelMonitor[Update] ` , on startup we may have ` Err ` d trying to
86
+ deserialize the ` ChannelManager ` (#3021 ).
87
+ * If a peer has relatively high latency, ` PeerManager ` may have failed to
88
+ establish a connection (#2993 ).
89
+ * ` ChannelUpdate ` messages broadcasted for our own channel closures are now
90
+ slightly more robust (#2731 ).
91
+ * Deserializing malformed BOLT11 invoices may have resulted in an integer
92
+ overflow panic in debug builds (#3032 ).
93
+ * In exceedingly rare cases (no cases of this are known), LDK may have created
94
+ an invalid serialization for a ` ChannelManager ` (#2998 ).
95
+ * Message processing latency handling BOLT12 payments has been reduced (#2881 ).
96
+ * Latency in processing ` Event::SpendableOutputs ` may be reduced (#3033 ).
97
+
98
+ ## Node Compatibility
99
+ * LDK's blinded paths were inconsistent with other implementations in several
100
+ ways, which have been addressed (#2856 , #2936 , #2945 ).
101
+ * LDK's messaging blinded paths now support the latest features which some
102
+ nodes may begin relying on soon (#2961 ).
103
+ * LDK's BOLT12 structs have been updated to support some last-minute changes to
104
+ the spec (#3017 , #3018 ).
105
+ * CLN v24.02 requires the ` gossip_queries ` feature for all peers, however LDK
106
+ by default does not set it for those not using a ` P2PGossipSync ` (e.g. those
107
+ using RGS). This change was reverted in CLN v24.02.2 however for now LDK
108
+ always sets the ` gossip_queries ` feature. This change is expected to be
109
+ reverted in a future LDK release (#2959 ).
110
+
111
+ ## Security
112
+ 0.0.123 fixes a denial-of-service vulnerability which we believe to be reachable
113
+ from untrusted input when parsing invalid BOLT11 invoices containing non-ASCII
114
+ characters.
115
+ * BOLT11 invoices with non-ASCII characters in the human-readable-part may
116
+ cause an out-of-bounds read attempt leading to a panic (#3054 ). Note that all
117
+ BOLT11 invoices containing non-ASCII characters are invalid.
118
+
119
+ In total, this release features 150 files changed, 19307 insertions, 6306
120
+ deletions in 360 commits since 0.0.121 from 17 authors, in alphabetical order:
121
+
122
+ * Arik Sosman
123
+ * Duncan Dean
124
+ * Elias Rohrer
125
+ * Evan Feenstra
126
+ * Jeffrey Czyz
127
+ * Keyue Bao
128
+ * Matt Corallo
129
+ * Orbital
130
+ * Sergi Delgado Segura
131
+ * Valentine Wallace
132
+ * Willem Van Lint
133
+ * Wilmer Paulino
134
+ * benthecarman
135
+ * jbesraa
136
+ * olegkubrakov
137
+ * optout
138
+ * shaavan
139
+
140
+
141
+ # 0.0.122 - Apr 09, 2024 - "That Which Is Untested Is Broken"
142
+
143
+ ## Bug Fixes
144
+ * ` Route ` objects did not successfully round-trip through de/serialization
145
+ since LDK 0.0.117, which has now been fixed (#2897 ).
146
+ * Correct deserialization of unknown future enum variants. This ensures
147
+ downgrades from future versions of LDK do not result in read failures or
148
+ corrupt reads in cases where enums are written (#2969 ).
149
+ * When hitting lnd bug 6039, our workaround previously resulted in
150
+ ` ChannelManager ` persistences on every round-trip with our peer. These
151
+ useless persistences are now skipped (#2937 ).
152
+
153
+ In total, this release features 4 files changed, 99 insertions, 55
154
+ deletions in 6 commits from 1 author, in alphabetical order:
155
+ * Matt Corallo
156
+
157
+
1
158
# 0.0.121 - Jan 22, 2024 - "Unwraps are Bad"
2
159
3
160
## Bug Fixes
@@ -17,6 +174,7 @@ deletions in 4 commits from 2 authors, in alphabetical order:
17
174
* Jeffrey Czyz
18
175
* Matt Corallo
19
176
177
+
20
178
# 0.0.120 - Jan 17, 2024 - "Unblinded Fuzzers"
21
179
22
180
## API Updates
@@ -65,6 +223,7 @@ deletions in 79 commits from 9 authors, in alphabetical order:
65
223
* optout
66
224
* shuoer86
67
225
226
+
68
227
# 0.0.119 - Dec 15, 2023 - "Spring Cleaning for Christmas"
69
228
70
229
## API Updates
0 commit comments