X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=CHANGELOG.md;h=7736ce67ec6644c0aedd11ef0eed2d91427d9da0;hb=58f76f2800ec8590ebc2261dac96e8a68de63b79;hp=62b96df13d3b732b7a1d3ebaf6934389dcfb2b17;hpb=d2a7ee2c71e3f567819a9d1dc178fe3882a4f879;p=rust-lightning diff --git a/CHANGELOG.md b/CHANGELOG.md index 62b96df1..7736ce67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,228 @@ -# 0.0.108 - 2022-06-10 +# 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. @@ -10,7 +234,7 @@ deletions in 5 commits from 4 authors, in alphabetical order: * Max Fang * Viktor Tigerström -# 0.0.107 - 2022-06-08 +# 0.0.107 - 2022-06-08 - "BlueWallet's Wishlist" ## API Updates * Channels larger than 16777215 sats (Wumbo!) are now supported and can be @@ -148,7 +372,7 @@ deletions in 153 commits from 18 authors, in alphabetical order: * Jurvis Tan * Justin Moon * KaFai Choi - * Mateusz Faltyn + * Matt Faltyn * Matt Corallo * Valentine Wallace * Viktor Tigerström @@ -734,7 +958,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 @@ -827,7 +1051,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 @@ -898,7 +1122,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