From 5fd19f87a548ad9f983a9f84c14fedd1b85ff3a9 Mon Sep 17 00:00:00 2001 From: benthecarman Date: Wed, 7 Oct 2026 21:37:24 -0500 Subject: [PATCH 1/2] Update ldk-node to latest main Bump ldk-node to 179b4b2, which pulls in rust-lightning 0.3.0-rc3. The new bip39 version takes a WordCount enum in Mnemonic::generate instead of a raw word count, so update the callers accordingly. Co-Authored-By: Claude Opus 5.5 --- Cargo.lock | 73 +++++++++++++++++++--------------- e2e-tests/Cargo.lock | 73 +++++++++++++++++++--------------- e2e-tests/Cargo.toml | 2 +- e2e-tests/tests/e2e.rs | 3 +- ldk-server/Cargo.toml | 2 +- ldk-server/src/util/entropy.rs | 4 +- 6 files changed, 90 insertions(+), 67 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 78e1852a..049f124e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -214,7 +214,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1284fb23acc3e3022673712b55f4d5ce7e38aadc2c49bbef830dc3935f0a3289" dependencies = [ "bdk_chain", - "bip39", + "bip39 2.2.2", "bitcoin", "miniscript", "rand_core 0.6.4", @@ -243,6 +243,17 @@ name = "bip39" version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90dbd31c98227229239363921e60fcf5e558e43ec69094d46fc4996f08d1d5bc" +dependencies = [ + "bitcoin_hashes", + "serde", + "unicode-normalization", +] + +[[package]] +name = "bip39" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4559bb9225f8401dcea601cf8dc9ed81ea0dadd9cf7755fdefdd93ef7961e19e" dependencies = [ "bitcoin_hashes", "rand 0.8.5", @@ -302,7 +313,7 @@ checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" [[package]] name = "bitcoin-payment-instructions" version = "0.6.0" -source = "git+https://github.com/benthecarman/bitcoin-payment-instructions?rev=632f2ce8de7ea2035d5c83d7d745a52ea3e1fe70#632f2ce8de7ea2035d5c83d7d745a52ea3e1fe70" +source = "git+https://github.com/benthecarman/bitcoin-payment-instructions?rev=3dbe11bdf8916639df42476501fb40f87b253e84#3dbe11bdf8916639df42476501fb40f87b253e84" dependencies = [ "bitcoin", "dnssec-prover", @@ -1158,7 +1169,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.1", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -1370,7 +1381,7 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "ldk-node" version = "0.8.0+git" -source = "git+https://github.com/lightningdevkit/ldk-node?rev=f375e4d5de18093c29a023f19f08c93d890af220#f375e4d5de18093c29a023f19f08c93d890af220" +source = "git+https://github.com/lightningdevkit/ldk-node?rev=179b4b263762155a7ff515ddad7e757a80807fd5#179b4b263762155a7ff515ddad7e757a80807fd5" dependencies = [ "async-trait", "base64 0.22.1", @@ -1379,7 +1390,7 @@ dependencies = [ "bdk_esplora", "bdk_wallet", "bip21", - "bip39", + "bip39 3.0.0", "bitcoin", "bitcoin-payment-instructions", "bitreq", @@ -1544,8 +1555,8 @@ dependencies = [ [[package]] name = "lightning" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bech32", "bitcoin", @@ -1561,8 +1572,8 @@ dependencies = [ [[package]] name = "lightning-background-processor" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "bitcoin-io", @@ -1575,8 +1586,8 @@ dependencies = [ [[package]] name = "lightning-block-sync" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "bitreq", @@ -1587,8 +1598,8 @@ dependencies = [ [[package]] name = "lightning-dns-resolver" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.4.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "dnssec-prover", "lightning", @@ -1598,8 +1609,8 @@ dependencies = [ [[package]] name = "lightning-invoice" -version = "0.35.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.35.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bech32", "bitcoin", @@ -1609,8 +1620,8 @@ dependencies = [ [[package]] name = "lightning-liquidity" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "bitreq", @@ -1626,7 +1637,7 @@ dependencies = [ [[package]] name = "lightning-macros" version = "0.2.2+git" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "proc-macro2", "quote", @@ -1635,8 +1646,8 @@ dependencies = [ [[package]] name = "lightning-net-tokio" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "lightning", @@ -1645,8 +1656,8 @@ dependencies = [ [[package]] name = "lightning-persister" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "lightning", @@ -1656,8 +1667,8 @@ dependencies = [ [[package]] name = "lightning-rapid-gossip-sync" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "bitcoin-io", @@ -1667,8 +1678,8 @@ dependencies = [ [[package]] name = "lightning-transaction-sync" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "electrum-client", @@ -1680,8 +1691,8 @@ dependencies = [ [[package]] name = "lightning-types" -version = "0.4.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.4.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", ] @@ -1961,7 +1972,7 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "possiblyrandom" version = "0.2.0" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "getrandom 0.2.16", ] @@ -2111,7 +2122,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls 0.23.42", - "socket2 0.6.1", + "socket2 0.5.10", "thiserror", "tokio", "tracing", @@ -2148,7 +2159,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.1", + "socket2 0.5.10", "tracing", "windows-sys 0.60.2", ] diff --git a/e2e-tests/Cargo.lock b/e2e-tests/Cargo.lock index 4cfb9816..8849461f 100644 --- a/e2e-tests/Cargo.lock +++ b/e2e-tests/Cargo.lock @@ -176,7 +176,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1284fb23acc3e3022673712b55f4d5ce7e38aadc2c49bbef830dc3935f0a3289" dependencies = [ "bdk_chain", - "bip39", + "bip39 2.2.2", "bitcoin", "miniscript", "rand_core 0.6.4", @@ -205,6 +205,17 @@ name = "bip39" version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90dbd31c98227229239363921e60fcf5e558e43ec69094d46fc4996f08d1d5bc" +dependencies = [ + "bitcoin_hashes", + "serde", + "unicode-normalization", +] + +[[package]] +name = "bip39" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4559bb9225f8401dcea601cf8dc9ed81ea0dadd9cf7755fdefdd93ef7961e19e" dependencies = [ "bitcoin_hashes", "rand 0.8.5", @@ -250,7 +261,7 @@ checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" [[package]] name = "bitcoin-payment-instructions" version = "0.6.0" -source = "git+https://github.com/benthecarman/bitcoin-payment-instructions?rev=632f2ce8de7ea2035d5c83d7d745a52ea3e1fe70#632f2ce8de7ea2035d5c83d7d745a52ea3e1fe70" +source = "git+https://github.com/benthecarman/bitcoin-payment-instructions?rev=3dbe11bdf8916639df42476501fb40f87b253e84#3dbe11bdf8916639df42476501fb40f87b253e84" dependencies = [ "bitcoin", "dnssec-prover", @@ -1059,7 +1070,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.3", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -1284,7 +1295,7 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "ldk-node" version = "0.8.0+git" -source = "git+https://github.com/lightningdevkit/ldk-node?rev=f375e4d5de18093c29a023f19f08c93d890af220#f375e4d5de18093c29a023f19f08c93d890af220" +source = "git+https://github.com/lightningdevkit/ldk-node?rev=179b4b263762155a7ff515ddad7e757a80807fd5#179b4b263762155a7ff515ddad7e757a80807fd5" dependencies = [ "async-trait", "base64 0.22.1", @@ -1293,7 +1304,7 @@ dependencies = [ "bdk_esplora", "bdk_wallet", "bip21", - "bip39", + "bip39 3.0.0", "bitcoin", "bitcoin-payment-instructions", "bitreq", @@ -1405,8 +1416,8 @@ dependencies = [ [[package]] name = "lightning" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bech32", "bitcoin", @@ -1422,8 +1433,8 @@ dependencies = [ [[package]] name = "lightning-background-processor" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "bitcoin-io", @@ -1436,8 +1447,8 @@ dependencies = [ [[package]] name = "lightning-block-sync" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "bitreq", @@ -1448,8 +1459,8 @@ dependencies = [ [[package]] name = "lightning-dns-resolver" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.4.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "dnssec-prover", "lightning", @@ -1459,8 +1470,8 @@ dependencies = [ [[package]] name = "lightning-invoice" -version = "0.35.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.35.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bech32", "bitcoin", @@ -1470,8 +1481,8 @@ dependencies = [ [[package]] name = "lightning-liquidity" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "bitreq", @@ -1487,7 +1498,7 @@ dependencies = [ [[package]] name = "lightning-macros" version = "0.2.2+git" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "proc-macro2", "quote", @@ -1496,8 +1507,8 @@ dependencies = [ [[package]] name = "lightning-net-tokio" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "lightning", @@ -1506,8 +1517,8 @@ dependencies = [ [[package]] name = "lightning-persister" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "lightning", @@ -1517,8 +1528,8 @@ dependencies = [ [[package]] name = "lightning-rapid-gossip-sync" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "bitcoin-io", @@ -1528,8 +1539,8 @@ dependencies = [ [[package]] name = "lightning-transaction-sync" -version = "0.3.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.3.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", "electrum-client", @@ -1541,8 +1552,8 @@ dependencies = [ [[package]] name = "lightning-types" -version = "0.4.0-rc1" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +version = "0.4.0-rc3" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "bitcoin", ] @@ -1698,7 +1709,7 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "possiblyrandom" version = "0.2.0" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e#697a239f2beff8ecadd4ddaffbcff8f1e5b3d09e" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=d7a980641c6325ddda5072a0f470ef8392676cf5#d7a980641c6325ddda5072a0f470ef8392676cf5" dependencies = [ "getrandom 0.2.17", ] @@ -1817,7 +1828,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls 0.23.42", - "socket2 0.6.3", + "socket2 0.5.10", "thiserror", "tokio", "tracing", @@ -1854,7 +1865,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.3", + "socket2 0.5.10", "tracing", "windows-sys 0.60.2", ] diff --git a/e2e-tests/Cargo.toml b/e2e-tests/Cargo.toml index d2ef2add..a110196f 100644 --- a/e2e-tests/Cargo.toml +++ b/e2e-tests/Cargo.toml @@ -21,4 +21,4 @@ ldk-server-client = { path = "../ldk-server-client" } ldk-server-grpc = { path = "../ldk-server-grpc", features = ["serde"] } serde_json = "1.0" hex-conservative = { version = "0.2", features = ["std"] } -ldk-node = { git = "https://github.com/lightningdevkit/ldk-node", rev = "f375e4d5de18093c29a023f19f08c93d890af220" } +ldk-node = { git = "https://github.com/lightningdevkit/ldk-node", rev = "179b4b263762155a7ff515ddad7e757a80807fd5" } diff --git a/e2e-tests/tests/e2e.rs b/e2e-tests/tests/e2e.rs index 68ba0500..9d8df96f 100644 --- a/e2e-tests/tests/e2e.rs +++ b/e2e-tests/tests/e2e.rs @@ -1803,7 +1803,8 @@ async fn forwarded_payment_event_and_history(tracking_mode: &str) { let b_addr = SocketAddress::from_str(&format!("127.0.0.1:{}", server_b.p2p_port)).unwrap(); builder_c.add_liquidity_source(b_node_id, b_addr, None, true); - let mnemonic_c = ldk_node::bip39::Mnemonic::generate(24).unwrap(); + let mnemonic_c = + ldk_node::bip39::Mnemonic::generate(ldk_node::bip39::WordCount::Words24).unwrap(); let node_entropy_c = ldk_node::entropy::NodeEntropy::from_bip39_mnemonic(mnemonic_c, None); let node_c = builder_c.build(node_entropy_c).unwrap(); diff --git a/ldk-server/Cargo.toml b/ldk-server/Cargo.toml index 554a7ba3..e19e76f3 100644 --- a/ldk-server/Cargo.toml +++ b/ldk-server/Cargo.toml @@ -13,7 +13,7 @@ keywords = ["bitcoin", "lightning", "ldk", "server"] categories = ["cryptography::cryptocurrencies"] [dependencies] -ldk-node = { git = "https://github.com/lightningdevkit/ldk-node", rev = "f375e4d5de18093c29a023f19f08c93d890af220", features = ["storage-postgres"] } +ldk-node = { git = "https://github.com/lightningdevkit/ldk-node", rev = "179b4b263762155a7ff515ddad7e757a80807fd5", features = ["storage-postgres"] } serde = { version = "1.0.203", default-features = false, features = ["derive"] } hyper = { version = "1", default-features = false, features = ["server", "http2"] } http-body-util = { version = "0.1", default-features = false } diff --git a/ldk-server/src/util/entropy.rs b/ldk-server/src/util/entropy.rs index cf64fc22..2aab748c 100644 --- a/ldk-server/src/util/entropy.rs +++ b/ldk-server/src/util/entropy.rs @@ -11,7 +11,7 @@ use std::io; use std::path::Path; use std::str::FromStr; -use ldk_node::bip39::Mnemonic; +use ldk_node::bip39::{Mnemonic, WordCount}; use ldk_node::entropy::NodeEntropy; use log::info; @@ -34,7 +34,7 @@ pub(crate) fn load_or_generate_node_entropy(storage_dir: &Path) -> io::Result Date: Wed, 7 Oct 2026 21:52:20 -0500 Subject: [PATCH 2/2] Retry node build while Postgres lease is held LDK Node now takes an exclusive lease on its PostgreSQL KV table. A process that exits without releasing it, e.g. after a crash or kill, keeps the lease until it expires, so an immediate restart failed with KVStoreAlreadyInUse and exited. Retry the build for a bounded time so a restart waits out a stale lease instead of failing, while a node that is genuinely still running elsewhere still causes startup to fail. Co-Authored-By: Claude Opus 5.5 --- ldk-server/src/main.rs | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/ldk-server/src/main.rs b/ldk-server/src/main.rs index 18afa931..a8b16a65 100644 --- a/ldk-server/src/main.rs +++ b/ldk-server/src/main.rs @@ -15,7 +15,7 @@ mod util; use std::collections::HashSet; use std::path::{Path, PathBuf}; use std::sync::Arc; -use std::time::{Duration, SystemTime, UNIX_EPOCH}; +use std::time::{Duration, Instant, SystemTime, UNIX_EPOCH}; use base64::prelude::BASE64_STANDARD; use base64::Engine; @@ -33,7 +33,7 @@ use ldk_node::{Builder, CustomTlvRecord, Event, Node}; use ldk_server_grpc::events; use ldk_server_grpc::events::{event_envelope, EventEnvelope}; use ldk_server_grpc::types::{HtlcLocator, Payment}; -use log::{debug, error, info}; +use log::{debug, error, info, warn}; #[cfg(test)] use prost::Message; use tokio::net::TcpListener; @@ -52,6 +52,10 @@ use crate::util::tls::get_or_generate_tls_config; use crate::util::{systemd, write_new}; const LDK_NODE_POSTGRES_LOCK_FILE: &str = "ldk_node_postgres.lock"; +// LDK Node's PostgreSQL lease outlives a process that exits without releasing it, so on +// startup we wait for a stale lease to expire instead of failing immediately. +const KV_STORE_IN_USE_RETRY_TIMEOUT: Duration = Duration::from_secs(60); +const KV_STORE_IN_USE_RETRY_INTERVAL: Duration = Duration::from_secs(2); pub(crate) const FULL_VERSION: &str = concat!(env!("CARGO_PKG_VERSION"), " (", env!("GIT_HASH"), ")"); @@ -288,12 +292,22 @@ fn main() { let uses_postgres = matches!(config_file.ldk_node_storage, LdkNodeStorageConfig::Postgres { .. }); - let node = match build_node(builder, node_entropy, config_file.ldk_node_storage) { - Ok(node) => node, - Err(e) => { - error!("Failed to build LDK Node: {e}"); - std::process::exit(-1); - }, + let build_deadline = Instant::now() + KV_STORE_IN_USE_RETRY_TIMEOUT; + let node = loop { + match build_node(&builder, node_entropy, &config_file.ldk_node_storage) { + Ok(node) => break node, + Err(ldk_node::BuildError::KVStoreAlreadyInUse) if Instant::now() < build_deadline => { + warn!( + "LDK Node storage is in use by another node, retrying in {}s.", + KV_STORE_IN_USE_RETRY_INTERVAL.as_secs() + ); + std::thread::sleep(KV_STORE_IN_USE_RETRY_INTERVAL); + }, + Err(e) => { + error!("Failed to build LDK Node: {e}"); + std::process::exit(-1); + }, + } }; if uses_postgres { if let Err(e) = persist_postgres_storage_lock(&network_dir) { @@ -806,8 +820,8 @@ fn persist_postgres_storage_lock(network_dir: &Path) -> Result<(), String> { } fn build_node( - builder: Builder, node_entropy: ldk_node::entropy::NodeEntropy, - ldk_node_storage: LdkNodeStorageConfig, + builder: &Builder, node_entropy: ldk_node::entropy::NodeEntropy, + ldk_node_storage: &LdkNodeStorageConfig, ) -> Result { match ldk_node_storage { LdkNodeStorageConfig::Sqlite => builder.build(node_entropy), @@ -818,10 +832,10 @@ fn build_node( certificate_pem, } => builder.build_with_postgres_store( node_entropy, - connection_string, - db_name, - kv_table_name, - certificate_pem, + connection_string.clone(), + db_name.clone(), + kv_table_name.clone(), + certificate_pem.clone(), ), } }