Skip to content

Commit ea0c318

Browse files
committed
Add draft 0.1 release notes
1 parent 3c356ab commit ea0c318

12 files changed

+173
-64
lines changed

CHANGELOG.md

+173
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,176 @@
1+
# 0.1 - Jan XXX, 2025 - XXX
2+
3+
## API Updates
4+
* The `lightning-liquidity` crate has been moved into the `rust-lightning`
5+
git tree, enabling support for both sides of the LSPS channel open
6+
negotiation protocols (#3436).
7+
* Since its last alpha release, `lightning-liquidity` has also gained support
8+
for acting as an LSPS1 client (#3436).
9+
* This release includes support for BIP 353 Human Readable Names resolution.
10+
With the `dnssec` feature enabled, simply call `ChannelManager`'s
11+
`pay_for_offer_from_human_readable_name` with a list of lightning nodes that
12+
have the `dns_resolver` feature flag set (e.g. those running LDK with the
13+
new `lightning_dns_resolver::OMDomainResolver` set up to resolve DNS queries
14+
for others) and a Human Readable Name (#3346, #3179, #3283).
15+
* Asynchronous `ChannelMonitorUpdate` persistence (i.e. the use of
16+
`ChannelMonitorUpdateStatus::InProgress`) is now considered beta-quality.
17+
There are no known issues with it, though the likelihood of unknown issues
18+
is high (#3414).
19+
* `ChannelManager`'s `send_payment_with_route` and `send_spontaneous_payment`
20+
were removed. Use `send_payment` and `send_spontaneous_payment_with_retry`
21+
(now renamed `send_spontaneous_payment`) instead (#3430).
22+
* `ChannelMonitor`s no longer need to be re-persisted after deserializing the
23+
`ChannelManager` before beginning normal operation. As such,
24+
`ChannelManagerReadArgs::channel_monitors` no longer requires mutable
25+
references (#3322). See the Backwards Compatibility section for more info.
26+
* Additional information is now stored in `ChannelMonitorUpdate`s which may
27+
increase the average size of `ChannelMonitorUpdate`s when claiming inbound
28+
payments substantially. The expected maximum size of `ChannelMonitorUpdate`s
29+
shouldn't change materially (#3322).
30+
* Redundant `Event::PaymentClaimed`s will be generated more frequently on
31+
startup compared to previous versions.
32+
`Event::PaymentClaim{able,ed}::payment_id` has been added to allow for more
33+
robust handling of redundant events on payments with duplicate
34+
`PaymentHash`es (#3303, #3322).
35+
* `ChannelMonitorUpdate::update_id`s no longer have a magic value (of
36+
`u64::MAX`) for updates after a channel has been closed. They are now
37+
always monotonically increasing (#3355).
38+
* The MSRV of `lightning-transaction-sync` has been increased to rustc 1.75 due
39+
to its HTTP client dependencies (#3528).
40+
* The default `ProbabilisticScoringFeeParameters` values now recommend specific
41+
ratios between different penalties, and default penalties now allow for
42+
higher fees in order to reduce payment latency (#3495).
43+
* On-chain state resolution now more aggressively batches claims into single
44+
transactions, reducing on-chain fee costs when resolving multiple HTLCs for a
45+
single channel force-closure. This also reduces the on-chain reserve
46+
requirements for nodes using anchor channels (#3340).
47+
* A `MigratableKVStore` trait was added (and implemented for
48+
`FilesystemStore`), enabling easy migration between `KVStore`s (#3481).
49+
* `InvoiceRequest::amount_msats` now returns the `offer`-implied amount if a
50+
Bitcoin-denominated amount was set in the `offer` and no amount was set
51+
directly in the `invoice_request` (#3535).
52+
* `Event::OpenChannelRequest::push_msat` has been replaced with an enum in
53+
preparation for the dual-funding protocol coming in a future release (#3137).
54+
* `GossipVerifier` now requires a `P2PGossipSync` which holds a reference to
55+
the `GossipVerifier` via an `Arc` (#3432).
56+
* The `max_level_*` features were removed as the performance gain compared to
57+
doing the limiting at runtime was negligible (#3431).
58+
* `ChannelManager::create_bolt11_invoice` was added, deprecating the
59+
`lightning::ln::invoice_utils` module (#3389).
60+
* The `bech32` dependency has been upgraded to 0.11 across crates (#3270).
61+
* Support for creating BOLT 12 `invoice_request`s with a static signing key
62+
rather than an ephemeral one has been removed (#3264).
63+
* The `Router` trait no longer extends the `MessageRouter` trait, creating an
64+
extra argument to `ChannelManager` construction (#3326).
65+
* The deprecated `AvailableBalances::balance_msat` has been removed in favor of
66+
`ChannelMonitor::get_claimable_balances` (#3243).
67+
* Deprecated re-exports of `Payment{Hash,Preimage,Secret}` and `features` were
68+
removed (#3359).
69+
* `bolt11_payment::*_from_zero_amount_invoice` methods were renamed
70+
`*_from_variable_amount_invoice` (#3397)
71+
* Offer `signing_pubkey` (and related struct names) have been renamed
72+
`issuer_signing_pubkey` (#3218).
73+
* `Event::PaymentForwarded::{prev,next}_node_id` were added (#3458).
74+
* `Event::ChannelClosed::last_local_balance_msat` was added (#3235).
75+
* `RoutingMessageHandler::handle_*` now all have a `node_id` argument (#3291).
76+
* `lightning::util::persist::MonitorName` has been exposed (#3376).
77+
* `ProbabilisticScorer::live_estimated_payment_success_probability` was added
78+
(#3420)
79+
* `EcdsaChannelSigner::sign_splicing_funding_input` was added to support an
80+
eventual splicing feature (#3316).
81+
* `{Payment,Offer}Id` now support lowercase-hex formatting (#3377).
82+
83+
## Bug Fixes
84+
* Fixed a rare case where a BOLT 12 payment may be made duplicatively if the
85+
node crashes while processing a BOLT 12 `invoice` message (#3313).
86+
* Fixed a bug where a malicious sender could cause a payment `Event` to be
87+
generated with an `OfferId` using a payment with a lower amount than the
88+
corresponding BOLT 12 offer would have required. The amount in the
89+
`Event::Payment{Claimable,Claimed}` were still correct (#3435).
90+
* The `ProbabilisticScorer` model and associated default scoring parameters
91+
were tweaked to be more predictive of real-world results (#3368, #3495).
92+
* `ProbabilisticScoringFeeParameters::base_penalty_amount_multiplier_msat` no
93+
longer includes any pending HTLCs we already have through channels in the
94+
graph, avoiding over-penalizing them in comparison to other channels (#3356).
95+
* A `ChannelMonitor` will no longer be archived if a `MonitorEvent` containing
96+
a preimage for another channel is pending. This fixes an issue where a
97+
payment preimage needed for another channel claim is lost if events go
98+
un-processed for 4038 blocks (#3450).
99+
* `std` builds no longer send the full gossip state to peers that do not
100+
request it (#3390).
101+
* `lightning-block-sync` listeners now receive `block_connected` calls, rather
102+
than always receiving `filtered_block_connected` calls (#3354).
103+
* Fixed a bug where some transactions were broadcasted one block before their
104+
locktime made them candidates for inclusion in the mempool (though they would
105+
be automatically re-broadcasted later, #3453).
106+
* `ChainMonitor` now persists `ChannelMonitor`s when their `Balance` set first
107+
goes empty, making `ChannelMonitor` pruning more reliable on nodes that are
108+
only online briefly (e.g. mobile nodes, #3442).
109+
* BOLT 12 invoice requests now better handle intermittent internet connectivity
110+
(e.g. on mobile devices with app interruptions, #3010).
111+
* Broadcast-gossip `MessageSendEvent`s from the `ChannelMessageHandler` are now
112+
delivered to peers even if the peer is behind in processing relayed gossip.
113+
This ensures our own gossip propagates well even if we have very limited
114+
upload bandwidth (#3142).
115+
* Fixed a bug where calling `OutputSweeper::transactions_confirmed` with
116+
transactions from anything but the latest block may have triggered a spurious
117+
assertion in debug mode (#3524).
118+
119+
## Performance Improvements
120+
* LDK now verifies `channel_update` gossip messages without holding a lock,
121+
allowing additional parallelism during gossip sync (#3310).
122+
* LDK now checks if it already has certain gossip messages before verifying the
123+
message signatures, reducing CPU usage during gossip sync after the first
124+
startup (#3305).
125+
126+
## Node Compatibility
127+
* LDK now handles fields in the experimental range of BOLT 12 messages (#3237).
128+
129+
## Backwards Compatibility
130+
* Nodes with pending forwarded HTLCs or unclaimed payments cannot be
131+
upgraded directly from 0.0.123 or earlier to 0.1. Instead, they must
132+
first either resolve all pending HTLCs (including those pending
133+
resolution on-chain), or run 0.0.124 or 0.0.125 and resolve any HTLCs that
134+
were originally forwarded or received running 0.0.123 or earlier (#3355).
135+
* `ChannelMonitor`s not being re-persisted after deserializing the
136+
`ChannelManager` only applies to upgraded nodes *after* a startup with the
137+
old semantics completes at least once. In other words, you must deserialize
138+
the `ChannelManager` with an upgraded LDK, persist the `ChannelMonitor`s as
139+
you would on pre-0.1 versions of LDK, then continue to normal startup once,
140+
and for startups thereafter you can take advantage of the new semantics
141+
avoiding redundant persistence on startup (#3322).
142+
* Pending inbound payments paying a BOLT 12 `invoice` issued prior to upgrade
143+
to LDK 0.1 will fail. Issued BOLT 12 `offer`s remain payable (#3435).
144+
* `UserConfig::accept_mpp_keysend` was removed, thus the presence of pending
145+
inbound MPP keysend payments will prevent downgrade to LDK 0.0.115 and
146+
earlier (#3439).
147+
* Inbound payments initialized using the removed
148+
`ChannelManager::create_inbound_payment{,_for_hash}_legacy` API will no
149+
longer be accepted by LDK 0.1 (#3383).
150+
* Downgrading to prior versions of LDK after using `ChannelManager`'s
151+
`unsafe_manual_funding_transaction_generated` may cause `ChannelManager`
152+
deserialization to fail (#3259).
153+
* `ChannelDetails` serialized with LDK 0.1+ read with versions prior to 0.1
154+
will have `balance_msat` equal to `next_outbound_htlc_limit_msat` (#3243).
155+
156+
## Security
157+
0.1 fixes a funds-theft vulnerability when paying BOLT 12 offers as well as a
158+
funds-lockup denial-of-service issue for anchor channels.
159+
* When paying a BOLT 12 offer, if the recipient responds to our
160+
`invoice_request` with an `invoice` which had an amount different from the
161+
amount we intended to pay (either from the `offer` or the `amount_msats`
162+
passed to `ChannelManager::pay_for_offer`), LDK would pay the amount from the
163+
`invoice`. As a result, a malicious recipient could cause us to overpay the
164+
amount we intended to pay (#3535).
165+
* Fixed a bug where a counterparty can cause funds of ours to be locked up
166+
by broadcasting a revoked commitment transaction and following HTLC
167+
transactions in specific formats when using an anchor channel. The funds can
168+
be recovered by upgrading to 0.1 and replaying the counterparty's broadcasted
169+
transactions (using `Confirm::transactions_confirmed`) (#3537).
170+
* Various denial-of-service issues in the formerly-alpha `lightning-liquidity`
171+
crate have been addressed (#3436, #3493).
172+
173+
1174
# 0.0.125 - Oct 14, 2024 - "Delayed Beta Testing"
2175

3176
## Bug Fixes

pending_changelog/3137-channel-negotiation-type.txt

-7
This file was deleted.

pending_changelog/3243-remove-balance_msat.txt

-1
This file was deleted.

pending_changelog/3259-no-downgrade.txt

-4
This file was deleted.

pending_changelog/3322-a.txt

-6
This file was deleted.

pending_changelog/3322-b.txt

-7
This file was deleted.

pending_changelog/3358-include-counterparty-id-in-payment-forwarded.txt

-7
This file was deleted.

pending_changelog/3383-deprecate-old-inbounds.txt

-6
This file was deleted.

pending_changelog/3435-authenticate-payment-receive-tlvs.txt

-9
This file was deleted.

pending_changelog/3439-remove-accept-mpp-keysend-cfg.txt

-3
This file was deleted.

pending_changelog/matt-no-upgrade-skip.txt

-6
This file was deleted.

pending_changelog/matt-persist-preimage-on-upgrade.txt

-8
This file was deleted.

0 commit comments

Comments
 (0)