Skip to content

Cut 0.0.111 #1712

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 2 commits into from
Sep 13, 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
94 changes: 94 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,97 @@
# 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).
Copy link
Contributor

Choose a reason for hiding this comment

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

Are ChannelMonitors safe to remove now?

Copy link
Contributor

Choose a reason for hiding this comment

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

I think so now that #1466, #1620, and #1691 are addressed, unless @TheBlueMatt knows of another edge case. In any case, we may want to expose a public helper that users can call instead of relying on the result of get_claimable_balances.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yes, I believe so. I don't want to announce it quite yet, though, would rather let the code sit for a release or two and then announce it.

* On machines with buggy "monotonic" clocks, LDK will no longer panic if time
goes backwards (#1692).
Copy link

Choose a reason for hiding this comment

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

I don't know if #1659 should be added or to minor.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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


## 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
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.110"
version = "0.0.111"
authors = ["Valentine Wallace <[email protected]>"]
license = "MIT OR Apache-2.0"
repository = "http://github.com/lightningdevkit/rust-lightning"
Expand All @@ -15,11 +15,11 @@ rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
bitcoin = "0.29.0"
lightning = { version = "0.0.110", path = "../lightning", features = ["std"] }
lightning-rapid-gossip-sync = { version = "0.0.110", path = "../lightning-rapid-gossip-sync" }
lightning = { version = "0.0.111", path = "../lightning", features = ["std"] }
lightning-rapid-gossip-sync = { version = "0.0.111", path = "../lightning-rapid-gossip-sync" }
futures = { version = "0.3", optional = true }

[dev-dependencies]
lightning = { version = "0.0.110", path = "../lightning", features = ["_test_utils"] }
lightning-invoice = { version = "0.18.0", path = "../lightning-invoice" }
lightning-persister = { version = "0.0.110", path = "../lightning-persister" }
lightning = { version = "0.0.111", path = "../lightning", features = ["_test_utils"] }
lightning-invoice = { version = "0.19.0", path = "../lightning-invoice" }
lightning-persister = { version = "0.0.111", 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.110"
version = "0.0.111"
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.29.0"
lightning = { version = "0.0.110", path = "../lightning" }
lightning = { version = "0.0.111", 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.18.0"
version = "0.19.0"
authors = ["Sebastian Geisler <[email protected]>"]
documentation = "https://docs.rs/lightning-invoice/"
license = "MIT OR Apache-2.0"
Expand All @@ -20,7 +20,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.110", path = "../lightning", default-features = false }
lightning = { version = "0.0.111", 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 }
Expand All @@ -29,6 +29,6 @@ core2 = { version = "0.3.0", default-features = false, optional = true }
serde = { version = "1.0.118", optional = true }

[dev-dependencies]
lightning = { version = "0.0.110", path = "../lightning", default-features = false, features = ["_test_utils"] }
lightning = { version = "0.0.111", path = "../lightning", default-features = false, features = ["_test_utils"] }
hex = "0.4"
serde_json = { version = "1"}
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.110"
version = "0.0.111"
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.29.0"
lightning = { version = "0.0.110", path = "../lightning" }
lightning = { version = "0.0.111", 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.110"
version = "0.0.111"
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.29.0"
lightning = { version = "0.0.110", path = "../lightning" }
lightning = { version = "0.0.111", path = "../lightning" }
libc = "0.2"

[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3", features = ["winbase"] }

[dev-dependencies]
lightning = { version = "0.0.110", path = "../lightning", features = ["_test_utils"] }
lightning = { version = "0.0.111", 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.110"
version = "0.0.111"
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.110", path = "../lightning" }
lightning = { version = "0.0.111", path = "../lightning" }
bitcoin = { version = "0.29.0", default-features = false }

[dev-dependencies]
lightning = { version = "0.0.110", path = "../lightning", features = ["_test_utils"] }
lightning = { version = "0.0.111", 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.110"
version = "0.0.111"
authors = ["Matt Corallo"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/lightningdevkit/rust-lightning/"
Expand Down
Empty file added pending_changelog/.empty_folder
Empty file.
2 changes: 0 additions & 2 deletions pending_changelog/1699.txt

This file was deleted.