Skip to content

Cut 0.0.107 #1525

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 148 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be nice to document "zero-conf" in the website, maybe in a "Supported Features" subsection.

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).
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The commit message of this specific change is saying "We can revisit this decision based on user feedback, but will need to very carefully document the potential failure modes here if we do", should we mark more explicitly as waiting feedback on that change ? Not sure folks are gonna read commit messages.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm more inclined to keep this brief and allow users to complain if they find it confusing.

* `lightning-rapid-gossip-sync` is a new crate for syncing gossip data from a
server, primarily aimed at mobile devices (#1155).
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same, would be nice to document it in the website. The README.md is quite nice though not sure it's enough to guide a mobile dev to deploy a gossip sync server and integrate it in its own backend.

* `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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure how detailed we want to be in these release notes, but here are two points that may be worth adding about #1378 and #1444:

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, 1444 is unrelated here - it's a bugfix to set the value correctly. The new config knob is in the next bullet.

Copy link
Contributor

@ViktorTigerstrom ViktorTigerstrom Jun 8, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, 1444 is unrelated here - it's a bugfix to set the value correctly. The new config knob is in the next bullet.

Nice, thanks for adding the config knob as a separate bullet @jkczyz. This is now resolved after 1444 is removed from this bullet (+ the comment about the BOLT11 hints encoding below) :)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that these values are not encoded in the BOLT 11 hints, it's more of a forward compat thing. Don't think it's worth mentioning anything in the invoice here.

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
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it misses #1454 ?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And the sister PR #1463

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dropped in the fixup as per 483dd8e#r891072611

* 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
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Phew this was a big release. API-change-wise too. Need to be more aggressive about shipping releases more often, IMO.

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
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
-----------
Expand Down
12 changes: 6 additions & 6 deletions lightning-background-processor/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "lightning-background-processor"
version = "0.0.106"
version = "0.0.107"
authors = ["Valentine Wallace <[email protected]>"]
license = "MIT OR Apache-2.0"
repository = "http://github.com/lightningdevkit/rust-lightning"
Expand All @@ -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" }
4 changes: 2 additions & 2 deletions lightning-block-sync/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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 }
Expand Down
6 changes: 3 additions & 3 deletions lightning-invoice/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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 <[email protected]>"]
documentation = "https://docs.rs/lightning-invoice/"
license = "MIT OR Apache-2.0"
Expand All @@ -20,13 +20,13 @@ 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 }
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"
4 changes: 2 additions & 2 deletions lightning-net-tokio/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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/"
Expand All @@ -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]
Expand Down
6 changes: 3 additions & 3 deletions lightning-persister/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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/"
Expand All @@ -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"] }
6 changes: 3 additions & 3 deletions lightning-rapid-gossip-sync/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "lightning-rapid-gossip-sync"
version = "0.0.106"
version = "0.0.107"
authors = ["Arik Sosman <[email protected]>"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/lightningdevkit/rust-lightning"
Expand All @@ -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"] }
2 changes: 1 addition & 1 deletion lightning/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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/"
Expand Down