Add some trivial logging during RGS update processing.
[rust-lightning] / CHANGELOG.md
index 780b6720dba80db930f57aadac92293d0be5e506..d8475c003e0b2677f756fa117adf51ab9cc28f85 100644 (file)
@@ -1,3 +1,759 @@
+# 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 (#1812, #1916, #1929, #2007, etc).
+ * `Sign`/`BaseSign` has been renamed `ChannelSigner`, with `EcdsaChannelSigner`
+   split out in anticipation of future schnorr/taproot support (#1967).
+ * The catch-all `KeysInterface` was split into `EntropySource`, `NodeSigner`,
+   and `SignerProvider`. `KeysManager` implements all three (#1910, #1930).
+ * `KeysInterface::get_node_secret` is now `KeysManager::get_node_secret_key`
+   and is no longer required for external signers (#1951, #2070).
+ * A `lightning-transaction-sync` crate has been added which implements keeping
+   LDK in sync with the chain via an esplora server (#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` (#1996).
+ * `ChainAccess::get_utxo` (now `UtxoAccess`) can now be resolved async (#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 (#1927, #1908, #1926).
+ * A `lightning-custom-message` crate has been added to make combining multiple
+   custom messages into one enum/handler easier (#1832).
+ * `Event::PaymentPathFailed` is now generated for failure to send an HTLC
+   over the first hop on our local channel (#2014, #2043).
+ * `lightning-net-tokio` no longer requires an `Arc` on `PeerManager` (#1968).
+ * `ChannelManager::list_recent_payments` was added (#1873).
+ * `lightning-background-processor` `std` is now optional in async mode (#1962).
+ * `create_phantom_invoice` can now be used in `no-std` (#1985).
+ * The required final CLTV delta on inbound payments is now configurable (#1878)
+ * bitcoind RPC error code and message are now surfaced in `block-sync` (#2057).
+ * Get `historical_estimated_channel_liquidity_probabilities` was added (#1961).
+ * `ChannelManager::fail_htlc_backwards_with_reason` was added (#1948).
+ * Macros which implement serialization using TLVs or straight writing of struct
+   fields are now public (#1823, #1976, #1977).
+
+## Backwards Compatibility
+ * Any inbound payments with a custom final CLTV delta will be rejected by LDK
+   if you downgrade prior to receipt (#1878).
+ * `Event::PaymentPathFailed::network_update` will always be `None` if an
+   0.0.114-generated event is read by a prior version of LDK (#2043).
+ * `Event::PaymentPathFailed::all_paths_failed` 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 (#2043).
+
+## Performance Improvements
+ * Channel data is now stored per-peer and channel updates across multiple
+   peers can be operated on simultaneously (#1507).
+ * Routefinding is roughly 1.5x faster (#1799).
+ * Deserializing a `NetworkGraph` is roughly 6x faster (#2016).
+ * Memory usage for a `NetworkGraph` has been reduced substantially (#2040).
+ * `KeysInterface::get_secure_random_bytes` is roughly 200x faster (#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 (#2048).
+ * Fixed spurious rejections of rapid gossip sync data when the graph has been
+   updated by other means between gossip syncs (#2046).
+ * Fixed a panic in `KeysManager` when the high bit of `starting_time_nanos`
+   is set (#1935).
+ * Resolved an issue where the `ChannelManager::get_persistable_update_future`
+   future would fail to wake until a second notification occurs (#2064).
+ * Resolved a memory leak when using `ChannelManager::send_probe` (#2037).
+ * Fixed a deadlock on some platforms at least when using async `ChannelMonitor`
+   updating (#2006).
+ * Removed debug-only assertions which were reachable in threaded code (#1964).
+ * In some cases when payment sending fails on our local channel retries no
+   longer take the same path and thus never succeed (#2014).
+ * Retries for spontaneous payments have been fixed (#2002).
+ * Return an `Err` if `lightning-persister` fails to read the directory listing
+   rather than panicing (#1943).
+ * `peer_disconnected` will now never be called without `peer_connected` (#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 (#1988).
+ * A second `channel_ready` message received immediately after the first could
+   lead to a spurious panic (#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 (#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
+
+
+# 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 (#1761, #1826).
+ * HTLCs bound for SCIDs from `ChannelManager::get_intercept_scid` are now
+   intercepted and can be forwarded manually over any channel (#1835, #1893).
+ * `Confirm::get_relevant_txids` now returns a `BlockHash`, expanding the set
+   of cases where `transaction_unconfirmed` must be called, see docs (#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 (#1761).
+ * `ChannelManager::abandon_payment` docs were updated to note that the payment
+   may return to pending after a restart if no persistence occurs (#1907).
+ * `Event::PaymentReceived` has been renamed `Event::PaymentClaimable` (#1891).
+ * `Event` handling is now optionally async for Rust users (#1787).
+ * `user_channel_id` is now a `u128` and random for inbound channels (#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 (#1743).
+ * `NetworkGraph` now prunes channels where either node is offline for 2 weeks
+   and refuses to accept re-announcements of pruned channels (#1735).
+ * Onion messages are now read in `CustomOnionMessageHandler` rather than via
+   `MaybeReadableArgs` (#1809).
+ * Added a new util to generate an invoice with a custom hash (#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` (#1867).
+ * `Confirm::transactions_confirmed` is now idempotent (#1861).
+ * `ChannelManager::compute_inflight_htlcs` has been added to fetch in-flight
+   HTLCs for scoring. Note that `InvoicePayer` does this for you (#1830).
+ * Added `PaymentClaimable::via_channel_id` (#1856).
+ * Added the `node_id` (phantom or regular) to payment events (#1766).
+ * Added the funding transaction `confirmations` to `ChannelDetails` (#1856).
+ * `BlindedRoute` has been renamed `BlindedPath` (#1918).
+ * Support for the BOLT 4 "legacy" onion format has been removed, in line with
+   its removal in the spec and vanishingly rare use (#1413).
+ * `ChainMonitor::list_pending_monitor_updates` was added (#1834).
+ * Signing for non-zero-fee anchor commitments is supported again (#1828).
+ * Several helpers for transaction matching and generation are now pub (#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 (#1857).
+ * Avoid incorrectly assigning a lower-bound on channel liquidity when routing
+   fails due to a closed channel earlier in the path (#1817).
+ * If a counterparty increases the channel fee, but not enough per our own fee
+   estimator, we no longer force-close the channel (#1852).
+ * Several bugs in the `lightning-background-processor` `future` feature were
+   fixed, including requirements doc corrections (#1843, #1845, #1851).
+ * Some failure messages sent back when failing an HTLC were corrected (#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 (#1833).
+ * Sending onion messages to a blinded path in which we're the introduction
+   node no longer fails (#1791).
+
+## Backwards Compatibility
+ * No `ChannelReady` events will be generated for previously existing channels,
+   including those which become ready after upgrading to 0.0.113 (#1743).
+ * Once `UserConfig::accept_intercept_htlcs` is set, downgrades to LDK versions
+   prior to 0.0.113 are not supported (#1835).
+ * Existing payments may see a `PaymentClaimable::user_channel_id` of 0 (#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` (#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
+
+
+# 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 (#1106).
+ * `ChannelMonitor` persistence failure no longer automatically broadcasts the
+   latest commitment transaction. See the
+   `ChannelMonitorUpdateStatus::PermanentFailure` docs for more info (#1106).
+ * `*Features::known` has been replaced with individual
+   `*MessageHandler::provided_*_features` methods (#1707).
+ * `OnionMessenger` now takes a `CustomOnionMessageHandler` implementation,
+   allowing you to send and receive custom onion messages (#1748).
+ * `ProbabilisticScorer` now tracks the historical distribution of liquidity
+   estimates for channels. See new `historical_*` parameters in
+   `ProbabilisticScoringParameters` for more details (#1625).
+ * `lightning-block-sync`'s `BlockSource` trait now supports BIP 157/158
+   filtering clients by returning only header data for some blocks (#1706).
+ * `lightning-invoice`'s `Router` trait now accepts an `InFlightHtlcs` to
+   ensure we do not over-use a remote channel's funds during routing (#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 (#1649).
+ * The `lightning-rapid-gossip-sync` crate now supports `no-std` (#1708).
+ * The default `ProbabilisticScoringParameters::liquidity_offset_half_life` has
+   been increased to six hours from one (#1754).
+ * All commitment transaction building logic for anchor outputs now assumes the
+   no-HTLC-tx-fee variant (#1685).
+ * A number of missing `Eq` implementations were added (#1763).
+
+## Bug Fixes
+ * `lightning-background-processor` now builds without error with the `futures`
+   feature (#1744).
+ * `ChannelManager::get_persistable_update_future`'s returned `Future` has been
+   corrected to not fail to be awoken in some cases (#1758).
+ * Asynchronously performing the initial `ChannelMonitor` persistence is now
+   safe (#1678).
+ * Redundantly applying rapid gossip sync updates no longer `Err`s (#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 (#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
+
+# 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
+   (#1503, #1650, #1652, #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 (#1604. #1660, #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 (#1657).
+ * `ChannelManager::get_persistable_update_future` has been added to block on
+   a ChannelManager needing re-persistence in a Rust async environment (#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 (#1663).
+ * `ChannelHandshakeConfig::their_channel_reserve_proportional_millionths` has
+   been added to allow configuring counterparty reserve values (#1619).
+ * `KeysInterface::ecdh` has been added as an ECDH oracle (#1503, #1658).
+ * The `rust-bitcoin` dependency has been updated 0.29 (#1658).
+ * The `bitcoin_hashes` dependency has been updated 0.11 (#1677).
+ * `ChannelManager::broadcast_node_announcement` has been moved to
+   `PeerManager` (#1699).
+ * `channel_` and `node_announcement`s are now rebroadcast automatically to all
+   new peers which connect (#1699).
+ * `{Init,Node}Features` sent to peers/broadcasted are now fetched via the
+   various `*MessageHandler` traits, rather than hard-coded (#1701, #1688).
+ * `Event::PaymentPathFailed::rejected_by_dest` has been renamed
+   `payment_failed_permanently` (#1702).
+ * `Invoice` now derives the std `Hash` trait (#1575).
+ * `{Signed,}RawInvoice::hash` have been renamed `signable_hash` (#1714).
+ * `chain::AccessError` now derives the std `Debug` trait (#1709).
+ * `ReadOnlyNetworkGraph::list_{channels,nodes}` have been added largely for
+   users of downstream bindings (#1651).
+ * `ChannelMonitor::get_counterparty_node_id` is now available (#1635).
+
+## Bug Fixes
+ * The script compared with that returned from `chain::Access` was incorrect
+   ~half of the time, causing spurious gossip rejection (#1666).
+ * Pending in-flight HTLCs are now considered when calculating new routes,
+   ensuring, e.g. MPP retries do not take known-saturated paths (#1643).
+ * Counterparty-revoked outputs are now included in `get_claimable_balance`
+   output via a new `Balance::CounterpartyRevokedOutputClaimable` (#1495).
+ * Inbound HTLCs for which we do not (yet) have a preimage are now included in
+   `get_claimable_balance` via a `Balance::MaybePreimageClaimableHTLC` (#1673).
+ * Probes that fail prior to being sent over their first hop are correctly
+   failed with a `Event::ProbeFailed` rather than a `PaymentPathFailed` (#1704).
+ * Pending `Event::HTLCHandlingFailed`s are no longer lost on restart (#1700).
+ * HTLCs that fail prior to being sent over their first hop are now marked as
+   retryable via `!PaymentPathFailed::payment_failed_permanently` (#1702).
+ * Dust HTLCs are now considered failed in the payment tracking logic after the
+   commitment transaction confirms, allowing retry on restart (#1691).
+ * On machines with buggy "monotonic" clocks, LDK will no longer panic if time
+   goes backwards (#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 (#1699).
+ * `Balance::CounterpartyRevokedOutputClaimable` will never be generated for
+   channels that were observed to go on-chain with LDK versions prior to
+   0.0.111 (#1495).
+ * `ChannelMonitor::get_counterparty_node_id` will return `None` for all
+   channels opened on a version of LDK prior to 0.0.110 (#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` (#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 (#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
+
+
+# 0.0.110 - 2022-07-26 - "Routing, With a Vengeance"
+
+## 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 (#1567).
+ * `ProbabilisticScoringParameters::banned_nodes` has been renamed
+   `manual_node_penalties` and changed to take msat penalties (#1592).
+ * Per-payment tracking of failed paths was added to enable configuration of
+   `ProbabilisticScoringParameters::considered_impossible_penalty_msat` (#1600)
+ * `ProbabilisticScoringParameters::base_penalty_amount_multiplier_msat` was
+   added to allow a penalty that is only amount-dependent (#1617).
+ * `ProbabilisticScoringParameters::amount_penalty_multiplier_msat` was renamed
+   `liquidity_penalty_amount_multiplier_msat` (#1617).
+ * A new `Event::HTLCHandlingFailed` has been added which provides visibility
+   into failures to forward/claim accepted HTLCs (#1403).
+ * Support has been added for DNS hostnames in the `NetAddress` type, see
+   [BOLT PR #911](https://github.com/lightning/bolts/pull/911) (#1553).
+ * `GossipSync` now has `rapid`, `p2p`, and `none` constructors (#1618).
+ * `lightning-net-tokio` no longer requires types to be in `Arc`s (#1623).
+ * The `htlc_maximum_msat` field is now required in `ChannelUpdate` gossip
+   messages. In tests this rejects < 1% of channels (#1519).
+ * `ReadOnlyNetworkGraph::{channel,node}` have been added to query for
+   individual channel/node data, primarily for bindings users (#1543).
+ * `FeeEstimator` implementations are now wrapped internally to ensure values
+   below 253 sats/kW are never used (#1552).
+ * Route selection no longer attempts to randomize path selection. This is
+   unlikely to lead to a material change in the paths selected (#1610).
+
+## Bug Fixes
+ * Fixed a panic when deserializing `ChannelDetails` objects (#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` (#1605).
+ * Fixed a panic which occurred in `ProbabilisticScorer` when wallclock time
+   goes backwards across a restart (#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 (#1519).
+ * Similarly, node information written in the `NetworkGraph` which contains an
+   invalid hostname may be dropped on deserialization (#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
+
+# 0.0.109 - 2022-07-01 - "The Kitchen Sink"
+
+## API Updates
+ * `ChannelManager::update_channel_config` has been added to allow the fields
+   in `ChannelConfig` to be changed in a given channel after open (#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 (#1564).
+ * A `NodeAlias` struct has been added which handles string sanitization for
+   node aliases via the `Display` trait (#1544).
+ * `ProbabilisticScoringParameters` now has a `banned_nodes` set which we will
+    never route through during path finding (#1550).
+ * `ProbabilisticScoringParameters` now offers an `anti_probing_penalty_msat`
+   option to prefer channels which afford better privacy when routing (#1555).
+ * `ProbabilisticScorer` now provides access to its estimated liquidity range
+   for a given channel via `estimated_channel_liquidity_range` (#1549).
+ * `ChannelManager::force_close_channel` has been renamed
+   `force_close_broadcasting_latest_txn` and
+   `force_close_without_broadcasting_txn` has been added (#1564).
+ * Options which cannot be changed at runtime have been moved from
+   `ChannelConfig` to `ChannelHandshakeConfig` (#1529).
+ * `find_route` takes `&NetworkGraph` instead of `ReadOnlyNetworkGraph (#1583).
+ * `ChannelDetails` now contains a copy of the current `ChannelConfig` (#1527).
+ * The `lightning-invoice` crate now optionally depends on `serde`, with
+   `Invoice` implementing `serde::{Deserialize,Serialize}` if enabled (#1548).
+ * Several fields in `UserConfig` have been renamed for clarity (#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 (#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 (#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 (#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
+
+
+# 0.0.108 - 2022-06-10 - "You Wanted It To Build?! Why Didn't You Say So?"
+
+## 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
+
+# 0.0.107 - 2022-06-08 - "BlueWallet's Wishlist"
+
+## API Updates
+ * Channels larger than 16777215 sats (Wumbo!) are now supported and can be
+   enabled for inbound channels using
+   `ChannelHandshakeLimits::max_funding_satoshis` (#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 (#1401, #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
+   (#1434).
+ * `lightning-rapid-gossip-sync` is a new crate for syncing gossip data from a
+   server, primarily aimed at mobile devices (#1155).
+ * `RapidGossipSync` can be passed to `BackgroundProcessor` in order to persist
+   the `NetworkGraph` and handle `NetworkUpdate`s during event handling (#1433,
+   #1517).
+ * `NetGraphMsgHandler` has been renamed to `P2PGossipSync`, the `network_graph`
+    module has been renamed to `gossip`, and `NetworkUpdate::ChannelClosed` has
+   been renamed `NetworkUpdate::ChannelFailure` (#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 (#1453).
+ * The `lightning-block-sync` crate's `BlockSource` trait methods now take
+   `&self` instead of `&mut self` (#1307).
+ * `inbound_payment` module is now public to allow for creating invoices without
+   a `ChannelManager` (#1384).
+ * `lightning-block-sync`'s `init` and `poll` modules support `&dyn BlockSource`
+   which can be determined at runtime (#1423).
+ * `lightning-invoice` crate's `utils` now accept an expiration time (#1422,
+   #1474).
+ * `Event::PaymentForwarded` includes `prev_channel_id` and `next_channel_id`
+   (#1419, #1475).
+ * `chain::Watch::release_pending_monitor_events`' return type now associates
+   `MonitorEvent`s with funding `OutPoints` (#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`
+   (#1417).
+ * `ChannelDetails` and `ChannelCounterparty` include fields for HTLC minimum
+   and maximum values (#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 (#1444).
+ * `ProbabilisticScorer` is parameterized by a `Logger`, which it uses to log
+   channel liquidity updates or lack thereof (#1405).
+ * `ChannelDetails` has an `outbound_htlc_limit_msat` field, which should be
+   used in routing instead of `outbound_capacity_msat` (#1435).
+ * `ProbabilisticScorer`'s channel liquidities can be logged via
+   `debug_log_liquidity_stats` (#1460).
+ * `BackgroundProcessor` now takes an optional `WriteableScore` which it will
+   persist using the `Persister` trait's new `persist_scorer` method (#1416).
+ * Upgraded to `bitcoin` crate version 0.28.1 (#1389).
+ * `ShutdownScript::new_witness_program` now takes a `WitnessVersion` instead of
+   a `NonZeroU8` (#1389).
+ * Channels will no longer be automatically force closed when the counterparty
+   is disconnected due to incompatibility (#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` (#1479, #1485).
+ * `InvoicePayer::new` now takes a `Retry` enum (replacing the `RetryAttempts`
+   struct), which supports both attempt- and timeout-based retrying (#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 (#1456).
+ * `build_route_from_hops` is a new function useful for constructing a `Route`
+   given a specific list of public keys (#1491).
+ * `FundingLocked` message has been renamed `ChannelReady`, and related
+   identifiers have been renamed accordingly (#1506).
+ * `core2::io` or `std::io` (depending on feature flags `no-std` or `std`) is
+   exported as a `lightning::io` module (#1504).
+ * The deprecated `Scorer` has been removed in favor or `ProbabilisticScorer`
+   (#1512).
+
+## Performance Improvements
+ * `lightning-persister` crate's `FilesystemPersister` is faster by 15x (#1404).
+ * Log gossip query messages at `GOSSIP` instead of `TRACE` to avoid
+   overwhelming default logging (#1421).
+ * `PeerManager` supports processing messages from different peers in parallel,
+   and this is taken advantage of in gossip processing (#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` (#1472).
+
+## Spec Compliance
+ * `find_route` now assumes variable-length onions by default for nodes where
+   support for the feature is unknown (#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 (#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
+   (#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 (#1434).
+ * `BackgroundProcessor` has been fixed to improve serialization reliability on
+   slow systems which can avoid force-closes (#1436).
+ * `gossip_timestamp_filter` filters are now honored when sending gossip to
+   peers (#1452).
+ * During a reorg, only force-close a channel if its funding transaction is
+   unconfirmed rather than as it loses confirmations (#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
+   (#1449).
+ * `find_route` will no longer return routes that would cause onion construction
+   to fail in some cases (#1476).
+ * `ProbabilisticScorer` uses more precision when approximating `log10` (#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 (#1401).
+ * Channels with `option_zeroconf` feature enabled (not required for 0-conf
+   channel use) will be unreadable by versions prior to 0.0.107 (#1401, #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
+ * Matt Faltyn
+ * Matt Corallo
+ * Valentine Wallace
+ * Viktor Tigerström
+ * Vincenzo Palazzo
+ * atalw
+ * dependabot[bot]
+ * shamardy
+
+
+# 0.0.106 - 2022-04-03
+
+## API Updates
+ * Minimum supported rust version (MSRV) is now 1.41.1 (#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 (#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 (#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 (#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
+   (#1286). The seed is  also used to randomize candidate paths during route
+   selection (#1359).
+ * The `lightning-block-sync` crate's `init::synchronize_listeners` method
+   interface has been relaxed to support multithreaded environments (#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 (#1341).
+ * `Features` mutator methods now take `self` by reference instead of by value
+   (#1331).
+ * The CLTV of the last hop in a path is now included when comparing against
+   `RouteParameters::max_total_cltv_expiry_delta` (#1358).
+ * Invoice creation functions in `lightning-invoice` crate's `utils` module
+   include versions that accept a description hash instead of only a description
+   (#1361).
+ * `RoutingMessageHandler::sync_routing_table` has been renamed `peer_connected`
+   (#1368).
+ * `MessageSendEvent::SendGossipTimestampFilter` has been added to indicate that
+   a `gossip_timestamp_filter` should be sent (#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 (#1326).
+ * `ChannelManager::accept_inbound_channel` now takes a `user_channel_id`, which
+   is used in a similar manner as in outbound channels. (#1381).
+ * `BackgroundProcessor` now persists `NetworkGraph` on a timer and upon
+   shutdown as part of a new `Persister` trait, which also includes
+   `ChannelManager` persistence (#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
+   (#1375).
+ * `ProbabilisticScoringParameters::liquidity_penalty_multiplier_msat`'s default
+   value is now 40,000 msats instead of 10,000 msats (#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 (#1388).
+ * `ProbabilisticScoringParameters` now has a `amount_penalty_multiplier_msat`
+   option, which is used to further penalize large amounts (#1399).
+ * `PhantomRouteHints`, `FixedPenaltyScorer`, and `ScoringParameters` now
+   implement `Clone` (#1346).
+
+## Bug Fixes
+ * Fixed a compilation error in `ProbabilisticScorer` under `--feature=no-std`
+   (#1347).
+ * Invoice creation functions in `lightning-invoice` crate's `utils` module
+   filter invoice hints in order to limit the invoice size (#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 (#1363).
+ * Fixed a bug in `NetGraphMsgHandler` where it didn't continue to receive
+   gossip messages from peers after initial connection (#1368, #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(#1353).
+ * Fixed an issue with `find_route` causing it to be overly aggressive in using
+   MPP over channels to the same first hop (#1370).
+ * Reduced time spent processing `channel_update` messages by checking
+   signatures after checking if no newer messages have already been processed
+   (#1380).
+ * Fixed a few issues in `find_route` which caused preferring paths with a
+   higher cost (#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 (#1399).
+
+## Serialization Compatibility
+ * Channels open with `option_scid_alias` negotiated will be incompatible with
+   prior releases (#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
+
+
 # 0.0.105 - 2022-02-28
 
 ## API Updates
    0.0.104 or before and then upgrading again will invalidate existing phantom
    SCIDs which may be included in invoices (#1199).
 
-In total, this release features 108 files changed, 6914 insertions, 2095
-deletions in 102 commits from 15 authors, in alphabetical order:
+## Security
+0.0.105 fixes two denial-of-service vulnerabilities which may be reachable from
+untrusted input in certain application designs.
+
+ * Route calculation spuriously panics when a routing decision is made for a
+   path where the second-to-last hop is a private channel, included due to a
+   multi-hop route hint in an invoice.
+ * `ChannelMonitor::get_claimable_balances` spuriously panics in some scenarios
+   when the LDK application's local commitment transaction is confirmed while
+   HTLCs are still pending resolution.
+
+In total, this release features 109 files changed, 7270 insertions, 2131
+deletions in 108 commits from 15 authors, in alphabetical order:
  * Conor Okus
  * Devrandom
  * Elias Rohrer
@@ -453,7 +1220,7 @@ deletions in 89 commits from 12 authors, in alphabetical order:
  * vss96
 
 
-# 0.0.100 - 2021-08-17
+# 0.0.100 - 2021-08-17 - "Oh, so *that's* what's going on inside the box"
 
 ## API Updates
  * The `lightning` crate can now be built in no_std mode, making it easy to
@@ -546,7 +1313,7 @@ In total, this release features 59 files changed, 5861 insertions, and 2082
 deletions in 95 commits from 6 authors.
 
 
-# 0.0.99 - 2021-07-09
+# 0.0.99 - 2021-07-09 - "It's a Bugz Life"
 
 ## API Updates
 
@@ -617,7 +1384,7 @@ deletions in 95 commits from 6 authors.
    versions. If you have such a `ChannelManager` available, a simple patch will
    allow it to deserialize. Please file an issue if you need assistance (#973).
 
-# 0.0.98 - 2021-06-11
+# 0.0.98 - 2021-06-11 - "It's ALIVVVVEEEEEEE"
 
 0.0.98 should be considered a release candidate to the first alpha release of
 Rust-Lightning and the broader LDK. It represents several years of work