github lightningdevkit/rust-lightning v0.0.104
0.0.104

latest releases: v0.0.125, v0.0.124, v0.0.124-rc1...
2 years ago

API Updates

  • A PaymentFailed event is now provided to indicate a payment has failed
    fully. This event is generated either after
    ChannelManager::abandon_payment is called for a given payment, or the
    payment times out, and there are no further pending HTLCs for the payment.
    This event should be used to detect payment failure instead of
    PaymentPathFailed::all_paths_failed, unless no payment retries occur via
    ChannelManager::retry_payment (#1202).
  • Payment secrets are now generated deterministically using material from
    the new KeysInterface::get_inbound_payment_key_material (#1177).
  • A PaymentPathSuccessful event has been added to ease passing success info
    to a scorer, along with a Score::payment_path_successful method to accept
    such info (#1178, #1197).
  • Score::channel_penalty_msat has additional arguments describing the
    channel's capacity and the HTLC amount being sent over the channel (#1166).
  • A new log level Gossip has been added, which is used for verbose
    information generated during network graph sync. Enabling the
    max_level_trace feature or ignoring Gossip log entries reduces log
    growth during initial start up from many GiB to several MiB (#1145).
  • The allow_wallclock_use feature has been removed in favor of only using
    the std and no-std features (#1212).
  • NetworkGraph can now remove channels that we haven't heard updates for in
    two weeks with NetworkGraph::remove_stale_channels{,with_time}. The first
    is called automatically if a NetGraphMsgHandler is passed to
    BackgroundProcessor::start (#1212).
  • InvoicePayer::pay_pubkey was added to enable sending "keysend" payments to
    supported recipients, using the InvoicePayer to handle retires (#1160).
  • user_payment_id has been removed from PaymentPurpose, and
    ChannelManager::create_inbound_payment{,_for_hash} (#1180).
  • Updated documentation for several ChannelManager functions to remove stale
    references to panics which no longer occur (#1201).
  • The Score and LockableScore objects have moved into the
    routing::scoring module instead of being in the routing module (#1166).
  • The Time parameter to ScorerWithTime is no longer longer exposed,
    instead being fixed based on the std/no-std feature (#1184).
  • ChannelDetails::balance_msat was added to fetch a channel's balance
    without subtracting the reserve values, lining up with on-chain claim amounts
    less on-chain fees (#1203).
  • An explicit UserConfig::accept_inbound_channels flag is now provided,
    removing the need to set min_funding_satoshis to > 21 million BTC (#1173).
  • Inbound channels that fail to see the funding transaction confirm within
    2016 blocks are automatically force-closed with
    ClosureReason::FundingTimedOut (#1083).
  • We now accept a channel_reserve value of 0 from counterparties, as it is
    insecure for our counterparty but not us (#1163).
  • NetAddress::OnionV2 parsing was removed as version 2 onion services are no
    longer supported in modern Tor (#1204).
  • Generation and signing of anchor outputs is now supported in the
    KeysInterface, though no support for them exists in the channel itself (#1176)

Bug Fixes

  • Fixed a race condition in InvoicePayer where paths may be retried after
    the retry count has been exceeded. In this case the
    Event::PaymentPathFailed::all_paths_failed field is not a reliable payment
    failure indicator. There was no acceptable alternative indicator,
    Event::PaymentFailed as been added to provide one (#1202).
  • Reduced the blocks-before-timeout we expect of outgoing HTLCs before
    refusing to forward. This check was overly strict and resulted in refusing
    to forward som HTLCs to a next hop that had a lower security threshold than
    us (#1119).
  • LDK no longer attempt to update the channel fee for outbound channels when
    we cannot afford the new fee. This could have caused force-closure by our
    channel counterparty (#1054).
  • Fixed several bugs which may have prevented the reliable broadcast of our
    own channel announcements and updates (#1169).
  • Fixed a rare bug which may have resulted in spurious route finding failures
    when using last-hop hints and MPP with large value payments (#1168).
  • KeysManager::spend_spendable_outputs no longer adds a change output that
    is below the dust threshold for non-standard change scripts (#1131).
  • Fixed a minor memory leak when attempting to send a payment that fails due
    to an error when updating the ChannelMonitor (#1143).
  • Fixed a bug where a FeeEstimator that returns values rounded to the next
    sat/vbyte may result in force-closures (#1208).
  • Handle MPP timeout HTLC error codes, instead of considering the recipient to
    have sent an invalid error, removing them from the network graph (#1148)

Serialization Compatibility

  • All above new events/fields are ignored by prior clients. All above new
    events/fields are not present when reading objects serialized by prior
    versions of the library.
  • Payment secrets are now generated deterministically. This reduces the memory
    footprint for inbound payments, however, newly-generated inbound payments
    using ChannelManager::create_inbound_payment{,_for_hash} will not be
    receivable using versions prior to 0.0.104.
    ChannelManager::create_inbound_payment{,_for_hash}_legacy are provided for
    backwards compatibility (#1177).
  • PaymentPurpose::InvoicePayment::user_payment_id will be 0 when reading
    objects written with 0.0.104 when read by 0.0.103 and previous (#1180).

In total, this release features 51 files changed, 5356 insertions, 2238
deletions in 107 commits from 9 authors, in alphabetical order:

  • Antoine Riard
  • Conor Okus
  • Devrandom
  • Duncan Dean
  • Elias Rohrer
  • Jeffrey Czyz
  • Ken Sedgwick
  • Matt Corallo
  • Valentine Wallace

Don't miss a new rust-lightning release

NewReleases is sending notifications on new releases.