Skip to content

Tags: johncantrell97/rust-lightning

Tags

v0.0.104

Toggle v0.0.104's commit message
v0.0.104

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` (lightningdevkit#1202).
 * Payment secrets are now generated deterministically using material from
   the new `KeysInterface::get_inbound_payment_key_material` (lightningdevkit#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 (lightningdevkit#1178, lightningdevkit#1197).
 * `Score::channel_penalty_msat` has additional arguments describing the
   channel's capacity and the HTLC amount being sent over the channel (lightningdevkit#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 (lightningdevkit#1145).
 * The `allow_wallclock_use` feature has been removed in favor of only using
   the `std` and `no-std` features (lightningdevkit#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` (lightningdevkit#1212).
 * `InvoicePayer::pay_pubkey` was added to enable sending "keysend" payments to
   supported recipients, using the `InvoicePayer` to handle retires (lightningdevkit#1160).
 * `user_payment_id` has been removed from `PaymentPurpose`, and
   `ChannelManager::create_inbound_payment{,_for_hash}` (lightningdevkit#1180).
 * Updated documentation for several `ChannelManager` functions to remove stale
   references to panics which no longer occur (lightningdevkit#1201).
 * The `Score` and `LockableScore` objects have moved into the
   `routing::scoring` module instead of being in the `routing` module (lightningdevkit#1166).
 * The `Time` parameter to `ScorerWithTime` is no longer longer exposed,
   instead being fixed based on the `std`/`no-std` feature (lightningdevkit#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 (lightningdevkit#1203).
 * An explicit `UserConfig::accept_inbound_channels` flag is now provided,
   removing the need to set `min_funding_satoshis` to > 21 million BTC (lightningdevkit#1173).
 * Inbound channels that fail to see the funding transaction confirm within
   2016 blocks are automatically force-closed with
   `ClosureReason::FundingTimedOut` (lightningdevkit#1083).
 * We now accept a channel_reserve value of 0 from counterparties, as it is
   insecure for our counterparty but not us (lightningdevkit#1163).
 * `NetAddress::OnionV2` parsing was removed as version 2 onion services are no
   longer supported in modern Tor (lightningdevkit#1204).
 * Generation and signing of anchor outputs is now supported in the
   `KeysInterface`, though no support for them exists in the channel itself (lightningdevkit#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 (lightningdevkit#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 (lightningdevkit#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 (lightningdevkit#1054).
 * Fixed several bugs which may have prevented the reliable broadcast of our
   own channel announcements and updates (lightningdevkit#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 (lightningdevkit#1168).
 * `KeysManager::spend_spendable_outputs` no longer adds a change output that
   is below the dust threshold for non-standard change scripts (lightningdevkit#1131).
 * Fixed a minor memory leak when attempting to send a payment that fails due
   to an error when updating the `ChannelMonitor` (lightningdevkit#1143).
 * Fixed a bug where a `FeeEstimator` that returns values rounded to the next
   sat/vbyte may result in force-closures (lightningdevkit#1208).
 * Handle MPP timeout HTLC error codes, instead of considering the recipient to
   have sent an invalid error, removing them from the network graph (lightningdevkit#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 (lightningdevkit#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 (lightningdevkit#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

v0.0.103

Toggle v0.0.103's commit message
v0.0.103

 * This release is almost entirely focused on a new API in the
   `lightning-invoice` crate - the `InvoicePayer`. `InvoicePayer` is a
   struct which takes a reference to a `ChannelManager` and a `NetworkGraph`
   and retries payments as paths fail. It limits retries to a configurable
   number, but is not serialized to disk and may retry additional times across
   a serialization/load. In order to learn about failed payments, it must
   receive `Event`s directly from the `ChannelManager`, wrapping a
   user-provided `EventHandler` which it provides all unhandled events to
   (lightningdevkit#1059).
 * `get_route` has been renamed `find_route` (lightningdevkit#1059) and now takes a `Payee`
   struct in replacement of a number of its long list of arguments (lightningdevkit#1134).
   `Payee` is further stored in the `Route` object returned and provided in the
   `RouteParameters` contained in `Event::PaymentPathFailed` (lightningdevkit#1059).
 * `ChannelMonitor`s must now be persisted after calls which provide new block
   data, prior to `MonitorEvent`s being passed back to `ChannelManager` for
   processing. If you are using a `ChainMonitor` this is handled for you.
   The `Persist` API has been updated to `Option`ally take the
   `ChannelMonitorUpdate` as persistence events that result from chain data no
   longer have a corresponding update (lightningdevkit#1108).
 * `routing::Score` now has a `payment_path_failed` method which it can use to
   learn which channels often fail payments. It is automatically called by
   `InvoicePayer` for failed payment paths (lightningdevkit#1144).
 * The default `Scorer` implementation is now a type alias to a type generic
   across different clocks and supports serialization to persist scoring data
   across restarts (lightningdevkit#1146).
 * `Event::PaymentSent` now includes the full fee which was spent across all
   payment paths which were fulfilled or pending when the payment was fulfilled
   (lightningdevkit#1142).
 * `NetGraphMsgHandler` now takes a `Deref` to the `NetworkGraph`, allowing for
   shared references to the graph data to make serialization and references to
   the graph data in the `InvoicePayer`'s `Router` simpler (lightningdevkit#1149).
 * `routing::Score::channel_penalty_msat` has been updated to provide the
   `NodeId` of both the source and destination nodes of a channel (lightningdevkit#1133).

 * Delay disconnecting peers if we receive messages from them even if it takes
   a while to receive a pong from them. Further, avoid sending too many gossip
   messages between pings to ensure we should always receive pongs in a timely
   manner. Together, these should significantly reduce instances of us failing
   to remain connected to a peer during initial gossip sync (lightningdevkit#1137).
 * If a payment is sent, creating an outbound HTLC and sending it to our
   counterparty (implying the `ChannelMonitor` was persisted on disk), but the
   `ChannelManager` was not persisted prior to shutdown/crash, no
   `Event::PaymentPathFailed` event will be generated if the HTLC is eventually
   failed on chain (lightningdevkit#1104).

 * 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.
 * Payments for which a `Route` was generated using a previous version or for
   which the payment was originally sent by a previous version of the library
   will not be retried by an `InvoicePayer`.

This release was singularly focused and some contributions by third parties
were delayed.
In total, this release features 38 files changed, 4414 insertions, and 969
deletions in 71 commits from 2 authors, in alphabetical order:

 * Jeffrey Czyz
 * Matt Corallo

v0.0.102

Toggle v0.0.102's commit message
v0.0.102

API Updates
 * `get_route` now takes a `Score` as an argument. `Score` is queried during
   the route-finding process, returning the absolute amounts which you are
   willing to pay to avoid routing over a given channel. As a default, a
   `Scorer` is provided which returns a constant amount, with a suggested
   default of 500 msat. This translates to a willingness to pay up to 500 msat
   in additional fees per hop in order to avoid additional hops (lightningdevkit#1124).
 * `Event::PaymentPathFailed` now contains a `short_channel_id` field which may
   be filled in with a channel that can be "blamed" for the payment failure.
   Payment retries should likely avoid the given channel for some time (lightningdevkit#1077).
 * `PublicKey`s in `NetworkGraph` have been replaced with a `NodeId` struct
   which contains only a simple `[u8; 33]`, substantially improving
   `NetworkGraph` deserialization performance (lightningdevkit#1107).
 * `ChainMonitor`'s `HashMap` of `ChannelMonitor`s is now private, exposed via
   `Chainmonitor::get_monitor` and `ChainMonitor::list_monitors` instead
   (lightningdevkit#1112).
 * When an outbound channel is closed prior to the broadcasting of its funding
   transaction, but after you call
   `ChannelManager::funding_transaction_generated`, a new event type,
   `Event::DiscardFunding`, is generated, informing you the transaction was not
   broadcasted and that you can spend the same inputs again elsewhere (lightningdevkit#1098).
 * `ChannelManager::create_channel` now returns the temporary channel ID which
   may later appear in `Event::ChannelClosed` or `ChannelDetails` prior to the
   channel being funded (lightningdevkit#1121).
 * `Event::PaymentSent` now contains the payment hash as well as the payment
   preimage (lightningdevkit#1062).
 * `ReadOnlyNetworkGraph::get_addresses` now returns owned `NetAddress` rather
   than references. As a side-effect this method is now exposed in foreign
   language bindings (lightningdevkit#1115).
 * The `Persist` and `ChannelMonitorUpdateErr` types have moved to the
   `lightning::chain::chainmonitor` and `lightning::chain` modules,
   respectively (lightningdevkit#1112).
 * `ChannelManager::send_payment` now returns a `PaymentId` which identifies a
   payment (whether MPP or not) and can be used to retry the full payment or
   MPP parts through `retry_payment` (lightningdevkit#1096). Note that doing so is currently
   *not* crash safe, and you may find yourself sending twice. It is recommended
   that you *not* use the `retry_payment` API until the next release.

Bug Fixes
 * Due to an earlier fix for the Lightning dust inflation vulnerability tracked
   in CVE-2021-41591/CVE-2021-41592/CVE-2021-41593 in 0.0.100, we required
   counterparties to accept a dust limit slightly lower than the dust limit now
   required by other implementations. This appeared as, at least, latest lnd
   always refusing to accept channels opened by LDK clients (lightningdevkit#1065).
 * If there are multiple channels available to the same counterparty,
   `get_route` would only consider the channel listed last as available for
   sending (lightningdevkit#1100).
 * `Persist` implementations returning
   `ChannelMonitorUpdateErr::TemporaryFailure` from `watch_channel` previously
   resulted in the `ChannelMonitor` not being stored at all, resulting in a
   panic after monitor updating is complete (lightningdevkit#1112).
 * If payments are pending awaiting forwarding at startup, an
   `Event::PendingHTLCsForwardable` event will always be provided. This ensures
   user code calls `ChannelManager::process_pending_htlc_fowards` even if it
   shut down while awaiting the batching timer during the previous run (lightningdevkit#1076).
 * If a call to `ChannelManager::send_payment` failed due to lack of
   availability of funds locally, LDK would store the payment as pending
   forever, with no ability to retry or fail it, leaking memory (lightningdevkit#1109).

Serialization Compatibility
 * All above new Events/fields are ignored by prior clients. All above new
   Events/fields, except for `Event::PaymentSent::payment_hash` are not present
   when reading objects serialized by prior versions of the library.

In total, this release features 32 files changed, 2248 insertions, and 1483
deletions in 51 commits from 7 authors, in alphabetical order:

 * 1nF0rmed
 * Duncan Dean
 * Elias Rohrer
 * Galder Zamarreño
 * Jeffrey Czyz
 * Matt Corallo
 * Valentine Wallace

v0.0.14

Toggle v0.0.14's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Merge pull request lightningdevkit#909 from TheBlueMatt/2021-04-0.0.14

Bump versions to 0.0.14, lightning-invoice 0.5

v0.0.13

Toggle v0.0.13's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Merge pull request lightningdevkit#835 from TheBlueMatt/2021-03-0.0.13

Bump Version to 0.0.13

v0.0.12

Toggle v0.0.12's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Merge pull request lightningdevkit#759 from TheBlueMatt/2020-11-0.0.12

Bump version to 0.0.12