v0.0.119 - Dec 15, 2023 - "Spring Cleaning for Christmas"
API Updates
===========
* The LDK crate ecosystem MSRV has been increased to 1.63 (#2681).
* The `bitcoin` dependency has been updated to version 0.30 (#2740).
* `lightning-invoice::payment::*` have been replaced with parameter generation
via `payment_parameters_from[_zero_amount]_invoice` (#2727).
* `{CoinSelection,Wallet}Source::sign_tx` are now `sign_psbt`, providing more
information, incl spent outputs, about the transaction being signed (#2775).
* Logger `Record`s now include `channel_id` and `peer_id` fields. These are
opportunistically filled in when a log record is specific to a given channel
and/or peer, and may occasionally be spuriously empty (#2314).
* When handling send or reply onion messages (e.g. for BOLT12 payments), a new
`Event::ConnectionNeeded` may be raised, indicating a direct connection
should be made to a payee or an introduction point. This event is expected to
be removed once onion message forwarding is widespread in the network (#2723)
* Scoring data decay now happens via `ScoreUpDate::time_passed`, called from
`lightning-background-processor`. `process_events_async` now takes a new
time-fetch function, and `ScoreUpDate` methods now take the current time as a
`Duration` argument. This avoids fetching time during pathfinding (#2656).
* Receiving payments to multi-hop blinded paths is now supported (#2688).
* `MessageRouter` and `Router` now feature methods to generate blinded paths to
the local node for incoming messages and payments. `Router` now extends
`MessageRouter`, and both are used in `ChannelManager` when processing or
creating BOLT12 structures to generate multi-hop blinded paths (#1781).
* `lightning-transaction-sync` now supports Electrum-based sync (#2685).
* `Confirm::get_relevant_txids` now returns the height at which a transaction
was confirmed. This can be used to assist in reorg detection (#2685).
* `ConfirmationTarget::MaxAllowedNonAnchorChannelRemoteFee` has been removed.
Non-anchor channel feerates are bounded indirectly through
`ChannelConfig::max_dust_htlc_exposure` (#2696).
* `lightning-invoice` `Description`s now rely on `UntrustedString` for
sanitization (#2730).
* `ScoreLookUp::channel_penalty_msat` now uses `CandidateRouteHop` (#2551).
* The `EcdsaChannelSigner` trait was moved to `lightning::sign::ecdsa` (#2512).
* `SignerProvider::get_destination_script` now takes `channel_keys_id` (#2744)
* `SpendableOutputDescriptor::StaticOutput` now has `channel_keys_id` (#2749).
* `EcdsaChannelSigner::sign_counterparty_commitment` now takes HTLC preimages
for both inbound and outbound HTLCs (#2753).
* `ClaimedHTLC` now includes a `counterparty_skimmed_fee_msat` field (#2715).
* `peel_payment_onion` was added to decode an encrypted onion for a payment
without receiving an HTLC. This allows for stateless verification of if a
theoretical payment would be accepted prior to receipt (#2700).
* `create_payment_onion` was added to construct an encrypted onion for a
payment path without sending an HTLC immediately (#2677).
* Various keys used in channels are now wrapped to provide type-safety for
specific usages of the keys (#2675).
* `TaggedHash` now includes the raw `tag` and `merkle_root` (#2687).
* `Offer::is_expired_no_std` was added (#2689).
* `PaymentPurpose::preimage()` was added (#2768).
* `temporary_channel_id` can now be specified in `create_channel` (#2699).
* Wire definitions for splicing messages were added (#2544).
* Various `lightning-invoice` structs now impl `Display`, now have pub fields,
or impl `From` (#2730).
* The `Hash` trait is now implemented for more structs, incl P2P msgs (#2716).
Performance Improvements
========================
* Memory allocations (though not memory usage) have been substantially reduced,
meaning less overhead and hopefully less memory fragmentation (#2708, #2779).
Bug Fixes
=========
* Since 0.0.117, calling `close_channel*` on a channel which has not yet been
funded would previously result in an infinite loop and hang (#2760).
* Since 0.0.116, sending payments requiring data in the onion for the recipient
which was too large for the onion may have caused corruption which resulted
in payment failure (#2752).
* Cooperative channel closure on channels with remaining output HTLCs may have
spuriously force-closed (#2529).
* In LDK versions 0.0.116 through 0.0.118, in rare cases where skimmed fees are
present on shutdown the `ChannelManager` may fail to deserialize (#2735).
* `ChannelConfig::max_dust_exposure` values which, converted to absolute fees,
exceeded 2^63 - 1 would result in an overflow and could lead to spurious
payment failures or channel closures (#2722).
* In cases where LDK is operating with provably-stale state, it panics to
avoid funds loss. This may not have happened in cases where LDK was behind
only exactly one state, leading instead to a revoked broadcast and funds
loss (#2721).
* Fixed a bug where decoding `Txid`s from Bitcoin Core JSON-RPC responses using
`lightning-block-sync` would not properly byte-swap the hash. Note that LDK
does not use this API internally (#2796).
Backwards Compatibility
=======================
* `ChannelManager`s written with LDK 0.0.119 are no longer readable by versions
of LDK prior to 0.0.113. Users wishing to downgrade to LDK 0.0.112 or before
can read an 0.0.119-serialized `ChannelManager` with a version of LDK from
0.0.113 to 0.0.118, re-serialize it, and then downgrade (#2708).
* Nodes that upgrade to 0.0.119 and subsequently downgrade after receiving a
payment to a blinded path may leak recipient information if one or more of
those HTLCs later fails (#2688).
* Similarly, forwarding a blinded HTLC and subsequently downgrading to an LDK
version prior to 0.0.119 may result in leaking the path information to the
payment sender (#2540).
In total, this release features 148 files changed, 13780 insertions, 6279
deletions in 280 commits from 22 authors, in alphabetical order:
* Arik Sosman
* Chris Waterson
* Elias Rohrer
* Evan Feenstra
* Gursharan Singh
* Jeffrey Czyz
* John Cantrell
* Lalitmohansharma1
* Matt Corallo
* Matthew Rheaume
* Orbital
* Rachel Malonson
* Valentine Wallace
* Willem Van Lint
* Wilmer Paulino
* alexanderwiederin
* benthecarman
* henghonglee
* jbesraa
* olegkubrakov
* optout
* shaavan
-----BEGIN PGP SIGNATURE-----