v0.0.105
object 6259e7a674c1e5ca216e75ffcdbe8884c167bf57
authorMatt Corallo <git@bluematt.me>
Tue, 1 Mar 2022 04:14:58 +0000 (04:14 +0000)
v0.0.105

 * `Phantom node` payments are now supported, allowing receipt of a payment on
   any one of multiple nodes without any coordination across the nodes being
   required. See the new `PhantomKeysManager`'s docs for more, as well as
   requirements on `KeysInterface::get_inbound_payment_key_material` and
   `lightning_invoice::utils::create_phantom_invoice` (#1199).
 * In order to support phantom node payments, several `KeysInterface` methods
   now accept a `Recipient` parameter to select between the local `node_id` and
   a phantom-specific one.
 * `ProbabilisticScorer`, a `Score` based on learning the current balances of
   channels in the network, was added. It attempts to better capture payment
   success probability than the existing `Scorer`, though may underperform on
   nodes with low payment volume. We welcome feedback on performance (#1227).
 * `Score::channel_penalty_msat` now always takes the channel value, instead of
   an `Option` (#1227).
 * `UserConfig::manually_accept_inbound_channels` was added which, when set,
   generates a new `Event::OpenChannelRequest`, which allows manual acceptance
   or rejection of incoming channels on a per-channel basis (#1281).
 * `Payee` has been renamed to `PaymentParameters` (#1271).
 * `PaymentParameters` now has a `max_total_cltv_expiry_delta` field. This
   defaults to 1008 and limits the maximum amount of time an HTLC can be pending
   before it will either fail or be claimed (#1234).
 * The `lightning-invoice` crate now supports no-std environments. This required
   numerous API changes around timestamp handling and std+no-std versions of
   several methods that previously assumed knowledge of the time (#1223, #1230).
 * `lightning-invoice` now supports parsing invoices with expiry times of more
   than one year. This required changing the semantics of `ExpiryTime` (#1273).
 * The `CounterpartyCommitmentSecrets` is now public, allowing external uses of
   the `BOLT 3` secret storage scheme (#1299).
 * Several `Sign` methods now receive HTLC preimages as proof of state
   transition, see new documentation for more (#1251).
 * `KeysInterface::sign_invoice` now provides the HRP and other invoice data
   separately to make it simpler for external signers to parse (#1272).
 * `Sign::sign_channel_announcement` now returns both the node's signature and
   the per-channel signature. `InMemorySigner` now requires the node's secret
   key in order to implement this (#1179).
 * `ChannelManager` deserialization will now fail if the `KeysInterface` used
   has a different `node_id` than the `ChannelManager` expects (#1250).
 * A new `ErrorAction` variant was added to send `warning` messages (#1013).
 * Several references to `chain::Listen` objects in `lightning-block-sync` no
   longer require a mutable reference (#1304).

 * Fixed a regression introduced in 0.0.104 where `ChannelManager`'s internal
   locks could have an order violation leading to a deadlock (#1238).
 * Fixed cases where slow code (including user I/O) could cause us to
   disconnect peers with ping timeouts in `BackgroundProcessor` (#1269).
 * Now persist the `ChannelManager` prior to `BackgroundProcessor` stopping,
   preventing race conditions where channels are closed on startup even with a
   clean shutdown. This requires that users stop network processing and
   disconnect peers prior to `BackgroundProcessor` shutdown (#1253).
 * Fields in `ChannelHandshakeLimits` provided via the `override_config` to
   `create_channel` are now applied instead of the default config (#1292).
 * Fixed the generation of documentation on docs.rs to include API surfaces
   which are hidden behind feature flags (#1303).
 * Added the `channel_type` field to `accept_channel` messages we send, which
   may avoid some future compatibility issues with other nodes (#1314).
 * Fixed a bug where, if a previous LDK run using `lightning-persister` crashed
   while persisting updated data, we may have failed to initialize (#1332).
 * Fixed a rare bug where having both pending inbound and outbound HTLCs on a
   just-opened inbound channel could cause `ChannelDetails::balance_msat` to
   underflow and be reported as large, or cause panics in debug mode (#1268).
 * Moved more instances of verbose gossip logging from the `Trace` level to the
   `Gossip` level (#1220).
 * Delayed `announcement_signatures` until the channel has six confirmations,
   slightly improving propagation of channel announcements (#1179).
 * Several fixes in script and transaction weight calculations when anchor
   outputs are enabled (#1229).

 * Using `ChannelManager` data written by versions prior to 0.0.105 will result
   in preimages for HTLCs that were pending at startup to be missing in calls
   to `KeysInterface` methods (#1251).
 * Any phantom invoice payments received on a node that is not upgraded to
   0.0.105 will fail with an "unknown channel" error. Further, downgrading to
   0.0.104 or before and then upgrading again will invalidate existing phantom
   SCIDs which may be included in invoices (#1199).

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
 * Jeffrey Czyz
 * Jurvis Tan
 * Ken Sedgwick
 * Matt Corallo
 * Naveen
 * Tibo-lg
 * Valentine Wallace
 * Viktor Tigerström
 * dependabot[bot]
 * hackerrdave
 * naveen
 * vss96
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEAMEnFUKGmY5X9GTzY4nT3sg4n6EFAmIdnd0ACgkQY4nT3sg4
n6G4rA/+LwcmgW7ImBN1MgEYu7I1UYDsiS8AtUdjxpDxKx8QPgvHXi2TqDUXszQ1
4pbtLgtMLrrwGa7+yJvUWSbDte/HeFdj9Lr5i9YhK2xKAwj2r4gb8EhglTrB+p6a
PClciU9IQ72aBLoH8eoQarxaSAehR2qG59TIIhVT+9/+tRHZIRC0EZY44rN+Ex4P
tUhlXSR97+42apnRFtulUEwOBmYEhSky76ZtS7/rconpXNLZQvxqbo5mZmmIm8hD
1HlXFljGFbGBO30r2fQjK+K+yn9aMqMKGpoBLy9OEFZNB52mAJ5KPF6J8IeXJeL+
YlwDk9kS6LnNttiWqX8wm1HvbQvPwHCRiiJQtrqqdCC1X/M0czc3xtANs3/OqVe0
53hFO2WwdFk3QgHrqB153/tUXyL08i3psiq6thHWuCmOxmcIbdauKl8AJl8NT364
38TKBHzlbOz42qicZvkTaoV+5V7QwbUNXESZfMI3jaoJlPxgBcqVTCCLv/b2vNQ6
7jxP/iUFebr0ypQE2PEfpUkqkdaK+liKfl27HCq5Ax+tCIHjXjZEhAeDPAnxCSfF
7HAljTiBAf+7rqMU7Grf/SYf+4P12I9yoDSJenV1qYWZz878a7K2XBHCoRewvYE2
x7lAjsj7o8A6Kpj62yu2amJWsJUo+7vTIRTo9S/zV2ZDX6VmVUg=
=S6Yk
-----END PGP SIGNATURE-----