Tags: johncantrell97/rust-lightning
Tags
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 * 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 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
Merge pull request lightningdevkit#909 from TheBlueMatt/2021-04-0.0.14 Bump versions to 0.0.14, lightning-invoice 0.5
Merge pull request lightningdevkit#835 from TheBlueMatt/2021-03-0.0.13 Bump Version to 0.0.13
Merge pull request lightningdevkit#759 from TheBlueMatt/2020-11-0.0.12 Bump version to 0.0.12
PreviousNext