+# 0.0.109 - 2022-06-30
+
+## 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).
+ * 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
## Bug Fixes
* Jurvis Tan
* Justin Moon
* KaFai Choi
- * Mateusz Faltyn
+ * Matt Faltyn
* Matt Corallo
* Valentine Wallace
* Viktor Tigerström
[package]
name = "lightning-background-processor"
-version = "0.0.108"
+version = "0.0.109"
authors = ["Valentine Wallace <vwallace@protonmail.com>"]
license = "MIT OR Apache-2.0"
repository = "http://github.com/lightningdevkit/rust-lightning"
[dependencies]
bitcoin = "0.28.1"
-lightning = { version = "0.0.108", path = "../lightning", features = ["std"] }
-lightning-rapid-gossip-sync = { version = "0.0.108", path = "../lightning-rapid-gossip-sync" }
+lightning = { version = "0.0.109", path = "../lightning", features = ["std"] }
+lightning-rapid-gossip-sync = { version = "0.0.109", path = "../lightning-rapid-gossip-sync" }
[dev-dependencies]
-lightning = { version = "0.0.108", path = "../lightning", features = ["_test_utils"] }
-lightning-invoice = { version = "0.16.0", path = "../lightning-invoice" }
-lightning-persister = { version = "0.0.108", path = "../lightning-persister" }
+lightning = { version = "0.0.109", path = "../lightning", features = ["_test_utils"] }
+lightning-invoice = { version = "0.17.0", path = "../lightning-invoice" }
+lightning-persister = { version = "0.0.109", path = "../lightning-persister" }
[package]
name = "lightning-block-sync"
-version = "0.0.108"
+version = "0.0.109"
authors = ["Jeffrey Czyz", "Matt Corallo"]
license = "MIT OR Apache-2.0"
repository = "http://github.com/lightningdevkit/rust-lightning"
[dependencies]
bitcoin = "0.28.1"
-lightning = { version = "0.0.108", path = "../lightning" }
+lightning = { version = "0.0.109", path = "../lightning" }
futures = { version = "0.3" }
tokio = { version = "1.0", features = [ "io-util", "net", "time" ], optional = true }
serde = { version = "1.0", features = ["derive"], optional = true }
[package]
name = "lightning-invoice"
description = "Data structures to parse and serialize BOLT11 lightning invoices"
-version = "0.16.0"
+version = "0.17.0"
authors = ["Sebastian Geisler <sgeisler@wh2.tu-dresden.de>"]
documentation = "https://docs.rs/lightning-invoice/"
license = "MIT OR Apache-2.0"
[dependencies]
bech32 = { version = "0.8", default-features = false }
-lightning = { version = "0.0.108", path = "../lightning", default-features = false }
+lightning = { version = "0.0.109", path = "../lightning", default-features = false }
secp256k1 = { version = "0.22", default-features = false, features = ["recovery", "alloc"] }
num-traits = { version = "0.2.8", default-features = false }
bitcoin_hashes = { version = "0.10", default-features = false }
serde = { version = "1.0.118", optional = true }
[dev-dependencies]
-lightning = { version = "0.0.108", path = "../lightning", default-features = false, features = ["_test_utils"] }
+lightning = { version = "0.0.109", path = "../lightning", default-features = false, features = ["_test_utils"] }
hex = "0.4"
serde_json = { version = "1"}
[package]
name = "lightning-net-tokio"
-version = "0.0.108"
+version = "0.0.109"
authors = ["Matt Corallo"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/lightningdevkit/rust-lightning/"
[dependencies]
bitcoin = "0.28.1"
-lightning = { version = "0.0.108", path = "../lightning" }
+lightning = { version = "0.0.109", path = "../lightning" }
tokio = { version = "1.0", features = [ "io-util", "macros", "rt", "sync", "net", "time" ] }
[dev-dependencies]
[package]
name = "lightning-persister"
-version = "0.0.108"
+version = "0.0.109"
authors = ["Valentine Wallace", "Matt Corallo"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/lightningdevkit/rust-lightning/"
[dependencies]
bitcoin = "0.28.1"
-lightning = { version = "0.0.108", path = "../lightning" }
+lightning = { version = "0.0.109", path = "../lightning" }
libc = "0.2"
[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3", features = ["winbase"] }
[dev-dependencies]
-lightning = { version = "0.0.108", path = "../lightning", features = ["_test_utils"] }
+lightning = { version = "0.0.109", path = "../lightning", features = ["_test_utils"] }
[package]
name = "lightning-rapid-gossip-sync"
-version = "0.0.108"
+version = "0.0.109"
authors = ["Arik Sosman <git@arik.io>"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/lightningdevkit/rust-lightning"
_bench_unstable = []
[dependencies]
-lightning = { version = "0.0.108", path = "../lightning" }
+lightning = { version = "0.0.109", path = "../lightning" }
bitcoin = { version = "0.28.1", default-features = false }
[dev-dependencies]
-lightning = { version = "0.0.108", path = "../lightning", features = ["_test_utils"] }
+lightning = { version = "0.0.109", path = "../lightning", features = ["_test_utils"] }
[package]
name = "lightning"
-version = "0.0.108"
+version = "0.0.109"
authors = ["Matt Corallo"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/lightningdevkit/rust-lightning/"