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 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 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
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 a
ChannelMonitorUpdate
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 the
background-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).
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