v0.0.116
0.0.116 - Jul 21, 2023 - "Anchoring the Roadmap"
API Updates
- Support for zero-HTLC-fee anchor output channels has been added and is now
considered beta (#2367). Users who set
ChannelHandshakeConfig::negotiate_anchors_zero_fee_htlc_tx
should be
prepared to handle the newEvent::BumpTransaction
, e.g. via the
BumpTransactionEventHandler
(#2089). Note that in order to do so you must
ensure you always have a reserve of available unspent on-chain funds to use
for CPFP. LDK currently makes no attempt to ensure this for you. - Users who set
ChannelHandshakeConfig::negotiate_anchors_zero_fee_htlc_tx
and wish to accept inbound anchor-based channels must do so manually by
settingUserConfig::manually_accept_inbound_channels
(#2368). - Support forwarding and accepting HTLCs with a reduced amount has been added,
to support LSPs skimming a fee on the penultimate hop (#2319). - BOLT11 and BOLT12 Invoice and related types have been renamed to include a
BOLTNN prefix, ensuring uniqueness inlightning{,-invoice}
crates (#2416). Score
rs now have an associated type which represents a parameter passed
when calculating penalties. This allows for the sameScore
r to be used with
different penalty calculation parameters (#2237).DefaultRouter
is no longer restrained to aMutex
-wrappedScore
,
allowing it to be used inno-std
builds (#2383).CustomMessageHandler::provided_{node,init}_features
and various custom
feature bit methods on*Features
were added (#2204).- Keysend/push payments using MPP are now supported when receiving if
UserConfig::accept_mpp_keysend
is set and when sending if specified in the
PaymentParameters
. Note that not all recipients support this (#2156). - A new
ConfirmationTarget::MempoolMinimum
has been added (#2415). SpendableOutputDescriptor::to_psbt_input
was added (#2286).ChannelManager::update_partial_channel_config
was added (#2330).ChannelDetails::channel_shutdown_state
was added (#2347).- The shutdown script can now be provided at shutdown time via
ChannelManager::close_channel_with_feerate_and_script
(#2219). BroadcasterInterface
now takes multiple transactions at once. While not
available today, in the future single calls should be passed to a full node
via a single batch/package transaction acceptance API (#2272).Balance::claimable_amount_satoshis
was added (#2333).payment_{hash,preimage}
have been added to someBalance
variants (#2217).- The
lightning::chain::keysinterface
is nowlightning::sign
(#2246). - Routing to a blinded path has been implemented, though sending to such a
route is not yet supported inChannelManager
(#2120). OffersMessageHandler
was added for offers-related onion messages (#2294).- The
CustomMessageHandler
parameter toPeerManager
has moved to
MessageHandler
fromPeerManager::new
explicitly (#2249). - Various P2P messages for dual funding channel establishment have been added,
though handling for them is not yet inChannelManager
(#1794) - Script-fetching methods in
sign
interfaces can now return errors, see docs
for the implications of failing (#2213). - The
data_loss_protect
option is now required when reading
channel_reestablish
messages, as many others have done (#2253). InFlightHtlcs::add_inflight_htlc
has been added (#2042).- The
init
messagenetworks
field is now written and checked (#2329). PeerManager
generics have been simplified with the introduction of the
APeerManager
trait (#2249).ParitalOrd
andOrd
are now implemented forInvoice
(#2279).ParitalEq
andDebug
are now implemented forInMemorySigner
(#2328).ParitalEq
andEq
are now implemented forPaymentError
(#2316).NetworkGraph::update_channel_from_announcement_no_lookup
was added (#2222).lightning::routing::gossip::verify_{channel,node}_announcement
was added
(#2307).
Backwards Compatibility
PaymentParameters
written with blinded path info using LDK 0.0.115 will not
be readable in LDK 0.0.116, and vice versa.- Forwarding less than
Event::HTLCIntercepted::expected_outbound_amount_msat
inChannelManager::forward_intercepted_htlc
may prevent the
ChannelManager
from being read by LDK prior to 0.0.116 (#2319) - Setting
ChannelConfig::accept_underpaying_htlcs
may prevent the
ChannelManager
from being read by LDK prior to 0.0.116 and un-setting the
parameter between restarts may lead to payment failures (#2319). ChannelManager::create_inbound_payment{,_for_hash}_legacy
has been removed,
removing the ability to create inbound payments which are claimable after
downgrade to LDK 0.0.103 and prior. In the future handling such payments will
also be removed (#2351).- Some fields required by LDK 0.0.103 and earlier are no longer written, thus
deserializing objects written by 0.0.116 with 0.0.103 may now fail (#2351).
Bug Fixes
ChannelDetails::next_outbound_htlc_limit_msat
was made substantially more
accurate and a correspondingnext_outbound_htlc_minimum_msat
was added.
This resolves issues where unpayable routes were generated due to
overestimation of the amount which is payable over one of our channels as
the first hop (#2312).- A rare case where delays in processing
Event
s generated by
ChannelMonitor
s could lead to loss of those events in case of an untimely
crash. This could lead to the loss of anEvent::SpendableOutputs
(#2369). - Fixed a regression in 0.0.115 which caused
PendingHTLCsForwardable
events
to be missed when processing phantom node receives. This caused such
payments to be delayed until a further, unrelated HTLC came in (#2395). - Peers which are unresponsive to channel messages for several timer ticks are
now disconnected to allow for on-reconnection state machine reset. This
works around some issues in LND prior to 16.3 which can cause channels to
hang and eventually force-close (#2293). ChannelManager::new
now requires the current time (either from a recent
block header or the system clock), ensuring invoices created immediately
after startup aren't already expired (#2372).- Resolved an issue where reading a
ProbabilisticScorer
on some platforms
(e.g. iOS) can lead to a panic (#2322). ChannelConfig::max_dust_htlc_exposure
is now allowed to scale based on
current fees, and the default has been updated to do so. This substantially
reduces the chance of force-closure due to dust exposure. Note that existing
channels will retain their current value and you may wish to update the
value on your existing channels on upgrade (#2354).PeerManager::process_events
no longer blocks in any case. This fixes a bug
where reentrancy fromPeerManager
into user code which eventually calls
process_events
could lead to a deadlock (#2280).- The persist timing of network graph and scoring in
lightning-background-processor
has been tweaked to provide more reliable
persistence after updates to either (#2226). - The number of route hints added to BOLT 11 invoices by the
lightning-invoice::utils
builders has been reduced to three to ensure
invoices can be represented in scan-able QR codes (#2044). - Fixed sending large onion messages, which would previously have resulted in
an HMAC error on the second hop (#2277). - Fixed a memory leak that may occur when a
ChannelManager
or
ChannelMonitor
isdrop
ed (#2233). - A potential deadlock in calling
NetworkGraph::eq
was resolved (#2284). - Fixed an overflow which prevented disconnecting peers in some minor cases
with more than 31 peers (#2245). - Gossip messages with an unknown chain hash are now ignored (#2230).
- Rapid Gossip Sync processing now fails on an unknown chain hash (#2324).
RouteHintHop::htlc_maximum_msat
is now enforced. Note that BOLT11 route
hints do not have such a field so this code is generally unused (#2305).
Security
0.0.116 fixes a denial-of-service vulnerability which is reachable from
untrusted input from channel counterparties if a 0-conf channel exists with
that counterparty.
- A premature
announcement_signatures
message from a peer prior to a 0-conf
channel's funding transaction receiving any confirmations would panic in any
version since 0-conf channels were introduced (#2439).
In total, this release features 142 files changed, 21033 insertions, 11066
deletions in 327 commits from 21 authors, in alphabetical order:
- Alec Chen
- Andrei
- Antoine Riard
- Arik Sosman
- Chad Upjohn
- Daniel Granhão
- Duncan Dean
- Elias Rohrer
- Fred Walker
- Gleb Naumenko
- Jeffrey Czyz
- Martin Habovstiak
- Matt Corallo
- Tony Giorgio
- Valentine Wallace
- Vladimir Fomene
- Willem Van Lint
- Wilmer Paulino
- benthecarman
- ff
- henghonglee