0.0.115 - Apr 24, 2023 - "Rebroadcast the Bugfixes"
API Updates
===========
* The MSRV of the main LDK crates has been increased to 1.48 (#2107).
* Attempting to claim an un-expired payment on a channel which has closed no
longer fails. The expiry time of payments is exposed via
`PaymentClaimable::claim_deadline` (#2148).
* `payment_metadata` is now supported in `Invoice` deserialization, sending,
and receiving (via a new `RecipientOnionFields` struct) (#2139, #2127).
* `Event::PaymentFailed` now exposes a failure reason (#2142).
* BOLT12 messages now support stateless generation and validation (#1989).
* The `NetworkGraph` is now pruned of stale data after RGS processing (#2161).
* Max inbound HTLCs in-flight can be changed in the handshake config (#2138).
* `lightning-transaction-sync` feature `esplora-async-https` was added (#2085).
* A `ChannelPending` event is now emitted after the initial handshake (#2098).
* `PaymentForwarded::outbound_amount_forwarded_msat` was added (#2136).
* `ChannelManager::list_channels_by_counterparty` was added (#2079).
* `ChannelDetails::feerate_sat_per_1000_weight` was added (#2094).
* `Invoice::fallback_addresses` was added to fetch `bitcoin` types (#2023).
* The offer/refund description is now exposed in `Invoice{,Request}` (#2206).
Backwards Compatibility
=======================
* Payments sent with the legacy `*_with_route` methods on LDK 0.0.115+ will no
longer be retryable via the LDK 0.0.114- `retry_payment` method (#2139).
* `Event::PaymentPathFailed::retry` was removed and will always be `None` for
payments initiated on 0.0.115 which fail on an earlier version (#2063).
* `Route`s and `PaymentParameters` with blinded path information will not be
readable on prior versions of LDK. Such objects are not currently constructed
by LDK, but may be when processing BOLT12 data in a coming release (#2146).
* Providing `ChannelMonitorUpdate`s generated by LDK 0.0.115 to a
`ChannelMonitor` on 0.0.114 or before may panic (#2059). Note that this is
in general unsupported, and included here only for completeness.
Bug Fixes
=========
* Fixed a case where `process_events_async` may `poll` a `Future` which has
already completed (#2081).
* Fixed deserialization of `u16` arrays. This bug may have previously corrupted
the historical buckets in a `ProbabilisticScorer`. Users relying on the
historical buckets may wish to wipe their scorer on upgrade to remove corrupt
data rather than waiting on it to decay (#2191).
* The `process_events_async` task is now `Send` and can thus be polled on a
multi-threaded runtime (#2199).
* Fixed a missing macro export causing
`impl_writeable_tlv_based_enum{,_upgradable}` calls to not compile (#2091).
* Fixed compilation of `lightning-invoice` with both `no-std` and serde (#2187)
* Fix an issue where the `background-processor` would not wake when a
`ChannelMonitorUpdate` completed asynchronously, causing delays (#2090).
* Fix an issue where `process_events_async` would exit immediately (#2145).
* `Router` calls from the `ChannelManager` now call `find_route_with_id` rather
than `find_route`, as was intended and described in the API (#2092).
* Ensure `process_events_async` always exits if any sleep future returns true,
not just if all sleep futures repeatedly return true (#2145).
* `channel_update` messages no longer set the disable bit unless the peer has
been disconnected for some time. This should resolve cases where channels are
disabled for extended periods of time (#2198).
* We no longer remove CLN nodes from the network graph for violating the BOLT
spec in some cases after failing to pay through them (#2220).
* Fixed a debug assertion which may panic under heavy load (#2172).
* `CounterpartyForceClosed::peer_msg` is now wrapped in UntrustedString (#2114)
* Fixed a potential deadlock in `funding_transaction_generated` (#2158).
Security
========
* Transaction re-broadcasting is now substantially more aggressive, including a
new regular rebroadcast feature called on a timer from the
`background-processor` or from `ChainMonitor::rebroadcast_pending_claims`.
This should substantially increase transaction confirmation reliability
without relying on downstream `TransactionBroadcaster` implementations for
rebroadcasting (#2203, #2205, #2208).
* Implemented the changes from BOLT PRs #1031, #1032, and #1040 which resolve a
privacy vulnerability which allows an intermediate node on the path to
discover the final destination for a payment (#2062).
In total, this release features 110 files changed, 11928 insertions, 6368
deletions in 215 commits from 21 authors, in alphabetical order:
* Advait
* Alan Cohen
* Alec Chen
* Allan Douglas R. de Oliveira
* Arik Sosman
* Elias Rohrer
* Evan Feenstra
* Jeffrey Czyz
* John Cantrell
* Lucas Soriano del Pino
* Marc Tyndel
* Matt Corallo
* Paul Miller
* Steven
* Steven Williamson
* Steven Zhao
* Tony Giorgio
* Valentine Wallace
* Wilmer Paulino
* benthecarman
* munjesi
-----BEGIN PGP SIGNATURE-----