diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3a67a681280..f27a2ccf863 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -109,7 +109,7 @@ jobs: RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rpc-client,rest-client RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rpc-client,rest-client,tokio - name: Test backtrace-debug builds on Rust ${{ matrix.toolchain }} - if: "matrix.build-no-std" + if: "matrix.toolchain == 'stable'" run: | cd lightning && cargo test --verbose --color always --features backtrace - name: Test on Rust ${{ matrix.toolchain }} with net-tokio diff --git a/CHANGELOG.md b/CHANGELOG.md index 37a70035c7c..8d3b394a3a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,90 @@ +# 0.0.113 - Dec 15, 2022 - "Big Movement Intercepted" + +## API Updates + * `ChannelManager::send_payment` now takes an explicit `PaymentId` which is a + loose idempotency token. See `send_payment` docs for more (#1761, #1826). + * HTLCs bound for SCIDs from `ChannelManager::get_intercept_scid` are now + intercepted and can be forwarded manually over any channel (#1835, #1893). + * `Confirm::get_relevant_txids` now returns a `BlockHash`, expanding the set + of cases where `transaction_unconfirmed` must be called, see docs (#1796). + * Pending outbound payments are no longer automatically timed-out a few blocks + after failure. Thus, in order to avoid leaking memory, you MUST call + `ChannelManager::abandon_payment` when you no longer wish to retry (#1761). + * `ChannelManager::abandon_payment` docs were updated to note that the payment + may return to pending after a restart if no persistence occurs (#1907). + * `Event::PaymentReceived` has been renamed `Event::PaymentClaimable` (#1891). + * `Event` handling is now optionally async for Rust users (#1787). + * `user_channel_id` is now a `u128` and random for inbound channels (#1790). + * A new `ChannelReady` event is generated whenever a channel becomes ready to + be used, i.e., after both sides sent the `channel_ready` message (#1743). + * `NetworkGraph` now prunes channels where either node is offline for 2 weeks + and refuses to accept re-announcements of pruned channels (#1735). + * Onion messages are now read in `CustomOnionMessageHandler` rather than via + `MaybeReadableArgs` (#1809). + * Added a new util to generate an invoice with a custom hash (#1894) - +`create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash` + * `Sign`ers are now by default re-derived using `KeysInterface`'s new + `derive_channel_signer` rather than `read_chan_signer` (#1867). + * `Confirm::transactions_confirmed` is now idempotent (#1861). + * `ChannelManager::compute_inflight_htlcs` has been added to fetch in-flight + HTLCs for scoring. Note that `InvoicePayer` does this for you (#1830). + * Added `PaymentClaimable::via_channel_id` (#1856). + * Added the `node_id` (phantom or regular) to payment events (#1766). + * Added the funding transaction `confirmations` to `ChannelDetails` (#1856). + * `BlindedRoute` has been renamed `BlindedPath` (#1918). + * Support for the BOLT 4 "legacy" onion format has been removed, in line with + its removal in the spec and vanishingly rare use (#1413). + * `ChainMonitor::list_pending_monitor_updates` was added (#1834). + * Signing for non-zero-fee anchor commitments is supported again (#1828). + * Several helpers for transaction matching and generation are now pub (#1839). + +## Bug Fixes + * Fixed a rare race where a crash may result in a pending HTLC not being + failed backwards, leading to a force-closure by our counterparty (#1857). + * Avoid incorrectly assigning a lower-bound on channel liquidity when routing + fails due to a closed channel earlier in the path (#1817). + * If a counterparty increases the channel fee, but not enough per our own fee + estimator, we no longer force-close the channel (#1852). + * Several bugs in the `lightning-background-processor` `future` feature were + fixed, including requirements doc corrections (#1843, #1845, #1851). + * Some failure messages sent back when failing an HTLC were corrected (#1895). + * `rapid-gossip-sync` no longer errors if an update is applied duplicatively + or in rare cases when the graph is updated from payment failures (#1833). + * Sending onion messages to a blinded path in which we're the introduction + node no longer fails (#1791). + +## Backwards Compatibility + * No `ChannelReady` events will be generated for previously existing channels, + including those which become ready after upgrading to 0.0.113 (#1743). + * Once `UserConfig::accept_intercept_htlcs` is set, downgrades to LDK versions + prior to 0.0.113 are not supported (#1835). + * Existing payments may see a `PaymentClaimable::user_channel_id` of 0 (#1856) + * When downgrading to a version of LDK prior to 0.0.113 when there are + resolved payments waiting for a small timeout, the payments may not be + removed, preventing payments with the same `PaymentId` (#1761). + +In total, this release features 76 files changed, 11639 insertions, 6067 +deletions in 210 commits from 18 authors, in alphabetical order: + * Antoine Riard + * Arik Sosman + * Devrandom + * Duncan Dean + * Elias Rohrer + * Gleb Naumenko + * Jeffrey Czyz + * John Cantrell + * Matt Corallo + * Tee8z + * Tobin C. Harding + * Tristan F + * Valentine Wallace + * Viktor Tigerström + * Wilmer Paulino + * benthecarman + * jurvis + * ssbright + + # 0.0.112 - Oct 25, 2022 - "History Matters" ## API Updates diff --git a/lightning-background-processor/Cargo.toml b/lightning-background-processor/Cargo.toml index 8f0fc15363a..343408ea99c 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.112" +version = "0.0.113" authors = ["Valentine Wallace "] license = "MIT OR Apache-2.0" repository = "http://github.com/lightningdevkit/rust-lightning" @@ -18,11 +18,11 @@ futures = [ "futures-util" ] [dependencies] bitcoin = "0.29.0" -lightning = { version = "0.0.112", path = "../lightning", features = ["std"] } -lightning-rapid-gossip-sync = { version = "0.0.112", path = "../lightning-rapid-gossip-sync" } +lightning = { version = "0.0.113", path = "../lightning", features = ["std"] } +lightning-rapid-gossip-sync = { version = "0.0.113", path = "../lightning-rapid-gossip-sync" } futures-util = { version = "0.3", default-features = false, features = ["async-await-macro"], optional = true } [dev-dependencies] -lightning = { version = "0.0.112", path = "../lightning", features = ["_test_utils"] } -lightning-invoice = { version = "0.20.0", path = "../lightning-invoice" } -lightning-persister = { version = "0.0.112", path = "../lightning-persister" } +lightning = { version = "0.0.113", path = "../lightning", features = ["_test_utils"] } +lightning-invoice = { version = "0.21.0", path = "../lightning-invoice" } +lightning-persister = { version = "0.0.113", path = "../lightning-persister" } diff --git a/lightning-block-sync/Cargo.toml b/lightning-block-sync/Cargo.toml index 220de8fa38e..8b185ff3bab 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.112" +version = "0.0.113" 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.29.0" -lightning = { version = "0.0.112", path = "../lightning" } +lightning = { version = "0.0.113", path = "../lightning" } futures-util = { 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 39ca3a1badc..53a36faba3f 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.20.0" +version = "0.21.0" 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.112", path = "../lightning", default-features = false } +lightning = { version = "0.0.113", 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 } @@ -29,6 +29,6 @@ hashbrown = { version = "0.8", optional = true } serde = { version = "1.0.118", optional = true } [dev-dependencies] -lightning = { version = "0.0.112", path = "../lightning", default-features = false, features = ["_test_utils"] } +lightning = { version = "0.0.113", 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 3767fe758b3..07f9f313307 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.112" +version = "0.0.113" 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.29.0" -lightning = { version = "0.0.112", path = "../lightning" } +lightning = { version = "0.0.113", 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 6b3518398bb..c4f3acd4e72 100644 --- a/lightning-persister/Cargo.toml +++ b/lightning-persister/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning-persister" -version = "0.0.112" +version = "0.0.113" authors = ["Valentine Wallace", "Matt Corallo"] license = "MIT OR Apache-2.0" repository = "https://github.com/lightningdevkit/rust-lightning/" @@ -18,11 +18,11 @@ _bench_unstable = ["lightning/_bench_unstable"] [dependencies] bitcoin = "0.29.0" -lightning = { version = "0.0.112", path = "../lightning" } +lightning = { version = "0.0.113", path = "../lightning" } libc = "0.2" [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", features = ["winbase"] } [dev-dependencies] -lightning = { version = "0.0.112", path = "../lightning", features = ["_test_utils"] } +lightning = { version = "0.0.113", path = "../lightning", features = ["_test_utils"] } diff --git a/lightning-rapid-gossip-sync/Cargo.toml b/lightning-rapid-gossip-sync/Cargo.toml index 6d49d455095..63432b58290 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.112" +version = "0.0.113" authors = ["Arik Sosman "] license = "MIT OR Apache-2.0" repository = "https://github.com/lightningdevkit/rust-lightning" @@ -16,8 +16,8 @@ std = ["lightning/std"] _bench_unstable = [] [dependencies] -lightning = { version = "0.0.112", path = "../lightning", default-features = false } +lightning = { version = "0.0.113", path = "../lightning", default-features = false } bitcoin = { version = "0.29.0", default-features = false } [dev-dependencies] -lightning = { version = "0.0.112", path = "../lightning", features = ["_test_utils"] } +lightning = { version = "0.0.113", path = "../lightning", features = ["_test_utils"] } diff --git a/lightning/Cargo.toml b/lightning/Cargo.toml index 543c674ec35..e98756d552f 100644 --- a/lightning/Cargo.toml +++ b/lightning/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightning" -version = "0.0.112" +version = "0.0.113" authors = ["Matt Corallo"] license = "MIT OR Apache-2.0" repository = "https://github.com/lightningdevkit/rust-lightning/" diff --git a/pending_changelog/1743.txt b/pending_changelog/1743.txt deleted file mode 100644 index 93e41202c79..00000000000 --- a/pending_changelog/1743.txt +++ /dev/null @@ -1,7 +0,0 @@ -## API Updates -- A new `ChannelReady` event is generated whenever a channel becomes ready to - be used, i.e., after both sides sent the `channel_ready` message. - -## Backwards Compatibilty -- No `ChannelReady` events will be generated for previously existing channels, including - those which become ready after upgrading 0.0.113. diff --git a/pending_changelog/1856.txt b/pending_changelog/1856.txt deleted file mode 100644 index d45cff6c93b..00000000000 --- a/pending_changelog/1856.txt +++ /dev/null @@ -1,9 +0,0 @@ -## API Updates -- `PaymentReceived` events now have `via_channel_id` and `via_user_channel_id` - fields exposing the hop over which we received an inbound payment. Also, - `ChannelDetails` now expose the currently observed number of `confirmations` - on the funding transaction. - -## Backwards Compatibilty -- Inbound payments with HTLCs pending on update to 0.0.113 will result - in a `PaymentReceived` event with `user_channel_id` 0. diff --git a/pending_changelog/elias-event-renaming.txt b/pending_changelog/elias-event-renaming.txt deleted file mode 100644 index c647296b6bd..00000000000 --- a/pending_changelog/elias-event-renaming.txt +++ /dev/null @@ -1,5 +0,0 @@ -## API Updates - -## Backwards Compatibilty -- The event formerly known as `PaymentReceived` is now called - `PaymentClaimable`. diff --git a/pending_changelog/matt-abandon-restart.txt b/pending_changelog/matt-abandon-restart.txt deleted file mode 100644 index 07dc073647e..00000000000 --- a/pending_changelog/matt-abandon-restart.txt +++ /dev/null @@ -1,4 +0,0 @@ -## API Updates -- `ChannelManager::abandon_payment` docs have been updated to note that the - payment may return to pending after a restart if no persistence occurs. This - is not a change in behavior - ensure your existing code is safe. diff --git a/pending_changelog/matt-idempotent-payments.txt b/pending_changelog/matt-idempotent-payments.txt deleted file mode 100644 index e837594e47e..00000000000 --- a/pending_changelog/matt-idempotent-payments.txt +++ /dev/null @@ -1,16 +0,0 @@ -API Changes -=========== - - * Payment sending methods now take an explicit `PaymentId`, which acts as an - idempotency token. You may use the PaymentHash for this, which existing - `InvoicePayer` send methods do, new `_with_id` variants were added (#XXXX). - * Pending outbound payments are no longer automatically timed-out a few blocks - after failure. Thus, in order to avoid leaking memory, you MUST call - `ChannelManager::abandon_payment` when you no longer wish to retry (#XXXX). - -Serialization Compatibility -=========================== - - * When downgrading to a version of LDK prior to THIS_VERSION_XXX when there are - resolved payments waiting for a small timeout, the payments may not be - removed, preventing payments with the same `PaymentId`.