Skip to content

Tags: alandotcom/rust-lightning

Tags

v0.0.114

Toggle v0.0.114's commit message
0.0.114 - Mar 3, 2023 - "Faster Async BOLT12 Retries"

API Updates
===========

 * `InvoicePayer` has been removed and its features moved directly into
   `ChannelManager`. As such it now requires a simplified `Router` and supports
   `send_payment_with_retry` (and friends). `ChannelManager::retry_payment` was
   removed in favor of the automated retries. Invoice payment utilities in
   `lightning-invoice` now call the new code (lightningdevkit#1812, lightningdevkit#1916, lightningdevkit#1929, lightningdevkit#2007, etc).
 * `Sign`/`BaseSign` has been renamed `ChannelSigner`, with `EcdsaChannelSigner`
   split out in anticipation of future schnorr/taproot support (lightningdevkit#1967).
 * The catch-all `KeysInterface` was split into `EntropySource`, `NodeSigner`,
   and `SignerProvider`. `KeysManager` implements all three (lightningdevkit#1910, lightningdevkit#1930).
 * `KeysInterface::get_node_secret` is now `KeysManager::get_node_secret_key`
   and is no longer required for external signers (lightningdevkit#1951, lightningdevkit#2070).
 * A `lightning-transaction-sync` crate has been added which implements keeping
   LDK in sync with the chain via an esplora server (lightningdevkit#1870). Note that it can
   only be used on nodes that *never* ran a previous version of LDK.
 * `Score` is updated in `BackgroundProcessor` instead of via `Router` (lightningdevkit#1996).
 * `ChainAccess::get_utxo` (now `UtxoAccess`) can now be resolved async (lightningdevkit#1980).
 * BOLT12 `Offer`, `InvoiceRequest`, `Invoice` and `Refund` structs as well as
   associated builders have been added. Such invoices cannot yet be paid due to
   missing support for blinded path payments (lightningdevkit#1927, lightningdevkit#1908, lightningdevkit#1926).
 * A `lightning-custom-message` crate has been added to make combining multiple
   custom messages into one enum/handler easier (lightningdevkit#1832).
 * `Event::PaymentPathFailure` is now generated for failure to send an HTLC
   over the first hop on our local channel (lightningdevkit#2014, lightningdevkit#2043).
 * `lightning-net-tokio` no longer requires an `Arc` on `PeerManager` (lightningdevkit#1968).
 * `ChannelManager::list_recent_payments` was added (lightningdevkit#1873).
 * `lightning-background-processor` `std` is now optional in async mode (lightningdevkit#1962).
 * `create_phantom_invoice` can now be used in `no-std` (lightningdevkit#1985).
 * The required final CLTV delta on inbound payments is now configurable (lightningdevkit#1878)
 * bitcoind RPC error code and message are now surfaced in `block-sync` (lightningdevkit#2057).
 * Get `historical_estimated_channel_liquidity_probabilities` was added (lightningdevkit#1961).
 * `ChannelManager::fail_htlc_backwards_with_reason` was added (lightningdevkit#1948).
 * Macros which implement serialization using TLVs or straight writing of struct
   fields are now public (lightningdevkit#1823, lightningdevkit#1976, lightningdevkit#1977).

Backwards Compatibility
=======================

 * Any inbound payments with a custom final CLTV delta will be rejected by LDK
   if you downgrade prior to receipt (lightningdevkit#1878).
 * `Event::PaymentPathFailed::network_update` will always be `None` if an
   0.0.114-generated event is read by a prior version of LDK (lightningdevkit#2043).
 * `Event::PaymentPathFailed::all_paths_removed` will always be false if an
   0.0.114-generated event is read by a prior version of LDK. Users who rely on
   it to determine payment retries should migrate to `Event::PaymentFailed`, in
   a separate release prior to upgrading to LDK 0.0.114 if downgrading is
   supported (lightningdevkit#2043).

Performance Improvements
========================

 * Channel data is now stored per-peer and channel updates across multiple
   peers can be operated on simultaneously (lightningdevkit#1507).
 * Routefinding is roughly 1.5x faster (lightningdevkit#1799).
 * Deserializing a `NetworkGraph` is roughly 6x faster (lightningdevkit#2016).
 * Memory usage for a `NetworkGraph` has been reduced substantially (lightningdevkit#2040).
 * `KeysInterface::get_secure_random_bytes` is roughly 200x faster (lightningdevkit#1974).

Bug Fixes
=========

 * Fixed a bug where a delay in processing a `PaymentSent` event longer than the
   time taken to persist a `ChannelMonitor` update, when occurring immediately
   prior to a crash, may result in the `PaymentSent` event being lost (lightningdevkit#2048).
 * Fixed spurious rejections of rapid gossip sync data when the graph has been
   updated by other means between gossip syncs (lightningdevkit#2046).
 * Fixed a panic in `KeysManager` when the high bit of `starting_time_nanos`
   is set (lightningdevkit#1935).
 * Resolved an issue where the `ChannelManager::get_persistable_update_future`
   future would fail to wake until a second notification occurs (lightningdevkit#2064).
 * Resolved a memory leak when using `ChannelManager::send_probe` (lightningdevkit#2037).
 * Fixed a deadlock on some platforms at least when using async `ChannelMonitor`
   updating (lightningdevkit#2006).
 * Removed debug-only assertions which were reachable in threaded code (lightningdevkit#1964).
 * In some cases when payment sending fails on our local channel retries no
   longer take the same path and thus never succeed (lightningdevkit#2014).
 * Retries for spontaneous payments have been fixed (lightningdevkit#2002).
 * Return an `Err` if `lightning-persister` fails to read the directory listing
   rather than panicing (lightningdevkit#1943).
 * `peer_disconnected` will now never be called without `peer_connected` (lightningdevkit#2035)

Security
========

0.0.114 fixes several denial-of-service vulnerabilities which are reachable from
untrusted input from channel counterparties or in deployments accepting inbound
connections or channels. It also fixes a denial-of-service vulnerability in rare
cases in the route finding logic.
 * The number of pending un-funded channels as well as peers without funded
   channels is now limited to avoid denial of service (lightningdevkit#1988).
 * A second `channel_ready` message received immediately after the first could
   lead to a spurious panic (lightningdevkit#2071). This issue was introduced with 0conf
   support in LDK 0.0.107.
 * A division-by-zero issue was fixed in the `ProbabilisticScorer` if the amount
   being sent (including previous-hop fees) is equal to a channel's capacity
   while walking the graph (lightningdevkit#2072). The division-by-zero was introduced with
   historical data tracking in LDK 0.0.112.

In total, this release features 130 files changed, 21457 insertions, 10113
deletions in 343 commits from 18 authors, in alphabetical order:
 * Alec Chen
 * Allan Douglas R. de Oliveira
 * Andrei
 * Arik Sosman
 * Daniel Granhão
 * Duncan Dean
 * Elias Rohrer
 * Jeffrey Czyz
 * John Cantrell
 * Kurtsley
 * Matt Corallo
 * Max Fang
 * Omer Yacine
 * Valentine Wallace
 * Viktor Tigerström
 * Wilmer Paulino
 * benthecarman
 * jurvis

v0.0.114-beta

Toggle v0.0.114-beta's commit message
0.0.114-beta - Feb 28, 2023 - "Faster Async BOLT12 Retries"

Release notes forthcoming for the full release.

v0.0.113

Toggle v0.0.113's commit message
0.0.113 - Dec 16, 2022 - "Big Movement Intercepted"

API Updates
===========

 * `ChannelManager::send_payment` now takes an explicit `PaymentId` which is a
   loose idempotency token. See `send_payment` docs for more (lightningdevkit#1761, lightningdevkit#1826).
 * HTLCs bound for SCIDs from `ChannelManager::get_intercept_scid` are now
   intercepted and can be forwarded manually over any channel (lightningdevkit#1835, lightningdevkit#1893).
 * `Confirm::get_relevant_txids` now returns a `BlockHash`, expanding the set
   of cases where `transaction_unconfirmed` must be called, see docs (lightningdevkit#1796).
 * Pending outbound payments are no longer automatically timed-out a few blocks
   after failure. Thus, in order to avoid leaking memory, you MUST call
   `ChannelManager::abandon_payment` when you no longer wish to retry (lightningdevkit#1761).
 * `ChannelManager::abandon_payment` docs were updated to note that the payment
   may return to pending after a restart if no persistence occurs (lightningdevkit#1907).
 * `Event::PaymentReceived` has been renamed `Event::PaymentClaimable` (lightningdevkit#1891).
 * `Event` handling is now optionally async for Rust users (lightningdevkit#1787).
 * `user_channel_id` is now a `u128` and random for inbound channels (lightningdevkit#1790).
 * A new `ChannelReady` event is generated whenever a channel becomes ready to
   be used, i.e., after both sides sent the `channel_ready` message (lightningdevkit#1743).
 * `NetworkGraph` now prunes channels where either node is offline for 2 weeks
   and refuses to accept re-announcements of pruned channels (lightningdevkit#1735).
 * Onion messages are now read in `CustomOnionMessageHandler` rather than via
   `MaybeReadableArgs` (lightningdevkit#1809).
 * Added a new util to generate an invoice with a custom hash (lightningdevkit#1894) -
`create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash`
 * `Sign`ers are now by default re-derived using `KeysInterface`'s new
   `derive_channel_signer` rather than `read_chan_signer` (lightningdevkit#1867).
 * `Confirm::transactions_confirmed` is now idempotent (lightningdevkit#1861).
 * `ChannelManager::compute_inflight_htlcs` has been added to fetch in-flight
   HTLCs for scoring. Note that `InvoicePayer` does this for you (lightningdevkit#1830).
 * Added `PaymentClaimable::via_channel_id` (lightningdevkit#1856).
 * Added the `node_id` (phantom or regular) to payment events (lightningdevkit#1766).
 * Added the funding transaction `confirmations` to `ChannelDetails` (lightningdevkit#1856).
 * `BlindedRoute` has been renamed `BlindedPath` (lightningdevkit#1918).
 * Support for the BOLT 4 "legacy" onion format has been removed, in line with
   its removal in the spec and vanishingly rare use (lightningdevkit#1413).
 * `ChainMonitor::list_pending_monitor_updates` was added (lightningdevkit#1834).
 * Signing for non-zero-fee anchor commitments is supported again (lightningdevkit#1828).
 * Several helpers for transaction matching and generation are now pub (lightningdevkit#1839).

Bug Fixes
=========

 * Fixed a rare race where a crash may result in a pending HTLC not being
   failed backwards, leading to a force-closure by our counterparty (lightningdevkit#1857).
 * Avoid incorrectly assigning a lower-bound on channel liquidity when routing
   fails due to a closed channel earlier in the path (lightningdevkit#1817).
 * If a counterparty increases the channel fee, but not enough per our own fee
   estimator, we no longer force-close the channel (lightningdevkit#1852).
 * Several bugs in the `lightning-background-processor` `future` feature were
   fixed, including requirements doc corrections (lightningdevkit#1843, lightningdevkit#1845, lightningdevkit#1851).
 * Some failure messages sent back when failing an HTLC were corrected (lightningdevkit#1895).
 * `rapid-gossip-sync` no longer errors if an update is applied duplicatively
   or in rare cases when the graph is updated from payment failures (lightningdevkit#1833).
 * Sending onion messages to a blinded path in which we're the introduction
   node no longer fails (lightningdevkit#1791).

Backwards Compatibility
=======================

 * No `ChannelReady` events will be generated for previously existing channels,
   including those which become ready after upgrading to 0.0.113 (lightningdevkit#1743).
 * Once `UserConfig::accept_intercept_htlcs` is set, downgrades to LDK versions
   prior to 0.0.113 are not supported (lightningdevkit#1835).
 * Existing payments may see a `PaymentClaimable::user_channel_id` of 0 (lightningdevkit#1856)
 * When downgrading to a version of LDK prior to 0.0.113 when there are
   resolved payments waiting for a small timeout, the payments may not be
   removed, preventing payments with the same `PaymentId` (lightningdevkit#1761).

In total, this release features 76 files changed, 11639 insertions, 6067
deletions in 210 commits from 18 authors, in alphabetical order:
 * Antoine Riard
 * Arik Sosman
 * Devrandom
 * Duncan Dean
 * Elias Rohrer
 * Gleb Naumenko
 * Jeffrey Czyz
 * John Cantrell
 * Matt Corallo
 * Tee8z
 * Tobin C. Harding
 * Tristan F
 * Valentine Wallace
 * Viktor Tigerström
 * Wilmer Paulino
 * benthecarman
 * jurvis
 * ssbright

v0.0.112

Toggle v0.0.112's commit message
0.0.112 - Oct 25, 2022 - "History Matters"

API Updates
===========

 * `Result<(), ChannelMonitorUpdateErr>` return values have been replaced with
   a `ChannelMonitorUpdateStatus` trinary enum. This better denotes that
   `ChannelMonitorUpdateStatus::InProgress` is not an error, but asynchronous
   persistence of a monitor update. Note that asynchronous persistence still
   has some edge cases and is not yet recommended for production (lightningdevkit#1106).
 * `ChannelMonitor` persistence failure no longer automatically broadcasts the
   latest commitment transaction. See the
   `ChannelMonitorUpdateStatus::PermanentFailure` docs for more info (lightningdevkit#1106).
 * `*Features::known` has been replaced with individual
   `*MessageHandler::provided_*_features` methods (lightningdevkit#1707).
 * `OnionMessenger` now takes a `CustomOnionMessageHandler` implementation,
   allowing you to send and receive custom onion messages (lightningdevkit#1748).
 * `ProbabilisticScorer` now tracks the historical distribution of liquidity
   estimates for channels. See new `historical_*` parameters in
   `ProbabilisticScoringParameters` for more details (lightningdevkit#1625).
 * `lightning-block-sync`'s `BlockSource` trait now supports BIP 157/158
   filtering clients by returning only header data for some blocks (lightningdevkit#1706).
 * `lightning-invoice`'s `Router` trait now accepts an `InFlightHtlcs` to
   ensure we do not over-use a remote channel's funds during routing (lightningdevkit#1694).
   Note that this was previously backported to 0.0.111 for bindings users.
 * `NetworkGraph::remove_stale_channels` has been renamed
   `NetworkGraph::remove_stale_channels_and_tracking` as `NetworkGraph` now
   refuses to re-add nodes and channels that were recently removed (lightningdevkit#1649).
 * The `lightning-rapid-gossip-sync` crate now supports `no-std` (lightningdevkit#1708).
 * The default `ProbabilisticScoringParameters::liquidity_offset_half_life` has
   been increased to six hours from one (lightningdevkit#1754).
 * All commitment transaction building logic for anchor outputs now assumes the
   no-HTLC-tx-fee variant (lightningdevkit#1685).
 * A number of missing `Eq` implementations were added (lightningdevkit#1763).

Bug Fixes
=========

 * `lightning-background-processor` now builds without error with the `futures`
   feature (lightningdevkit#1744).
 * `ChannelManager::get_persistable_update_future`'s returned `Future` has been
   corrected to not fail to be awoken in some cases (lightningdevkit#1758).
 * Asynchronously performing the initial `ChannelMonitor` persistence is now
   safe (lightningdevkit#1678).
 * Redundantly applying rapid gossip sync updates no longer `Err`s (lightningdevkit#1764).
 * Nodes which inform us via payment failures that they should no longer be
   used are now removed from the network graph. Some LND nodes spuriously
   generate this error and may remove themselves from our graph (lightningdevkit#1649).

In total, this release features 134 files changed, 6598 insertions, 4370
deletions in 109 commits from 13 authors, in alphabetical order:
 * Duncan Dean
 * Elias Rohrer
 * Gabriel Comte
 * Gursharan Singh
 * Jeffrey Czyz
 * Jurvis Tan
 * Matt Corallo
 * Max Fang
 * Paul Miller
 * Valentine Wallace
 * Viktor Tigerström
 * Wilmer Paulino
 * acid-bit

v0.0.111

Toggle v0.0.111's commit message
0.0.111 - Sep 12, 2022 - "Saturated with Messages"

API Updates
===========

 * Support for relaying onion messages has been added via a new
   `OnionMessenger` struct when passed as the `OnionMessageHandler` to a
   `PeerManager`. Pre-encoded onion messages can also be sent and received
   (lightningdevkit#1503, lightningdevkit#1650, lightningdevkit#1652, lightningdevkit#1688).
 * Rate-limiting of outbound gossip syncs has been rewritten to utilize less
   buffering inside LDK. The new rate-limiting is also used for onion messages
   to avoid delaying other messages (lightningdevkit#1604. lightningdevkit#1660, lightningdevkit#1683).
 * Rather than spawning a full OS thread, `lightning-background-processor` has
   a new `process_events_async` method which takes the place of a
   `BackgroundProcessor` for those using Rust's async (lightningdevkit#1657).
 * `ChannelManager::get_persistable_update_future` has been added to block on
   a ChannelManager needing re-persistence in a Rust async environment (lightningdevkit#1657).
 * The `Filter::register_output` return value has been removed, as it was
   very difficult to correctly implement (i.e., without blocking). Users
   previously using it should instead pass dependent transactions in via
   additional `chain::Confirm::transactions_confirmed` calls (lightningdevkit#1663).
 * `ChannelHandshakeConfig::their_channel_reserve_proportional_millionths` has
   been added to allow configuring counterparty reserve values (lightningdevkit#1619).
 * `KeysInterface::ecdh` has been added as an ECDH oracle (lightningdevkit#1503, lightningdevkit#1658).
 * The `rust-bitcoin` dependency has been updated 0.29 (lightningdevkit#1658).
 * The `bitcoin_hashes` dependency has been updated 0.11 (lightningdevkit#1677).
 * `ChannelManager::broadcast_node_announcement` has been moved to
   `PeerManager` (lightningdevkit#1699).
 * `channel_` and `node_announcement`s are now rebroadcast automatically to all
   new peers which connect (lightningdevkit#1699).
 * `{Init,Node}Features` sent to peers/broadcasted are now fetched via the
   various `*MessageHandler` traits, rather than hard-coded (lightningdevkit#1701, lightningdevkit#1688).
 * `Event::PaymentPathFailed::rejected_by_dest` has been renamed
   `payment_failed_permanently` (lightningdevkit#1702).
 * `Invoice` now derives the std `Hash` trait (lightningdevkit#1575).
 * `{Signed,}RawInvoice::hash` have been renamed `signable_hash` (lightningdevkit#1714).
 * `chain::AccessError` now derives the std `Debug` trait (lightningdevkit#1709).
 * `ReadOnlyNetworkGraph::list_{channels,nodes}` have been added largely for
   users of downstream bindings (lightningdevkit#1651).
 * `ChannelMonitor::get_counterparty_node_id` is now available (lightningdevkit#1635).

Bug Fixes
=========

 * The script compared with that returned from `chain::Access` was incorrect
   ~half of the time, causing spurious gossip rejection (lightningdevkit#1666).
 * Pending in-flight HTLCs are now considered when calculating new routes,
   ensuring, e.g. MPP retries do not take known-saturated paths (lightningdevkit#1643).
 * Counterparty-revoked outputs are now included in `get_claimable_balance`
   output via a new `Balance::CounterpartyRevokedOutputClaimable` (lightningdevkit#1495).
 * Inbound HTLCs for which we do not (yet) have a preimage are now included in
   `get_claimable_balance` via a `Balance::MaybePreimageClaimableHTLC` (lightningdevkit#1673).
 * Probes that fail prior to being sent over their first hop are correctly
   failed with a `Event::ProbeFailed` rather than a `PaymentPathFailed` (lightningdevkit#1704).
 * Pending `Event::HTLCHandlingFailed`s are no longer lost on restart (lightningdevkit#1700).
 * HTLCs that fail prior to being sent over their first hop are now marked as
   retryable via `!PaymentPathFailed::payment_failed_permanently` (lightningdevkit#1702).
 * Dust HTLCs are now considered failed in the payment tracking logic after the
   commitment transaction confirms, allowing retry on restart (lightningdevkit#1691).
 * On machines with buggy "monotonic" clocks, LDK will no longer panic if time
   goes backwards (lightningdevkit#1692).

Backwards Compatibility
=======================

 * The new `current_time` argument to `PeerManager` constructors must be set to
   a UNIX timestamp for upgraded nodes; new nodes may use a counter (lightningdevkit#1699).
 * `Balance::CounterpartyRevokedOutputClaimable` will never be generated for
   channels that were observed to go on-chain with LDK versions prior to
   0.0.111 (lightningdevkit#1495).
 * `ChannelMonitor::get_counterparty_node_id` will return `None` for all
   channels opened on a version of LDK prior to 0.0.110 (lightningdevkit#1635).
 * Setting `their_channel_reserve_proportional_millionths` to any value other
   than the default will cause LDK versions prior to 0.0.104 to be unable to
   read the serialized `ChannelManager` (lightningdevkit#1619).

Security
========

0.0.111 fixes a denial-of-service vulnerability which is reachable from
untrusted input in deployments accepting 0conf channels, or via a race-condition
in deployments creating outbound 0conf channels.

 * LDK versions prior to 0.0.111 may spuriously panic when receiving a block if
   they are awaiting the construction of a funding transaction for a 0-conf
   channel (lightningdevkit#1711). 0-conf support was added in LDK version 0.0.107.

In total, this release features 84 files changed, 6306 insertions, 1960
deletions in 121 commits from 11 authors, in alphabetical order:
 * Arik Sosman
 * Devrandom
 * Duncan Dean
 * Elias Rohrer
 * Gursharan Singh
 * Matt Corallo
 * NicolaLS
 * Valentine Wallace
 * Viktor Tigerström
 * jurvis
 * ok300

v0.0.110

Toggle v0.0.110's commit message
0.0.110 - 2022-07-26

API Updates
===========

 * `ChannelManager::send_probe` and `Score::probe_{failed,successful}` have
   been added to make probing more explicit, as well as new
   `Event::Probe{Failed,Successful}` events (lightningdevkit#1567).
 * `ProbabilisticScoringParameters::banned_nodes` has been renamed
   `manual_node_penalties` and changed to take msat penalties (lightningdevkit#1592).
 * Per-payment tracking of failed paths was added to enable configuration of
   `ProbabilisticScoringParameters::considered_impossible_penalty_msat` (lightningdevkit#1600)
 * `ProbabilisticScoringParameters::base_penalty_amount_multiplier_msat` was
   added to allow a penalty that is only amount-dependent (lightningdevkit#1617).
 * `ProbabilisticScoringParameters::amount_penalty_multiplier_msat` was renamed
   `liquidity_penalty_amount_multiplier_msat` (lightningdevkit#1617).
 * A new `Event::HTLCHandlingFailed` has been added which provides visibility
   into failures to forward/claim accepted HTLCs (lightningdevkit#1403).
 * Support has been added for DNS hostnames in the `NetAddress` type, see
   [BOLT PR lightningdevkit#911](lightning/bolts#911) (lightningdevkit#1553).
 * `GossipSync` now has `rapid`, `p2p`, and `none` constructors (lightningdevkit#1618).
 * `lightning-net-tokio` no longer requires types to be in `Arc`s (lightningdevkit#1623).
 * The `htlc_maximum_msat` field is now required in `ChannelUpdate` gossip
   messages. In tests this rejects < 1% of channels (lightningdevkit#1519).
 * `ReadOnlyNetworkGraph::{channel,node}` have been added to query for
   individual channel/node data, primarily for bindings users (lightningdevkit#1543).
 * `FeeEstimator` implementations are now wrapped internally to ensure values
   below 253 sats/kW are never used (lightningdevkit#1552).
 * Route selection no longer attempts to randomize path selection. This is
   unlikely to lead to a material change in the paths selected (lightningdevkit#1610).

Bug Fixes
=========

 * Fixed a panic when deserializing `ChannelDetails` objects (lightningdevkit#1588).
 * When routing, channels are no longer fully saturated before MPP splits are
   generated, instead a configuration knob was added as
   `PaymentParameters::max_channel_saturation_power_of_half` (lightningdevkit#1605).
 * Fixed a panic which occurred in `ProbabilisticScorer` when wallclock time
   goes backwards across a restart (lightningdevkit#1603).

Serialization Compatibility
===========================

 * All new fields are ignored by prior versions of LDK. All new fields are not
   present when reading objects serialized by prior versions of LDK.
 * Channel information written in the `NetworkGraph` which is missing
   `htlc_maximum_msat` may be dropped on deserialization (lightningdevkit#1519).
 * Similarly, node information written in the `NetworkGraph` which contains an
   invalid hostname may be dropped on deserialization (lightningdevkit#1519).

In total, this release features 79 files changed, 2935 insertions, 1363
deletions in 52 commits from 9 authors, in alphabetical order:
 * Duncan Dean
 * Elias Rohrer
 * Jeffrey Czyz
 * Matt Corallo
 * Max Fang
 * Viktor Tigerström
 * Willem Van Lint
 * Wilmer Paulino
 * jurvis

v0.0.109

Toggle v0.0.109's commit message
0.0.109 - 2022-07-01

API Updates
===========

 * `ChannelManager::update_channel_config` has been added to allow the fields
   in `ChannelConfig` to be changed in a given channel after open (lightningdevkit#1527).
 * If we reconnect to a peer which proves we have a stale channel state, rather
   than force-closing we will instead panic to provide an opportunity to switch
   to the latest state and continue operating without channel loss (lightningdevkit#1564).
 * A `NodeAlias` struct has been added which handles string sanitization for
   node aliases via the `Display` trait (lightningdevkit#1544).
 * `ProbabilisticScoringParameters` now has a `banned_nodes` set which we will
    never route through during path finding (lightningdevkit#1550).
 * `ProbabilisticScoringParameters` now offers an `anti_probing_penalty_msat`
   option to prefer channels which afford better privacy when routing (lightningdevkit#1555).
 * `ProbabilisticScorer` now provides access to its estimated liquidity range
   for a given channel via `estimated_channel_liquidity_range` (lightningdevkit#1549).
 * Options which cannot be changed at runtime have been moved from
   `ChannelConfig` to `ChannelHandshakeConfig` (lightningdevkit#1529).
 * `find_route` takes `&NetworkGraph` instead of `ReadOnlyNetworkGraph (lightningdevkit#1583).
 * `ChannelDetails` now contains a copy of the current `ChannelConfig` (lightningdevkit#1527).
 * The `lightning-invoice` crate now optionally depends on `serde`, with
   `Invoice` implementing `serde::{Deserialize,Serialize}` if enabled (lightningdevkit#1548).
 * Several fields in `UserConfig` have been renamed for clarity (lightningdevkit#1540).

Bug Fixes
=========

 * `find_route` no longer selects routes with more than
   `PaymentParameters::max_mpp_path_count` paths, and
   `ChannelManager::send_payment` no longer refuses to send along routes with
   more than ten paths (lightningdevkit#1526).
 * Fixed two cases where HTLCs pending at the time a counterparty broadcasts a
   revoked commitment transaction are considered resolved prior to their actual
   resolution on-chain, possibly passing the update to another channel (lightningdevkit#1486).
 * HTLCs which are relayed through LDK may now have a total expiry time two
   weeks in the future, up from one, reducing forwarding failures (lightningdevkit#1532).

Serialization Compatibility
===========================

 * All new fields are ignored by prior versions of LDK. All new fields are not
   present when reading objects serialized by prior versions of LDK.
 * `ChannelConfig`'s serialization format has changed and is not compatible
   with any previous version of LDK. Attempts to read values written by a
   previous version of LDK will fail and attempts to read newly written objects
   using a previous version of LDK will fail. It is not expected that users are
   serializing `ChannelConfig` using the LDK serialization API, however, if a
   backward compatibility wrapper is required, please open an issue.

Security
========

0.0.109 fixes a denial-of-service vulnerability which is reachable from
untrusted input in some application deployments.

 * Third parties which are allowed to open channels with an LDK-based node may
   fund a channel with a bogus and maliciously-crafted transaction which, when
   spent, can cause a panic in the channel's corresponding `ChannelMonitor`.
   Such a channel is never usable as it cannot be funded with a funding
   transaction which matches the required output script, allowing the
   `ChannelMonitor` for such channels to be safely purged as a workaround on
   previous versions of LDK. Thanks to Eugene Siegel for reporting this issue.

In total, this release features 32 files changed, 1948 insertions, 532
deletions in 33 commits from 9 authors, in alphabetical order:
 * Antoine Riard
 * Daniel Granhão
 * Elias Rohrer
 * Jeffrey Czyz
 * Matt Corallo
 * Matt Faltyn
 * NicolaLS
 * Valentine Wallace
 * Wilmer Paulino

v0.0.108

Toggle v0.0.108's commit message
v0.0.108

Bug Fixes
=========

 * Fixed `lightning-background-processor` build in release mode.

In total, this release features 9 files changed, 120 insertions, 74
deletions in 5 commits from 4 authors, in alphabetical order:
 * Elias Rohrer
 * Matt Corallo
 * Max Fang
 * Viktor Tigerström

v0.0.107

Toggle v0.0.107's commit message
0.0.107 - 2022-06-08

API Updates
===========

 * Channels larger than 16777215 sats (Wumbo!) are now supported and can be
   enabled for inbound channels using
   `ChannelHandshakeLimits::max_funding_satoshis` (lightningdevkit#1425).
 * Support for feature `option_zeroconf`, allowing immediate forwarding of
   payments after channel opening. This is configured for outbound channels
   using `ChannelHandshakeLimits::trust_own_funding_0conf` whereas
   `ChannelManager::accept_inbound_channel_from_trusted_peer_0conf` has to be
   used for accepting inbound channels (lightningdevkit#1401, lightningdevkit#1505).
 * `ChannelManager::claim_funds` no longer returns a `bool` to indicate success.
   Instead, an `Event::PaymentClaimed` is generated if the claim was successful.
   Likewise, `ChannelManager::fail_htlc_backwards` no longer has a return value
   (lightningdevkit#1434).
 * `lightning-rapid-gossip-sync` is a new crate for syncing gossip data from a
   server, primarily aimed at mobile devices (lightningdevkit#1155).
 * `RapidGossipSync` can be passed to `BackgroundProcessor` in order to persist
   the `NetworkGraph` and handle `NetworkUpdate`s during event handling (lightningdevkit#1433,
   lightningdevkit#1517).
 * `NetGraphMsgHandler` has been renamed to `P2PGossipSync`, the `network_graph`
    module has been renamed to `gossip`, and `NetworkUpdate::ChannelClosed` has
   been renamed `NetworkUpdate::ChannelFailure` (lightningdevkit#1159).
 * Added a `filtered_block_connected` method to `chain::Listen` and a default
   implementation of `block_connected` for those fetching filtered instead of
   full blocks (lightningdevkit#1453).
 * The `lightning-block-sync` crate's `BlockSource` trait methods now take
   `&self` instead of `&mut self` (lightningdevkit#1307).
 * `inbound_payment` module is now public to allow for creating invoices without
   a `ChannelManager` (lightningdevkit#1384).
 * `lightning-block-sync`'s `init` and `poll` modules support `&dyn BlockSource`
   which can be determined at runtime (lightningdevkit#1423).
 * `lightning-invoice` crate's `utils` now accept an expiration time (lightningdevkit#1422,
   lightningdevkit#1474).
 * `Event::PaymentForwarded` includes `prev_channel_id` and `next_channel_id`
   (lightningdevkit#1419, lightningdevkit#1475).
 * `chain::Watch::release_pending_monitor_events`' return type now associates
   `MonitorEvent`s with funding `OutPoints` (lightningdevkit#1475).
 * `lightning-background-processor` crate's `Persister` trait has been moved to
   `lightning` crate's `util::persist` module, which now has a general
   `KVStorePersister` trait. Blanket implementations of `Persister` and
   `chainmonitor::Persist` are given for types implementing `KVStorePersister`.
   ` lightning-persister`'s `FilesystemPersister` implements `KVStorePersister`
   (lightningdevkit#1417).
 * `ChannelDetails` and `ChannelCounterparty` include fields for HTLC minimum
   and maximum values (lightningdevkit#1378).
 * Added a `max_inbound_htlc_value_in_flight_percent_of_channel` field to
   `ChannelHandshakeConfig`, capping the total value of outstanding inbound
   HTLCs for a channel (lightningdevkit#1444).
 * `ProbabilisticScorer` is parameterized by a `Logger`, which it uses to log
   channel liquidity updates or lack thereof (lightningdevkit#1405).
 * `ChannelDetails` has an `outbound_htlc_limit_msat` field, which should be
   used in routing instead of `outbound_capacity_msat` (lightningdevkit#1435).
 * `ProbabilisticScorer`'s channel liquidities can be logged via
   `debug_log_liquidity_stats` (lightningdevkit#1460).
 * `BackgroundProcessor` now takes an optional `WriteableScore` which it will
   persist using the `Persister` trait's new `persist_scorer` method (lightningdevkit#1416).
 * Upgraded to `bitcoin` crate version 0.28.1 (lightningdevkit#1389).
 * `ShutdownScript::new_witness_program` now takes a `WitnessVersion` instead of
   a `NonZeroU8` (lightningdevkit#1389).
 * Channels will no longer be automatically force closed when the counterparty
   is disconnected due to incompatibility (lightningdevkit#1429).
 * `ChannelManager` methods for funding, accepting, and closing channels now
   take a `counterparty_node_id` parameter, which has also been added as a field
   to `Event::FundingGenerationReady` (lightningdevkit#1479, lightningdevkit#1485).
 * `InvoicePayer::new` now takes a `Retry` enum (replacing the `RetryAttempts`
   struct), which supports both attempt- and timeout-based retrying (lightningdevkit#1418).
 * `Score::channel_penalty_msat` takes a `ChannelUsage` struct, which contains
   the capacity as an `EffectiveCapacity` enum and any potential in-flight HTLC
   value, rather than a single `u64`. Used by `ProbabilisticScorer` for more
   accurate penalties (lightningdevkit#1456).
 * `build_route_from_hops` is a new function useful for constructing a `Route`
   given a specific list of public keys (lightningdevkit#1491).
 * `FundingLocked` message has been renamed `ChannelReady`, and related
   identifiers have been renamed accordingly (lightningdevkit#1506).
 * `core2::io` or `std::io` (depending on feature flags `no-std` or `std`) is
   exported as a `lightning::io` module (lightningdevkit#1504).
 * The deprecated `Scorer` has been removed in favor or `ProbabilisticScorer`
   (lightningdevkit#1512).

Performance Improvements
========================

 * `lightning-persister` crate's `FilesystemPersister` is faster by 15x (lightningdevkit#1404).
 * Log gossip query messages at `GOSSIP` instead of `TRACE` to avoid
   overwhelming default logging (lightningdevkit#1421).
 * `PeerManager` supports processing messages from different peers in parallel,
   and this is taken advantage of in gossip processing (lightningdevkit#1023).
 * Greatly reduced per-channel and per-node memory usage due to upgrade of
   `secp256k1` crate to 0.22.1 and `bitcoin` crate to 0.28.1
 * Reduced per-peer memory usage in `PeerManager` (lightningdevkit#1472).

Spec Compliance
===============

 * `find_route` now assumes variable-length onions by default for nodes where
   support for the feature is unknown (lightningdevkit#1414).
 * A `warn` message is now sent when receiving a `channel_reestablish` with an
   old commitment transaction number rather than immediately force-closing the
   channel (lightningdevkit#1430).
 * When a `channel_update` message is included in an onion error's `failuremsg`,
   its message type is now encoded. Reading such messages is also supported
   (lightningdevkit#1465).

Bug Fixes
=========

 * Fixed a bug where crashing while persisting a `ChannelMonitorUpdate` for a
   part of a multi-path payment could cause loss of funds due to a partial
   payment claim on restart (lightningdevkit#1434).
 * `BackgroundProcessor` has been fixed to improve serialization reliability on
   slow systems which can avoid force-closes (lightningdevkit#1436).
 * `gossip_timestamp_filter` filters are now honored when sending gossip to
   peers (lightningdevkit#1452).
 * During a reorg, only force-close a channel if its funding transaction is
   unconfirmed rather than as it loses confirmations (lightningdevkit#1461).
 * Fixed a rare panic in `lightning-net-tokio` when fetching a peer's socket
   address after the connection has been closed caused by a race condition
   (lightningdevkit#1449).
 * `find_route` will no longer return routes that would cause onion construction
   to fail in some cases (lightningdevkit#1476).
 * `ProbabilisticScorer` uses more precision when approximating `log10` (lightningdevkit#1406).

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.
 * `ChannelManager` serialization is no longer compatible with versions prior to
   0.0.99 (lightningdevkit#1401).
 * Channels with `option_zeroconf` feature enabled (not required for 0-conf
   channel use) will be unreadable by versions prior to 0.0.107 (lightningdevkit#1401, lightningdevkit#1505).

In total, this release features 96 files changed, 9304 insertions, 4503
deletions in 153 commits from 18 authors, in alphabetical order:
 * Arik Sosman
 * Devrandom
 * Duncan Dean
 * Elias Rohrer
 * Jeffrey Czyz
 * John Cantrell
 * John Corser
 * Jurvis Tan
 * Justin Moon
 * KaFai Choi
 * Mateusz Faltyn
 * Matt Corallo
 * Valentine Wallace
 * Viktor Tigerström
 * Vincenzo Palazzo
 * atalw
 * dependabot[bot]
 * shamardy

v0.0.106

Toggle v0.0.106's commit message
v0.0.106

API Updates
===========

 * Minimum supported rust version (MSRV) is now 1.41.1 (lightningdevkit#1310).
 * Lightning feature `option_scid_alias` is now supported and may be negotiated
   when opening a channel with a peer. It can be configured via
   `ChannelHandshakeConfig::negotiate_scid_privacy` and is off by default but
   will be on by default in the future (lightningdevkit#1351).
 * `OpenChannelRequest` now has a `channel_type` field indicating the features
   the channel will operate with and should be used to filter channels with
   undesirable features (lightningdevkit#1351). See the Serialization Compatibility section.
 * `ChannelManager` supports sending and receiving short channel id aliases in
   the `funding_locked` message. These are used when forwarding payments and
   constructing invoice route hints for improved privacy. `ChannelDetails` has a
   `inbound_scid_alias` field and a `get_inbound_payment_scid` method to support
   the latter (lightningdevkit#1311).
 * `DefaultRouter` and `find_route` take an additional random seed to improve
   privacy by adding a random CLTV expiry offset to each path's final hop. This
   helps obscure the intended recipient from adversarial intermediate hops
   (lightningdevkit#1286). The seed is  also used to randomize candidate paths during route
   selection (lightningdevkit#1359).
 * The `lightning-block-sync` crate's `init::synchronize_listeners` method
   interface has been relaxed to support multithreaded environments (lightningdevkit#1349).
 * `ChannelManager::create_inbound_payment_for_hash`'s documentation has been
   corrected to remove the one-year restriction on `invoice_expiry_delta_secs`,
   which is only applicable to the deprecated `create_inbound_payment_legacy`
   and `create_inbound_payment_for_hash_legacy` methods (lightningdevkit#1341).
 * `Features` mutator methods now take `self` by reference instead of by value
   (lightningdevkit#1331).
 * The CLTV of the last hop in a path is now included when comparing against
   `RouteParameters::max_total_cltv_expiry_delta` (lightningdevkit#1358).
 * Invoice creation functions in `lightning-invoice` crate's `utils` module
   include versions that accept a description hash instead of only a description
   (lightningdevkit#1361).
 * `RoutingMessageHandler::sync_routing_table` has been renamed `peer_connected`
   (lightningdevkit#1368).
 * `MessageSendEvent::SendGossipTimestampFilter` has been added to indicate that
   a `gossip_timestamp_filter` should be sent (lightningdevkit#1368).
 * `PeerManager` takes an optional `NetAddress` in `new_outbound_connection` and
   `new_inbound_connection`, which is used to report back the remote address to
   the connecting peer in the `init` message (lightningdevkit#1326).
 * `ChannelManager::accept_inbound_channel` now takes a `user_channel_id`, which
   is used in a similar manner as in outbound channels. (lightningdevkit#1381).
 * `BackgroundProcessor` now persists `NetworkGraph` on a timer and upon
   shutdown as part of a new `Persister` trait, which also includes
   `ChannelManager` persistence (lightningdevkit#1376).
 * `ProbabilisticScoringParameters` now has a `base_penalty_msat` option, which
   default to 500 msats. It is applied at each hop to help avoid longer paths
   (lightningdevkit#1375).
 * `ProbabilisticScoringParameters::liquidity_penalty_multiplier_msat`'s default
   value is now 40,000 msats instead of 10,000 msats (lightningdevkit#1375).
 * The `lightning` crate has a `grind_signatures` feature used to produce
   signatures with low r-values for more predictable transaction weight. This
   feature is on by default (lightningdevkit#1388).
 * `ProbabilisticScoringParameters` now has a `amount_penalty_multiplier_msat`
   option, which is used to further penalize large amounts (lightningdevkit#1399).
 * `PhantomRouteHints`, `FixedPenaltyScorer`, and `ScoringParameters` now
   implement `Clone` (lightningdevkit#1346).

Bug Fixes
=========

 * Fixed a compilation error in `ProbabilisticScorer` under `--feature=no-std`
   (lightningdevkit#1347).
 * Invoice creation functions in `lightning-invoice` crate's `utils` module
   filter invoice hints in order to limit the invoice size (lightningdevkit#1325).
 * Fixed a bug where a `funding_locked` message was delayed by a block if the
   funding transaction was confirmed while offline, depending on the ordering
   of `Confirm::transactions_confirmed` calls when brought back online (lightningdevkit#1363).
 * Fixed a bug in `NetGraphMsgHandler` where it didn't continue to receive
   gossip messages from peers after initial connection (lightningdevkit#1368, lightningdevkit#1382).
 * `ChannelManager::timer_tick_occurred` will now timeout a received multi-path
   payment (MPP) after three ticks if not received in full instead of waiting
   until near the HTLC timeout block(lightningdevkit#1353).
 * Fixed an issue with `find_route` causing it to be overly aggressive in using
   MPP over channels to the same first hop (lightningdevkit#1370).
 * Reduced time spent processing `channel_update` messages by checking
   signatures after checking if no newer messages have already been processed
   (lightningdevkit#1380).
 * Fixed a few issues in `find_route` which caused preferring paths with a
   higher cost (lightningdevkit#1398).
 * Fixed an issue in `ProbabilisticScorer` where a channel with not enough
   liquidity could still be used when retrying a failed payment if it was on a
   path with an overall lower cost (lightningdevkit#1399).

Serialization Compatibility
===========================

 * Channels open with `option_scid_alias` negotiated will be incompatible with
   prior releases (lightningdevkit#1351). This may occur in the following cases:
   * Outbound channels when `ChannelHandshakeConfig::negotiate_scid_privacy` is
     enabled.
   * Inbound channels when automatically accepted from an `OpenChannel` message
     with a `channel_type` that has `ChannelTypeFeatures::supports_scid_privacy`
     return true. See `UserConfig::accept_inbound_channels`.
   * Inbound channels when manually accepted from an `OpenChannelRequest` with a
     `channel_type` that has `ChannelTypeFeatures::supports_scid_privacy` return
     true. See `UserConfig::manually_accept_inbound_channels`.

In total, this release features 43 files changed, 4052 insertions, 1274
deletions in 75 commits from 11 authors, in alphabetical order:
 * Devrandom
 * Duncan Dean
 * Elias Rohrer
 * Jeffrey Czyz
 * Jurvis Tan
 * Luiz Parreira
 * Matt Corallo
 * Omar Shamardy
 * Viktor Tigerström
 * dependabot[bot]
 * psycho-pirate