LDK v0.0.115: Rebroadcast the Bugfixes
Lightning Dev Kit is a highly modular Bitcoin Lightning library written in Rust.
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 inInvoice
deserialization, sending, and receiving (via a newRecipientOnionFields
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
featureesplora-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 fetchbitcoin
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 beNone
for payments initiated on 0.0.115 which fail on an earlier version (#2063).Route
s andPaymentParameters
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 aChannelMonitor
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
maypoll
aFuture
which has already completed (#2081). - Fixed deserialization of
u16
arrays. This bug may have previously corrupted the historical buckets in aProbabilisticScorer
. 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 nowSend
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 bothno-std
and serde (#2187) - Fix an issue where the
background-processor
would not wake when aChannelMonitorUpdate
completed asynchronously, causing delays (#2090). - Fix an issue where
process_events_async
would exit immediately (#2145). Router
calls from theChannelManager
now callfind_route_with_id
rather thanfind_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 thebackground-processor
or fromChainMonitor::rebroadcast_pending_claims
. This should substantially increase transaction confirmation reliability
without relying on downstreamTransactionBroadcaster
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).