Skip to content

Commit b023eed

Browse files
authored
Merge pull request #3278 from TheBlueMatt/2024-08-124-relnotes
Add an 0.0.124 CHANGELOG entry
2 parents 187a2cb + c9de257 commit b023eed

File tree

17 files changed

+244
-75
lines changed

17 files changed

+244
-75
lines changed

CHANGELOG.md

+214
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,217 @@
1+
# 0.0.124 - Sep 3, 2024 - "Papercutting Feature Requests"
2+
3+
## API Updates
4+
* `rust-bitcoin` has been updated to 0.32. The new `bitcoin-io` crate is now
5+
used for all IO traits, irrespective of the features set on LDK crates.
6+
LDK crates no longer automatically force features on dependent crates where
7+
possible, allowing different `std`/`no-std` settings between LDK and
8+
rust-bitcoin crates (e.g. to disable `std` on LDK to ensure system time is
9+
not accessed while using `bitcoin-io`'s `std` feature). (#3063, #3239, #3249).
10+
* A new `lightning_types` crate was added which contains various top-level
11+
types. Using types from `lightning::ln::features` or
12+
`Payment{Hash,Preimage,Secret}` from `lightning::ln` or
13+
`lightning::ln::types` is now deprecated. The new crate is re-exported as
14+
`lightning::types` (#3234, #3253).
15+
* `lightning` now depends on `lightning-invoice`, rather than the other way
16+
around. The `lightning_invoice::payment` module has moved to
17+
`lightning::ln::bolt11_payment` and `lightning_invoice::utils` to
18+
`lightning::ln::invoice_utils` (#3234).
19+
* Event handlers may now return errors, causing most events to be replayed
20+
immediately without blocking the background processor. See documentation on
21+
individual `Event`s for more information on replay (#2995).
22+
* `ChannelDetails::balance_msat` is deprecated in favor of
23+
`ChainMonitor::get_claimable_balances` and the `Balance`, which now contains
24+
substantially more details and more accurately calculates a node-wide
25+
balance when `Balance::claimable_amount_satoshis` are summed (#3212, #3247).
26+
* `ConfirmationTarget` has two new variants - a `MaximumFeeEstimate` which can
27+
help to avoid spurious force-closes by ensuring we always accept feerates up
28+
to this value from peers as sane and a `UrgentOnChainSweep`, replacing
29+
`OnChainSweep` and only being used when the on-chain sweep is urgent (#3268).
30+
* All `ChannelMonitor`s are no longer persisted after each block connection,
31+
instead spreading them out over a handful of blocks to reduce load spikes.
32+
Note that this will increase the incidence of `ChannelMonitor`s that have
33+
different best blocks on startup, requiring some additional chain replay
34+
(but only on some `ChannelMonitor`s) on startup for `Listen` users (#2966).
35+
* A new format for Rapid Gossip Sync data is now supported which contains
36+
additional node metadata and is more extensible (#3098).
37+
* `ChannelManager::send_payment_with_route` is now deprecated in favor of the
38+
much easier to use `Channelmanager::send_payment`. Those who wish to manually
39+
select the route such payments go over should do so by matching the
40+
`payment_id` passed to `send_payment` in `Router::find_route_with_id` (#3224)
41+
* `lightning-transaction-sync` now takes most `Confirm`s as a generic `Deref`.
42+
You may need an explicit `as &(dyn Confirm)` to update existing code (#3101).
43+
* HTLCs will now be forwarded over any channel with a peer, rather than only
44+
the specific channel requested by the payment sender (#3127).
45+
* `Event::PaymentFailed` is now used in place of `Event::InvoiceRequestFailed`,
46+
holding an `Option` for the payment hash, which will be `None` when no
47+
invoice has been received (#3192).
48+
* `ChannelManager` now supports intercepting and manually paying
49+
`Bolt12Invoice`s, see `UserConfig::manually_handle_bolt12_invoices` (#3078).
50+
* `logger::Record`s now contain a `PaymentHash` (#2930).
51+
* `ChainMonitor` no longer uses an opaque `MonitorUpdateId`, opting to reuse
52+
the `ChannelMonitorUpdate::update_id` instead. Note that you no longer have
53+
to call `ChainMonitor::channel_monitor_updated` for
54+
`ChannelMonitorUpdateStatus::InProgress` updates to a monitor that were
55+
started without a `ChannelMonitorUpdate` (#2957).
56+
* `NodeAnnouncementInfo` is now an enum holding either a gossip message or
57+
the important fields, reducing the memory usage of `NetworkGraph` (#3072).
58+
* Onion message handlers now include a message context, which allows for
59+
blinded path authentication (#3085, #3202).
60+
* `ChannelManager` now supports funding with only a txid and output index, see
61+
`ChannelManager::unsafe_manual_funding_transaction_generated` (#3024).
62+
* BOLT 12 invoice requests now go out over, and accept responses over, multiple
63+
paths (#3087).
64+
* `OnionMessenger` now supports intercepting and re-forwarding onion messages
65+
for peers that are offline at the time of receipt when constructed with
66+
`new_with_offline_peer_interception` (#2973).
67+
* Onion message handling trait methods now generally take a `Responder` which
68+
can be used to create a `ResponseInstruction` to better control how responses
69+
are sent. The `ResponseInstruction` can also be converted to
70+
`MessageSendInstructions` which can be passed to `OnionMessenger`'s
71+
`send_onion_message` to respond asynchronously (#2907, #2996, #3263).
72+
* `OnionMessenger::process_pending_events_async` was added (#3060).
73+
* Blinded paths used for BOLT 12 `Offer`/`Refund`s are now compact when they
74+
expire relatively soon, making them somewhat smaller (#3011, #3080).
75+
* `ChannelManager::force_close_*` now take a err msg to send to peers (#2889).
76+
* `ChannelDetails::is_public` has been renamed to `is_announced` and
77+
`ChannelHandshakeConfig::announced_channel` to `announce_for_forwarding` to
78+
address various misconceptions about the purpose of announcement (#3257).
79+
* `BlindedPath`s are now split into `BlindedMessagePath`s and
80+
`BlindedPaymentPath`s and `advance_path_by_one` added to each (#3182).
81+
* `BlindedPaymentPath` now includes the `BlindedPayInfo` (#3245).
82+
* BOLT 12 `Offer`/`Refund` builders no longer require a description, instead
83+
allowing it to be set on the builder itself (#3018).
84+
* The `{Inbound,Outbound}HTLCState{,Details}` and `ChannelDetails` structs have
85+
moved to the `ln::channel_state` module (#3089).
86+
* `Event::OpenChannelRequest` now contains `params` and `is_announced` (#3019).
87+
* Peers are no longer disconnected when we force-close a channel (#3088).
88+
* BOLT12 `Offer` and `Refund` now implement `Readable` (#2965).
89+
* `RecipientOnionFields` is now included in `Event::PaymentClaimed` (#3084).
90+
* `ClosureReason::HolderForceClosed::broadcasted_latest_txn` was added (#3107).
91+
* `EcdsaChannelSigner` no longer needs to be `Writeable` and the supertrait
92+
`WriteableEcdsaChannelSigner` has been removed (#3059).
93+
* `CustomMessageHandler::peer_{,dis}connected` were added (#3105).
94+
* `lightning_invoice::Description::as_inner()` was added (#3203).
95+
* Splice-related wire messages have been updated to the latest spec (#3129).
96+
97+
## Bug Fixes
98+
* `channel_update` messages are no longer extracted from failed payments and
99+
applied to the network graph via `Event::PaymentPathFailed`, preventing a
100+
node along the path from identifying the sender of a payment (#3083).
101+
* In order to prevent senders from identifying the recipient of a BOLT 12 offer
102+
that included a blinded path, cryptographic information from blinded paths
103+
are now included in the invoice request verification (#3085, #3139, #3242).
104+
* Routes are now length-limited based on the actual onion contents rather than
105+
a fixed value. This ensures no routes are generated that are unpayable when
106+
sending HTLCs with custom TLVs, blinded paths, or metadata (#3026, #3156).
107+
* Unannounced LDK nodes (or ones without a network graph) will now include
108+
unannounced peers as introduction points in blinded paths. This addresses
109+
issues where test networks were not usable for BOLT 12 due to failures to
110+
find paths over private channels to LDK nodes. It will also enable creating
111+
BOLT 12 offers for nodes with no local network graph (#3132).
112+
* If a channel partner fails to update the feerate on a channel for some time
113+
and prevailing network feerates increase, LDK will now force-close
114+
automatically to avoid being unable to claim our funds on-chain. In order to
115+
reduce false-positives, it does so by comparing the channel's fee against the
116+
minimum `ConfirmationTarget::MinAllowed{,Non}AnchorChannelRemoteFee` we've
117+
seen over the past day (and do not force-close if we haven't been running for
118+
a full day, #3037).
119+
* `MonitorUpdatingPersister` did not read `ChannelMonitorUpdate`s when
120+
archiving a `ChannelMonitor`, causing the archived `ChannelMonitor` to be
121+
missing some updates. Those updates were not removed from the `KVStore` and
122+
monitors being archived should have no pending updates as they were persisted
123+
on each new block for some time before archiving (#3276).
124+
* `CoinSelection`s selected for commitment transactions which did not contain a
125+
change output no longer result in broadcasting a non-standard transaction nor
126+
in under-paying the target feerate (#3285). Note that such a transaction
127+
would fail to propagate and LDK would have continued to bump the fee until a
128+
different `CoinSelection` is used which did contain a change output.
129+
* `invoice_error`s from BOLT 12 recipients now fail payments (#3085, #3192).
130+
* Fixed a bug which may lead to a missing `Event::ChannelClosed` and missing
131+
`Error` messages for peers when a bogus funding transaction is provided for a
132+
batch channel open (#3029).
133+
* Fixed an overflow in `RawBolt11Invoice::amount_pico_btc()` reachable via
134+
`Bolt11Invoice::amount_milli_satoshis()`, resulting in a debug panic or bogus
135+
value for invoices with invalid values (#3032).
136+
* In incredibly rare circumstances, when using the beta asynchronous
137+
persistence, it is possible that the preimage for an MPP claim could fail to
138+
be persisted in the `ChannelMonitor` for one or more MPP parts, resulting in
139+
only some of the payment's value being claimed (#3120).
140+
* A rare race was fixed which could lead to `ChannelMonitorUpdate`s appearing
141+
after a full `ChannelMonitor` persistence that already contained the same
142+
update. This could have caused a panic on startup for users of the
143+
`MonitorUpdatingPersister` in rare cases after a crash (#3196).
144+
* Background Processor is now woken from `ChainMonitor` when new blocks appear,
145+
reducing the worst-case latency to see an `Event::SpendableOutputs` (#3033).
146+
* `OnionMessenger::get_update_future` was added, allowing it to wake the
147+
background processor to ensure `Event`s are processed quickly (#3194).
148+
* `CoinSelection`s overpaying the target feerate by more than 1% no longer
149+
leads to a debug assertion (#3285).
150+
151+
## Backwards Compatibility
152+
* BOLT 12 `Offer`s created in prior versions are still valid but are at risk of
153+
deanonymization attacks allowing identification of the recipient node (#3139)
154+
* BOLT 12 outbound payments in state `RecentPaymentDetails::AwaitingInvoice`
155+
will eventually time out after upgrade to 0.0.124 as any received invoice
156+
will be considered invalid (#3139).
157+
* BOLT 12 `Refund`s created in prior version with non-empty `Refund::paths` are
158+
considered invalid by `ChannelManager`. Any attempts to claim them will be
159+
ignored. `Refund`s without blinded paths are unaffected (#3139).
160+
* The format written by `impl_writeable_tlv_based_enum[_upgradable]` for tuple
161+
variants has changed, only impacting LDK-external use of the macros (#3160).
162+
* An `Event::PaymentFailed` without a payment hash will deserialize to a
163+
payment hash of all-0s when downgrading (#3192).
164+
* `Event::PaymentFailed` reasons may be mapped to similar reasons that were
165+
available in previous versions on downgrade (#3192).
166+
167+
## Performance Improvements
168+
* Route-finding is 11-23% faster (#3103, #3104, #2803, #3188, on an Intel Xeon
169+
Silver 4116 (Skylake)).
170+
* `lightning-block-sync` now much better avoids lock contention during parallel
171+
requests for block data, speeding up gossip sync from multiple peers (#3197).
172+
173+
## Node Compatibility
174+
* 0.0.123 contained a workaround for CLN v24.02 requiring the `gossip_queries`
175+
feature for all peers. Since an updated CLN has now shipped which does not
176+
require this, the workaround has been reverted (#3172).
177+
* LDK now supports BOLT 12 Offers without an explicit signing public key,
178+
allowing it to pay more compact offers generated by other nodes (#3017).
179+
* LDK now supports BOLT 12 Offers without descriptions when no amount is
180+
present (#3018).
181+
* A bug was fixed which might have led to LDK spuriously rejecting
182+
`channel_update`s that use as-yet-undefined flag bits (#3144).
183+
184+
In total, this release features 312 files changed, 29853 insertions, 15480
185+
deletions in 549 commits since 0.0.123 from 26 authors, in alphabetical order:
186+
187+
* Alec Chen
188+
* Arik Sosman
189+
* Duncan Dean
190+
* Elias Rohrer
191+
* Filip Gospodinov
192+
* G8XSU
193+
* Gursharan Singh
194+
* Harshit Verma
195+
* Jeffrey Czyz
196+
* Jiri Jakes
197+
* John Cantrell
198+
* Lalitmohansharma1
199+
* Matt Corallo
200+
* Matthew Rheaume
201+
* Max Fang
202+
* Mirebella
203+
* Tobin C. Harding
204+
* Valentine Wallace
205+
* Vincenzo Palazzo
206+
* Willem Van Lint
207+
* benthecarman
208+
* cooltexture
209+
* esraa
210+
* jbesraa
211+
* optout
212+
* shaavan
213+
214+
1215
# 0.0.123 - May 08, 2024 - "BOLT12 Dust Sweeping"
2216

3217
## API Updates

lightning-background-processor/Cargo.toml

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lightning-background-processor"
3-
version = "0.0.124-rc1"
3+
version = "0.0.124"
44
authors = ["Valentine Wallace <[email protected]>"]
55
license = "MIT OR Apache-2.0"
66
repository = "https://github.com/lightningdevkit/rust-lightning"
@@ -21,14 +21,14 @@ default = ["std"]
2121

2222
[dependencies]
2323
bitcoin = { version = "0.32.2", default-features = false }
24-
lightning = { version = "0.0.124-rc1", path = "../lightning", default-features = false }
25-
lightning-rapid-gossip-sync = { version = "0.0.124-rc1", path = "../lightning-rapid-gossip-sync", default-features = false }
24+
lightning = { version = "0.0.124", path = "../lightning", default-features = false }
25+
lightning-rapid-gossip-sync = { version = "0.0.124", path = "../lightning-rapid-gossip-sync", default-features = false }
2626

2727
[dev-dependencies]
2828
tokio = { version = "1.35", features = [ "macros", "rt", "rt-multi-thread", "sync", "time" ] }
29-
lightning = { version = "0.0.124-rc1", path = "../lightning", features = ["_test_utils"] }
30-
lightning-invoice = { version = "0.32.0-rc1", path = "../lightning-invoice" }
31-
lightning-persister = { version = "0.0.124-rc1", path = "../lightning-persister" }
29+
lightning = { version = "0.0.124", path = "../lightning", features = ["_test_utils"] }
30+
lightning-invoice = { version = "0.32.0", path = "../lightning-invoice" }
31+
lightning-persister = { version = "0.0.124", path = "../lightning-persister" }
3232

3333
[lints]
3434
workspace = true

lightning-block-sync/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lightning-block-sync"
3-
version = "0.0.124-rc1"
3+
version = "0.0.124"
44
authors = ["Jeffrey Czyz", "Matt Corallo"]
55
license = "MIT OR Apache-2.0"
66
repository = "https://github.com/lightningdevkit/rust-lightning"
@@ -19,13 +19,13 @@ rpc-client = [ "serde_json", "chunked_transfer" ]
1919

2020
[dependencies]
2121
bitcoin = "0.32.2"
22-
lightning = { version = "0.0.124-rc1", path = "../lightning" }
22+
lightning = { version = "0.0.124", path = "../lightning" }
2323
tokio = { version = "1.35", features = [ "io-util", "net", "time", "rt" ], optional = true }
2424
serde_json = { version = "1.0", optional = true }
2525
chunked_transfer = { version = "1.4", optional = true }
2626

2727
[dev-dependencies]
28-
lightning = { version = "0.0.124-rc1", path = "../lightning", features = ["_test_utils"] }
28+
lightning = { version = "0.0.124", path = "../lightning", features = ["_test_utils"] }
2929
tokio = { version = "1.35", features = [ "macros", "rt" ] }
3030

3131
[lints]

lightning-custom-message/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lightning-custom-message"
3-
version = "0.0.124-rc1"
3+
version = "0.0.124"
44
authors = ["Jeffrey Czyz"]
55
license = "MIT OR Apache-2.0"
66
repository = "https://github.com/lightningdevkit/rust-lightning"
@@ -15,7 +15,7 @@ rustdoc-args = ["--cfg", "docsrs"]
1515

1616
[dependencies]
1717
bitcoin = "0.32.2"
18-
lightning = { version = "0.0.124-rc1", path = "../lightning" }
18+
lightning = { version = "0.0.124", path = "../lightning" }
1919

2020
[lints]
2121
workspace = true

lightning-invoice/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "lightning-invoice"
33
description = "Data structures to parse and serialize BOLT11 lightning invoices"
4-
version = "0.32.0-rc1"
4+
version = "0.32.0"
55
authors = ["Sebastian Geisler <[email protected]>"]
66
documentation = "https://docs.rs/lightning-invoice/"
77
license = "MIT OR Apache-2.0"
@@ -19,7 +19,7 @@ std = []
1919

2020
[dependencies]
2121
bech32 = { version = "0.9.1", default-features = false }
22-
lightning-types = { version = "0.1.0-rc1", path = "../lightning-types", default-features = false }
22+
lightning-types = { version = "0.1.0", path = "../lightning-types", default-features = false }
2323
serde = { version = "1.0.118", optional = true }
2424
bitcoin = { version = "0.32.2", default-features = false, features = ["secp-recovery"] }
2525

lightning-net-tokio/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lightning-net-tokio"
3-
version = "0.0.124-rc1"
3+
version = "0.0.124"
44
authors = ["Matt Corallo"]
55
license = "MIT OR Apache-2.0"
66
repository = "https://github.com/lightningdevkit/rust-lightning/"
@@ -16,12 +16,12 @@ rustdoc-args = ["--cfg", "docsrs"]
1616

1717
[dependencies]
1818
bitcoin = "0.32.2"
19-
lightning = { version = "0.0.124-rc1", path = "../lightning" }
19+
lightning = { version = "0.0.124", path = "../lightning" }
2020
tokio = { version = "1.35", features = [ "rt", "sync", "net", "time" ] }
2121

2222
[dev-dependencies]
2323
tokio = { version = "1.35", features = [ "macros", "rt", "rt-multi-thread", "sync", "net", "time" ] }
24-
lightning = { version = "0.0.124-rc1", path = "../lightning", features = ["_test_utils"] }
24+
lightning = { version = "0.0.124", path = "../lightning", features = ["_test_utils"] }
2525

2626
[lints]
2727
workspace = true

lightning-persister/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lightning-persister"
3-
version = "0.0.124-rc1"
3+
version = "0.0.124"
44
authors = ["Valentine Wallace", "Matt Corallo"]
55
license = "MIT OR Apache-2.0"
66
repository = "https://github.com/lightningdevkit/rust-lightning"
@@ -15,7 +15,7 @@ rustdoc-args = ["--cfg", "docsrs"]
1515

1616
[dependencies]
1717
bitcoin = "0.32.2"
18-
lightning = { version = "0.0.124-rc1", path = "../lightning" }
18+
lightning = { version = "0.0.124", path = "../lightning" }
1919

2020
[target.'cfg(windows)'.dependencies]
2121
windows-sys = { version = "0.48.0", default-features = false, features = ["Win32_Storage_FileSystem", "Win32_Foundation"] }
@@ -24,7 +24,7 @@ windows-sys = { version = "0.48.0", default-features = false, features = ["Win32
2424
criterion = { version = "0.4", optional = true, default-features = false }
2525

2626
[dev-dependencies]
27-
lightning = { version = "0.0.124-rc1", path = "../lightning", features = ["_test_utils"] }
27+
lightning = { version = "0.0.124", path = "../lightning", features = ["_test_utils"] }
2828
bitcoin = { version = "0.32.2", default-features = false }
2929

3030
[lints]

lightning-rapid-gossip-sync/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lightning-rapid-gossip-sync"
3-
version = "0.0.124-rc1"
3+
version = "0.0.124"
44
authors = ["Arik Sosman <[email protected]>"]
55
license = "MIT OR Apache-2.0"
66
repository = "https://github.com/lightningdevkit/rust-lightning"
@@ -14,14 +14,14 @@ default = ["std"]
1414
std = []
1515

1616
[dependencies]
17-
lightning = { version = "0.0.124-rc1", path = "../lightning", default-features = false }
17+
lightning = { version = "0.0.124", path = "../lightning", default-features = false }
1818
bitcoin = { version = "0.32.2", default-features = false }
1919

2020
[target.'cfg(ldk_bench)'.dependencies]
2121
criterion = { version = "0.4", optional = true, default-features = false }
2222

2323
[dev-dependencies]
24-
lightning = { version = "0.0.124-rc1", path = "../lightning", features = ["_test_utils"] }
24+
lightning = { version = "0.0.124", path = "../lightning", features = ["_test_utils"] }
2525

2626
[lints]
2727
workspace = true

0 commit comments

Comments
 (0)