From: Matt Corallo <649246+TheBlueMatt@users.noreply.github.com> Date: Mon, 17 Jul 2023 22:18:19 +0000 (+0000) Subject: Merge pull request #2414 from TheBlueMatt/2023-07-cut-116-rc X-Git-Tag: v0.0.116-rc1^0 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=c5c5f3fea2012dc53a1974f7ad6c7825b1e42d37;hp=baf9731a21f695baf1e5fe562b9484f5f56f99e6;p=rust-lightning Merge pull request #2414 from TheBlueMatt/2023-07-cut-116-rc Add 0.0.116 CHANGELOG entries and prep for 0.0.116rc1 --- diff --git a/CHANGELOG.md b/CHANGELOG.md index 2874f33d..7243b520 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,125 @@ +# 0.0.116rc1 - Jul 14, 2023 - "Anchoring the Roadmap" + +## API Updates + + * Support for zero-HTLC-fee anchor output channels has been added and is now + considered beta (#2367). Users who set + `ChannelHandshakeConfig::negotiate_anchors_zero_fee_htlc_tx` should be + prepared to handle the new `Event::BumpTransaction`, e.g. via the + `BumpTransactionEventHandler` (#2089). Users who set the same and wish to + accept inbound anchor-based channels must do so manually by setting + `UserConfig::manually_accept_inbound_channels` (#2368). + * Support forwarding and accepting HTLCs with a reduced amount has been added, + to support LSPs skimming a fee on the penultimate hop (#2319). + * BOLT11 and BOLT12 Invoice and related types have been renamed to include a + BOLTNN prefix, ensuring uniqueness in `lightning{,-invoice}` crates (#2416). + * `Score`rs now have an associated type which represents a parameter passed + when calculating penalties. This allows for the same `Score`r to be used with + different penalty calculation parameters (#2237). + * `DefaultRouter` is no longer restrained to a `Mutex`-wrapped `Score`, + allowing it to be used in `no-std` builds (#2383). + * `CustomMessageHandler::provided_{node,init}_features` and various custom + feature bit methods on `*Features` were added (#2204). + * Keysend/push payments using MPP are now supported when receiving if + `UserConfig::accept_mpp_keysend` is set and when sending if specified in the + `PaymentParameters`. Note that not all recipients support this (#2156). + * A new `ConfirmationTarget::MempoolMinimum` has been added (#2415). + * `SpendableOutputDescriptor::to_psbt_input` was added (#2286). + * `ChannelManager::update_partial_channel_config` was added (#2330). + * `ChannelDetails::channel_shutdown_state` was added (#2347). + * The shutdown script can now be provided at shutdown time via + `ChannelManager::close_channel_with_feerate_and_script` (#2219). + * `BroadcasterInterface` now takes multiple transactions at once. While not + available today, in the future single calls should be passed to a full node + via a single batch/package transaction acceptance API (#2272). + * `Balance::claimable_amount_satoshis` was added (#2333). + * `payment_{hash,preimage}` have been added to some `Balance` variants (#2217). + * The `lightning::chain::keysinterface` is now `lightning::sign` (#2246). + * Routing to a blinded path has been implemented, though sending to such a + route is not yet supported in `ChannelManager` (#2120). + * `OffersMessageHandler` was added for offers-related onion messages (#2294). + * The `CustomMessageHandler` parameter to `PeerManager` has moved to + `MessageHandler` from `PeerManager::new` explicitly (#2249). + * Various P2P messages for dual funding channel establishment have been added, + though handling for them is not yet in `ChannelManager` (#1794) + * Script-fetching methods in `sign` interfaces can now return errors, see docs + for the implications of failing (#2213). + * The `data_loss_protect` option is now required when reading + `channel_reestablish` messages, as many others have done (#2253). + * `InFlightHtlcs::add_inflight_htlc` has been added (#2042). + * The `init` message `networks` field is now written and checked (#2329). + * `PeerManager` generics have been simplified with the introduction of the + `APeerManager` trait (#2249). + * `ParitalOrd` and `Ord` are now implemented for `Invoice` (#2279). + * `ParitalEq` and `Debug` are now implemented for `InMemorySigner` (#2328). + * `ParitalEq` and `Eq` are now implemented for `PaymentError` (#2316). + * `NetworkGraph::update_channel_from_announcement_no_lookup` was added (#2222). + * `lightning::routing::gossip::verify_{channel,node}_announcement` was added + (#2307). + +## Backwards Compatibility + * `PaymentParameters` written with blinded path info using LDK 0.0.115 will not + be readable in LDK 0.0.116, and vice versa. + * Forwarding less than `Event::HTLCIntercepted::expected_outbound_amount_msat` + in `ChannelManager::forward_intercepted_htlc` may prevent the + `ChannelManager` from being read by LDK prior to 0.0.116 (#2319) + * Setting `ChannelConfig::accept_underpaying_htlcs` may prevent the + `ChannelManager` from being read by LDK prior to 0.0.116 and un-setting the + parameter between restarts may lead to payment failures (#2319). + * `ChannelManager::create_inbound_payment{,_for_hash}_legacy` has been removed, + removing the ability to create inbound payments which are claimable after + downgrade to LDK 0.0.103 and prior. In the future handling such payments will + also be removed (#2351). + * Some fields required by LDK 0.0.103 and earlier are no longer written, thus + deserializing objects written by 0.0.116 with 0.0.103 may now fail (#2351). + +## Bug Fixes + * `ChannelDetails::next_outbound_htlc_limit_msat` was made substantially more + accurate and a corresponding `next_outbound_htlc_minimum_msat` was added. + This resolves issues where unpayable routes were generated due to + overestimation of the amount which is payable over one of our channels as + the first hop (#2312). + * A rare case where delays in processing `Event`s generated by + `ChannelMonitor`s could lead to loss of those events in case of an untimely + crash. This could lead to the loss of an `Event::SpendableOutputs` (#2369). + * Fixed a regression in 0.0.115 which caused `PendingHTLCsForwardable` events + to be missed when processing phantom node receives. This caused such + payments to be delayed until a further, unrelated HTLC came in (#2395). + * Peers which are unresponsive to channel messages for several timer ticks are + now disconnected to allow for on-reconnection state machine reset. This + works around some issues in LND prior to 16.3 which can cause channels to + hang and eventually force-close (#2293). + * `ChannelManager::new` now requires the current time (either from a recent + block header or the system clock), ensuring invoices created immediately + after startup aren't already expired (#2372). + * Resolved an issue where reading a `ProbabilisticScorer` on some platforms + (e.g. iOS) can lead to a panic (#2322). + * `ChannelConfig::max_dust_htlc_exposure` is now allowed to scale based on + current fees, and the default has been updated to do so. This substantially + reduces the chance of force-closure due to dust exposure. Note that existing + channels will retain their current value and you may wish to update the + value on your existing channels on upgrade (#2354). + * `PeerManager::process_events` no longer blocks in any case. This fixes a bug + where reentrancy from `PeerManager` into user code which eventually calls + `process_events` could lead to a deadlock (#2280). + * The persist timing of network graph and scoring in + `lightning-background-processor` has been tweaked to provide more reliable + persistence after updates to either (#2226). + * The number of route hints added to BOLT 11 invoices by the + `lightning-invoice::utils` builders has been reduced to three to ensure + invoices can be represented in scan-able QR codes (#2044). + * Fixed sending large onion messages, which would previously have resulted in + an HMAC error on the second hop (#2277). + * Fixed a memory leak that may occur when a `ChannelManager` or + `ChannelMonitor` is `drop`ed (#2233). + * A potential deadlock in calling `NetworkGraph::eq` was resolved (#2284). + * Fixed an overflow which prevented disconnecting peers in some minor cases + with more than 31 peers (#2245). + * Gossip messages with an unknown chain hash are now ignored (#2230). + * Rapid Gossip Sync processing now fails on an unknown chain hash (#2324). + * `RouteHintHop::htlc_maximum_msat` is now enforced. Note that BOLT11 route + hints do not have such a field so this code is generally unused (#2305). + # 0.0.115 - Apr 24, 2023 - "Rebroadcast the Bugfixes" ## API Updates diff --git a/lightning-background-processor/Cargo.toml b/lightning-background-processor/Cargo.toml index f16b0015..7b746307 100644 --- a/lightning-background-processor/Cargo.toml +++ b/lightning-background-processor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning-background-processor" -version = "0.0.116-alpha1" +version = "0.0.116-rc1" authors = ["Valentine Wallace "] license = "MIT OR Apache-2.0" repository = "http://github.com/lightningdevkit/rust-lightning" @@ -21,11 +21,11 @@ default = ["std"] [dependencies] bitcoin = { version = "0.29.0", default-features = false } -lightning = { version = "0.0.116-alpha1", path = "../lightning", default-features = false } -lightning-rapid-gossip-sync = { version = "0.0.116-alpha1", path = "../lightning-rapid-gossip-sync", default-features = false } +lightning = { version = "0.0.116-rc1", path = "../lightning", default-features = false } +lightning-rapid-gossip-sync = { version = "0.0.116-rc1", path = "../lightning-rapid-gossip-sync", default-features = false } [dev-dependencies] tokio = { version = "1.14", features = [ "macros", "rt", "rt-multi-thread", "sync", "time" ] } -lightning = { version = "0.0.116-alpha1", path = "../lightning", features = ["_test_utils"] } -lightning-invoice = { version = "0.24.0-alpha1", path = "../lightning-invoice" } -lightning-persister = { version = "0.0.116-alpha1", path = "../lightning-persister" } +lightning = { version = "0.0.116-rc1", path = "../lightning", features = ["_test_utils"] } +lightning-invoice = { version = "0.24.0-rc1", path = "../lightning-invoice" } +lightning-persister = { version = "0.0.116-rc1", path = "../lightning-persister" } diff --git a/lightning-block-sync/Cargo.toml b/lightning-block-sync/Cargo.toml index 7634bf6e..b2d69328 100644 --- a/lightning-block-sync/Cargo.toml +++ b/lightning-block-sync/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning-block-sync" -version = "0.0.116-alpha1" +version = "0.0.116-rc1" authors = ["Jeffrey Czyz", "Matt Corallo"] license = "MIT OR Apache-2.0" repository = "http://github.com/lightningdevkit/rust-lightning" @@ -19,11 +19,11 @@ rpc-client = [ "serde_json", "chunked_transfer" ] [dependencies] bitcoin = "0.29.0" -lightning = { version = "0.0.116-alpha1", path = "../lightning" } +lightning = { version = "0.0.116-rc1", path = "../lightning" } tokio = { version = "1.0", features = [ "io-util", "net", "time" ], optional = true } serde_json = { version = "1.0", optional = true } chunked_transfer = { version = "1.4", optional = true } [dev-dependencies] -lightning = { version = "0.0.116-alpha1", path = "../lightning", features = ["_test_utils"] } +lightning = { version = "0.0.116-rc1", path = "../lightning", features = ["_test_utils"] } tokio = { version = "1.14", features = [ "macros", "rt" ] } diff --git a/lightning-custom-message/Cargo.toml b/lightning-custom-message/Cargo.toml index 7fcea58f..8c372960 100644 --- a/lightning-custom-message/Cargo.toml +++ b/lightning-custom-message/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning-custom-message" -version = "0.0.116-alpha1" +version = "0.0.116-rc1" authors = ["Jeffrey Czyz"] license = "MIT OR Apache-2.0" repository = "http://github.com/lightningdevkit/rust-lightning" @@ -15,4 +15,4 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] bitcoin = "0.29.0" -lightning = { version = "0.0.116-alpha1", path = "../lightning" } +lightning = { version = "0.0.116-rc1", path = "../lightning" } diff --git a/lightning-invoice/Cargo.toml b/lightning-invoice/Cargo.toml index 25219800..0d868cea 100644 --- a/lightning-invoice/Cargo.toml +++ b/lightning-invoice/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "lightning-invoice" description = "Data structures to parse and serialize BOLT11 lightning invoices" -version = "0.24.0-alpha1" +version = "0.24.0-rc1" authors = ["Sebastian Geisler "] documentation = "https://docs.rs/lightning-invoice/" license = "MIT OR Apache-2.0" @@ -21,7 +21,7 @@ std = ["bitcoin_hashes/std", "num-traits/std", "lightning/std", "bech32/std"] [dependencies] bech32 = { version = "0.9.0", default-features = false } -lightning = { version = "0.0.116-alpha1", path = "../lightning", default-features = false } +lightning = { version = "0.0.116-rc1", path = "../lightning", default-features = false } secp256k1 = { version = "0.24.0", default-features = false, features = ["recovery", "alloc"] } num-traits = { version = "0.2.8", default-features = false } bitcoin_hashes = { version = "0.11", default-features = false } @@ -30,6 +30,6 @@ serde = { version = "1.0.118", optional = true } bitcoin = { version = "0.29.0", default-features = false } [dev-dependencies] -lightning = { version = "0.0.116-alpha1", path = "../lightning", default-features = false, features = ["_test_utils"] } +lightning = { version = "0.0.116-rc1", path = "../lightning", default-features = false, features = ["_test_utils"] } hex = "0.4" serde_json = { version = "1"} diff --git a/lightning-net-tokio/Cargo.toml b/lightning-net-tokio/Cargo.toml index b729061e..202849be 100644 --- a/lightning-net-tokio/Cargo.toml +++ b/lightning-net-tokio/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning-net-tokio" -version = "0.0.116-alpha1" +version = "0.0.116-rc1" authors = ["Matt Corallo"] license = "MIT OR Apache-2.0" repository = "https://github.com/lightningdevkit/rust-lightning/" @@ -16,9 +16,9 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] bitcoin = "0.29.0" -lightning = { version = "0.0.116-alpha1", path = "../lightning" } +lightning = { version = "0.0.116-rc1", path = "../lightning" } tokio = { version = "1.0", features = [ "io-util", "macros", "rt", "sync", "net", "time" ] } [dev-dependencies] tokio = { version = "1.14", features = [ "io-util", "macros", "rt", "rt-multi-thread", "sync", "net", "time" ] } -lightning = { version = "0.0.116-alpha1", path = "../lightning", features = ["_test_utils"] } +lightning = { version = "0.0.116-rc1", path = "../lightning", features = ["_test_utils"] } diff --git a/lightning-persister/Cargo.toml b/lightning-persister/Cargo.toml index 9ef73428..a10d32f9 100644 --- a/lightning-persister/Cargo.toml +++ b/lightning-persister/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning-persister" -version = "0.0.116-alpha1" +version = "0.0.116-rc1" authors = ["Valentine Wallace", "Matt Corallo"] license = "MIT OR Apache-2.0" repository = "https://github.com/lightningdevkit/rust-lightning/" @@ -15,7 +15,7 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] bitcoin = "0.29.0" -lightning = { version = "0.0.116-alpha1", path = "../lightning" } +lightning = { version = "0.0.116-rc1", path = "../lightning" } libc = "0.2" [target.'cfg(windows)'.dependencies] @@ -25,4 +25,4 @@ winapi = { version = "0.3", features = ["winbase"] } criterion = { version = "0.4", optional = true, default-features = false } [dev-dependencies] -lightning = { version = "0.0.116-alpha1", path = "../lightning", features = ["_test_utils"] } +lightning = { version = "0.0.116-rc1", path = "../lightning", features = ["_test_utils"] } diff --git a/lightning-rapid-gossip-sync/Cargo.toml b/lightning-rapid-gossip-sync/Cargo.toml index 7431c53f..cb4922fa 100644 --- a/lightning-rapid-gossip-sync/Cargo.toml +++ b/lightning-rapid-gossip-sync/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning-rapid-gossip-sync" -version = "0.0.116-alpha1" +version = "0.0.116-rc1" authors = ["Arik Sosman "] license = "MIT OR Apache-2.0" repository = "https://github.com/lightningdevkit/rust-lightning" @@ -15,11 +15,11 @@ no-std = ["lightning/no-std"] std = ["lightning/std"] [dependencies] -lightning = { version = "0.0.116-alpha1", path = "../lightning", default-features = false } +lightning = { version = "0.0.116-rc1", path = "../lightning", default-features = false } bitcoin = { version = "0.29.0", default-features = false } [target.'cfg(ldk_bench)'.dependencies] criterion = { version = "0.4", optional = true, default-features = false } [dev-dependencies] -lightning = { version = "0.0.116-alpha1", path = "../lightning", features = ["_test_utils"] } +lightning = { version = "0.0.116-rc1", path = "../lightning", features = ["_test_utils"] } diff --git a/lightning-transaction-sync/Cargo.toml b/lightning-transaction-sync/Cargo.toml index 53221edd..2db3fc69 100644 --- a/lightning-transaction-sync/Cargo.toml +++ b/lightning-transaction-sync/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning-transaction-sync" -version = "0.0.116-alpha1" +version = "0.0.116-rc1" authors = ["Elias Rohrer"] license = "MIT OR Apache-2.0" repository = "http://github.com/lightningdevkit/rust-lightning" @@ -21,7 +21,7 @@ esplora-blocking = ["esplora-client/blocking"] async-interface = [] [dependencies] -lightning = { version = "0.0.116-alpha1", path = "../lightning", default-features = false } +lightning = { version = "0.0.116-rc1", path = "../lightning", default-features = false } bitcoin = { version = "0.29.0", default-features = false } bdk-macros = "0.6" futures = { version = "0.3", optional = true } @@ -29,7 +29,7 @@ esplora-client = { version = "0.4", default-features = false, optional = true } reqwest = { version = "0.11", optional = true, default-features = false, features = ["json"] } [dev-dependencies] -lightning = { version = "0.0.116-alpha1", path = "../lightning", features = ["std"] } +lightning = { version = "0.0.116-rc1", path = "../lightning", features = ["std"] } electrsd = { version = "0.22.0", features = ["legacy", "esplora_a33e97e1", "bitcoind_23_0"] } electrum-client = "0.12.0" tokio = { version = "1.14.0", features = ["full"] } diff --git a/lightning/Cargo.toml b/lightning/Cargo.toml index f02b605f..09a76109 100644 --- a/lightning/Cargo.toml +++ b/lightning/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning" -version = "0.0.116-alpha1" +version = "0.0.116-rc1" authors = ["Matt Corallo"] license = "MIT OR Apache-2.0" repository = "https://github.com/lightningdevkit/rust-lightning/" diff --git a/pending_changelog/big-om-error.txt b/pending_changelog/big-om-error.txt deleted file mode 100644 index 6f2ce899..00000000 --- a/pending_changelog/big-om-error.txt +++ /dev/null @@ -1,4 +0,0 @@ -## Bug Fixes - -* Fixed sending large onion messages, which previously would result in an HMAC error on the second - hop (#2277). diff --git a/pending_changelog/blinded_pay_param_compat.txt b/pending_changelog/blinded_pay_param_compat.txt deleted file mode 100644 index 8e91e00b..00000000 --- a/pending_changelog/blinded_pay_param_compat.txt +++ /dev/null @@ -1,3 +0,0 @@ -## Backwards Compatibility - -* `PaymentParameters` written with blinded path info using 0.0.115 will not be readable in 0.0.116 diff --git a/pending_changelog/forward-underpaying-htlc.txt b/pending_changelog/forward-underpaying-htlc.txt deleted file mode 100644 index 5b6c2237..00000000 --- a/pending_changelog/forward-underpaying-htlc.txt +++ /dev/null @@ -1,6 +0,0 @@ -## Backwards Compat - -* Forwarding less than the expected amount in `ChannelManager::forward_intercepted_htlc` may break - compatibility with versions of LDK prior to 0.0.116 -* Setting `ChannelConfig::accept_underpaying_htlcs` may break compatibility with versions of LDK - prior to 0.0.116, and unsetting the feature between restarts may lead to payment failures. diff --git a/pending_changelog/no-legacy-payments.txt b/pending_changelog/no-legacy-payments.txt deleted file mode 100644 index 8ca3aef1..00000000 --- a/pending_changelog/no-legacy-payments.txt +++ /dev/null @@ -1,6 +0,0 @@ - * Legacy inbound payment creation has been removed, thus there is no way to - create a pending inbound payment which will still be claimable on LDK - 0.0.103 or earlier. Support for claiming such payments is still retained, - however is likely to be removed in the next release (#2351). - * Some fields required in 0.0.103 and earlier are no longer written, thus - deserializing objects written in 0.0.116 with 0.0.103 may now fail (#2351).