From: Matt Corallo <649246+TheBlueMatt@users.noreply.github.com> Date: Wed, 8 Jun 2022 23:44:03 +0000 (-0700) Subject: Merge pull request #1525 from jkczyz/2022-05-release-0.0.107 X-Git-Tag: v0.0.107^0 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=5c788a09f83d575539d3665dc18376aa83a5c587;hp=a551a6219c06d4ed149dcecc4553bc8a85e408f0;p=rust-lightning Merge pull request #1525 from jkczyz/2022-05-release-0.0.107 Cut 0.0.107 --- diff --git a/CHANGELOG.md b/CHANGELOG.md index 84d5529d..1cae3010 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,151 @@ +# 0.0.107 - 2022-06-08 + +## API Updates + * Channels larger than 16777215 sats (Wumbo!) are now supported and can be + enabled for inbound channels using + `ChannelHandshakeLimits::max_funding_satoshis` (#1425). + * Support for feature `option_zeroconf`, allowing immediate forwarding of + payments after channel opening. This is configured for outbound channels + using `ChannelHandshakeLimits::trust_own_funding_0conf` whereas + `ChannelManager::accept_inbound_channel_from_trusted_peer_0conf` has to be + used for accepting inbound channels (#1401, #1505). + * `ChannelManager::claim_funds` no longer returns a `bool` to indicate success. + Instead, an `Event::PaymentClaimed` is generated if the claim was successful. + Likewise, `ChannelManager::fail_htlc_backwards` no longer has a return value + (#1434). + * `lightning-rapid-gossip-sync` is a new crate for syncing gossip data from a + server, primarily aimed at mobile devices (#1155). + * `RapidGossipSync` can be passed to `BackgroundProcessor` in order to persist + the `NetworkGraph` and handle `NetworkUpdate`s during event handling (#1433, + #1517). + * `NetGraphMsgHandler` has been renamed to `P2PGossipSync`, the `network_graph` + module has been renamed to `gossip`, and `NetworkUpdate::ChannelClosed` has + been renamed `NetworkUpdate::ChannelFailure` (#1159). + * Added a `filtered_block_connected` method to `chain::Listen` and a default + implementation of `block_connected` for those fetching filtered instead of + full blocks (#1453). + * The `lightning-block-sync` crate's `BlockSource` trait methods now take + `&self` instead of `&mut self` (#1307). + * `inbound_payment` module is now public to allow for creating invoices without + a `ChannelManager` (#1384). + * `lightning-block-sync`'s `init` and `poll` modules support `&dyn BlockSource` + which can be determined at runtime (#1423). + * `lightning-invoice` crate's `utils` now accept an expiration time (#1422, + #1474). + * `Event::PaymentForwarded` includes `prev_channel_id` and `next_channel_id` + (#1419, #1475). + * `chain::Watch::release_pending_monitor_events`' return type now associates + `MonitorEvent`s with funding `OutPoints` (#1475). + * `lightning-background-processor` crate's `Persister` trait has been moved to + `lightning` crate's `util::persist` module, which now has a general + `KVStorePersister` trait. Blanket implementations of `Persister` and + `chainmonitor::Persist` are given for types implementing `KVStorePersister`. + ` lightning-persister`'s `FilesystemPersister` implements `KVStorePersister` + (#1417). + * `ChannelDetails` and `ChannelCounterparty` include fields for HTLC minimum + and maximum values (#1378). + * Added a `max_inbound_htlc_value_in_flight_percent_of_channel` field to + `ChannelHandshakeConfig`, capping the total value of outstanding inbound + HTLCs for a channel (#1444). + * `ProbabilisticScorer` is parameterized by a `Logger`, which it uses to log + channel liquidity updates or lack thereof (#1405). + * `ChannelDetails` has an `outbound_htlc_limit_msat` field, which should be + used in routing instead of `outbound_capacity_msat` (#1435). + * `ProbabilisticScorer`'s channel liquidities can be logged via + `debug_log_liquidity_stats` (#1460). + * `BackgroundProcessor` now takes an optional `WriteableScore` which it will + persist using the `Persister` trait's new `persist_scorer` method (#1416). + * Upgraded to `bitcoin` crate version 0.28.1 (#1389). + * `ShutdownScript::new_witness_program` now takes a `WitnessVersion` instead of + a `NonZeroU8` (#1389). + * Channels will no longer be automatically force closed when the counterparty + is disconnected due to incompatibility (#1429). + * `ChannelManager` methods for funding, accepting, and closing channels now + take a `counterparty_node_id` parameter, which has also been added as a field + to `Event::FundingGenerationReady` (#1479, #1485). + * `InvoicePayer::new` now takes a `Retry` enum (replacing the `RetryAttempts` + struct), which supports both attempt- and timeout-based retrying (#1418). + * `Score::channel_penalty_msat` takes a `ChannelUsage` struct, which contains + the capacity as an `EffectiveCapacity` enum and any potential in-flight HTLC + value, rather than a single `u64`. Used by `ProbabilisticScorer` for more + accurate penalties (#1456). + * `build_route_from_hops` is a new function useful for constructing a `Route` + given a specific list of public keys (#1491). + * `FundingLocked` message has been renamed `ChannelReady`, and related + identifiers have been renamed accordingly (#1506). + * `core2::io` or `std::io` (depending on feature flags `no-std` or `std`) is + exported as a `lightning::io` module (#1504). + * The deprecated `Scorer` has been removed in favor or `ProbabilisticScorer` + (#1512). + +## Performance Improvements + * `lightning-persister` crate's `FilesystemPersister` is faster by 15x (#1404). + * Log gossip query messages at `GOSSIP` instead of `TRACE` to avoid + overwhelming default logging (#1421). + * `PeerManager` supports processing messages from different peers in parallel, + and this is taken advantage of in gossip processing (#1023). + * Greatly reduced per-channel and per-node memory usage due to upgrade of + `secp256k1` crate to 0.22.1 and `bitcoin` crate to 0.28.1 + * Reduced per-peer memory usage in `PeerManager` (#1472). + +## Spec Compliance + * `find_route` now assumes variable-length onions by default for nodes where + support for the feature is unknown (#1414). + * A `warn` message is now sent when receiving a `channel_reestablish` with an + old commitment transaction number rather than immediately force-closing the + channel (#1430). + * When a `channel_update` message is included in an onion error's `failuremsg`, + its message type is now encoded. Reading such messages is also supported + (#1465). + +## Bug Fixes + * Fixed a bug where crashing while persisting a `ChannelMonitorUpdate` for a + part of a multi-path payment could cause loss of funds due to a partial + payment claim on restart (#1434). + * `BackgroundProcessor` has been fixed to improve serialization reliability on + slow systems which can avoid force-closes (#1436). + * `gossip_timestamp_filter` filters are now honored when sending gossip to + peers (#1452). + * During a reorg, only force-close a channel if its funding transaction is + unconfirmed rather than as it loses confirmations (#1461). + * Fixed a rare panic in `lightning-net-tokio` when fetching a peer's socket + address after the connection has been closed caused by a race condition + (#1449). + * `find_route` will no longer return routes that would cause onion construction + to fail in some cases (#1476). + * `ProbabilisticScorer` uses more precision when approximating `log10` (#1406). + +## Serialization Compatibility + * All above new events/fields are ignored by prior clients. All above new + events/fields are not present when reading objects serialized by prior + versions of the library. + * `ChannelManager` serialization is no longer compatible with versions prior to + 0.0.99 (#1401). + * Channels with `option_zeroconf` feature enabled (not required for 0-conf + channel use) will be unreadable by versions prior to 0.0.107 (#1401, #1505). + +In total, this release features 96 files changed, 9304 insertions, 4503 +deletions in 153 commits from 18 authors, in alphabetical order: + * Arik Sosman + * Devrandom + * Duncan Dean + * Elias Rohrer + * Jeffrey Czyz + * John Cantrell + * John Corser + * Jurvis Tan + * Justin Moon + * KaFai Choi + * Mateusz Faltyn + * Matt Corallo + * Valentine Wallace + * Viktor Tigerström + * Vincenzo Palazzo + * atalw + * dependabot[bot] + * shamardy + + # 0.0.106 - 2022-04-03 ## API Updates diff --git a/README.md b/README.md index dad0b392..3c34335c 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,8 @@ Crates this is a simple alternative to implementing the required network stack, especially for those already using Tokio. 6. [lightning-persister](./lightning-persister) Utilities to manage Rust-Lightning channel data persistence and retrieval. +7. [lightning-rapid-gossip-sync](./lightning-rapid-gossip-sync) + Client for rapid gossip graph syncing, aimed primarily at mobile clients. About ----------- diff --git a/lightning-background-processor/Cargo.toml b/lightning-background-processor/Cargo.toml index 5558eaaa..7f8fff7b 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.106" +version = "0.0.107" authors = ["Valentine Wallace "] license = "MIT OR Apache-2.0" repository = "http://github.com/lightningdevkit/rust-lightning" @@ -15,10 +15,10 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] bitcoin = "0.28.1" -lightning = { version = "0.0.106", path = "../lightning", features = ["std"] } -lightning-rapid-gossip-sync = { version = "0.0.106", path = "../lightning-rapid-gossip-sync" } +lightning = { version = "0.0.107", path = "../lightning", features = ["std"] } +lightning-rapid-gossip-sync = { version = "0.0.107", path = "../lightning-rapid-gossip-sync" } [dev-dependencies] -lightning = { version = "0.0.106", path = "../lightning", features = ["_test_utils"] } -lightning-invoice = { version = "0.14.0", path = "../lightning-invoice" } -lightning-persister = { version = "0.0.106", path = "../lightning-persister" } +lightning = { version = "0.0.107", path = "../lightning", features = ["_test_utils"] } +lightning-invoice = { version = "0.15.0", path = "../lightning-invoice" } +lightning-persister = { version = "0.0.107", path = "../lightning-persister" } diff --git a/lightning-block-sync/Cargo.toml b/lightning-block-sync/Cargo.toml index 1d6e7f40..f6736480 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.106" +version = "0.0.107" authors = ["Jeffrey Czyz", "Matt Corallo"] license = "MIT OR Apache-2.0" repository = "http://github.com/lightningdevkit/rust-lightning" @@ -19,7 +19,7 @@ rpc-client = [ "serde", "serde_json", "chunked_transfer" ] [dependencies] bitcoin = "0.28.1" -lightning = { version = "0.0.106", path = "../lightning" } +lightning = { version = "0.0.107", 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 } diff --git a/lightning-invoice/Cargo.toml b/lightning-invoice/Cargo.toml index 9382d663..7f3d1439 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.14.0" +version = "0.15.0" authors = ["Sebastian Geisler "] documentation = "https://docs.rs/lightning-invoice/" license = "MIT OR Apache-2.0" @@ -20,7 +20,7 @@ std = ["bitcoin_hashes/std", "num-traits/std", "lightning/std", "bech32/std"] [dependencies] bech32 = { version = "0.8", default-features = false } -lightning = { version = "0.0.106", path = "../lightning", default-features = false } +lightning = { version = "0.0.107", 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 } @@ -28,5 +28,5 @@ hashbrown = { version = "0.11", optional = true } core2 = { version = "0.3.0", default-features = false, optional = true } [dev-dependencies] -lightning = { version = "0.0.106", path = "../lightning", default-features = false, features = ["_test_utils"] } +lightning = { version = "0.0.107", path = "../lightning", default-features = false, features = ["_test_utils"] } hex = "0.4" diff --git a/lightning-net-tokio/Cargo.toml b/lightning-net-tokio/Cargo.toml index 08c649f7..24b9821b 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.106" +version = "0.0.107" authors = ["Matt Corallo"] license = "MIT OR Apache-2.0" repository = "https://github.com/lightningdevkit/rust-lightning/" @@ -16,7 +16,7 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] bitcoin = "0.28.1" -lightning = { version = "0.0.106", path = "../lightning" } +lightning = { version = "0.0.107", path = "../lightning" } tokio = { version = "1.0", features = [ "io-util", "macros", "rt", "sync", "net", "time" ] } [dev-dependencies] diff --git a/lightning-persister/Cargo.toml b/lightning-persister/Cargo.toml index 1bf4c5d2..1b62de98 100644 --- a/lightning-persister/Cargo.toml +++ b/lightning-persister/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning-persister" -version = "0.0.106" +version = "0.0.107" authors = ["Valentine Wallace", "Matt Corallo"] license = "MIT OR Apache-2.0" repository = "https://github.com/lightningdevkit/rust-lightning/" @@ -17,11 +17,11 @@ _bench_unstable = ["lightning/_bench_unstable"] [dependencies] bitcoin = "0.28.1" -lightning = { version = "0.0.106", path = "../lightning" } +lightning = { version = "0.0.107", path = "../lightning" } libc = "0.2" [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", features = ["winbase"] } [dev-dependencies] -lightning = { version = "0.0.106", path = "../lightning", features = ["_test_utils"] } +lightning = { version = "0.0.107", path = "../lightning", features = ["_test_utils"] } diff --git a/lightning-rapid-gossip-sync/Cargo.toml b/lightning-rapid-gossip-sync/Cargo.toml index 58446a46..734749ca 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.106" +version = "0.0.107" authors = ["Arik Sosman "] license = "MIT OR Apache-2.0" repository = "https://github.com/lightningdevkit/rust-lightning" @@ -13,8 +13,8 @@ Utility to process gossip routing data from Rapid Gossip Sync Server. _bench_unstable = [] [dependencies] -lightning = { version = "0.0.106", path = "../lightning" } +lightning = { version = "0.0.107", path = "../lightning" } bitcoin = { version = "0.28.1", default-features = false } [dev-dependencies] -lightning = { version = "0.0.106", path = "../lightning", features = ["_test_utils"] } +lightning = { version = "0.0.107", path = "../lightning", features = ["_test_utils"] } diff --git a/lightning/Cargo.toml b/lightning/Cargo.toml index f9321c7b..cec724cf 100644 --- a/lightning/Cargo.toml +++ b/lightning/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning" -version = "0.0.106" +version = "0.0.107" authors = ["Matt Corallo"] license = "MIT OR Apache-2.0" repository = "https://github.com/lightningdevkit/rust-lightning/"