diff --git a/Cargo.lock b/Cargo.lock index 7af8928..6c5bc1e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1428,7 +1428,7 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "ldk-node" version = "0.7.0" -source = "git+https://github.com/moneydevkit/ldk-node?rev=e5fcce065fa97c522de0f8fec87beb9e7e541456#e5fcce065fa97c522de0f8fec87beb9e7e541456" +source = "git+https://github.com/moneydevkit/ldk-node?rev=48cb27f8179fa7c468ed50894821036a6d1153e0#48cb27f8179fa7c468ed50894821036a6d1153e0" dependencies = [ "base64 0.22.1", "bdk_chain", @@ -1438,22 +1438,22 @@ dependencies = [ "bip21", "bip39", "bitcoin", - "bitcoin-payment-instructions 0.6.0 (git+https://github.com/moneydevkit/bitcoin-payment-instructions?rev=6796e87525d6c564e1332354a808730e2ba2ebf8)", + "bitcoin-payment-instructions 0.6.0 (git+https://github.com/moneydevkit/bitcoin-payment-instructions?rev=bdcef061488bcc619142010a2a69cd49462d8843)", "chrono", "electrum-client", "esplora-client", "libc", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-background-processor 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-block-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-liquidity 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-net-tokio 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-persister 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-rapid-gossip-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-transaction-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-background-processor 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-block-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-liquidity 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-net-tokio 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-persister 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-rapid-gossip-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-transaction-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", "log", "prost", "rand 0.9.2", @@ -1470,7 +1470,7 @@ dependencies = [ [[package]] name = "ldk-node" version = "0.7.0" -source = "git+https://github.com/moneydevkit/ldk-node?rev=f13fcead7e02ef4b77489a83854f204de11e902b#f13fcead7e02ef4b77489a83854f204de11e902b" +source = "git+https://github.com/moneydevkit/ldk-node?rev=b0dee519b49d756ac65d18571f2286574c16cc60#b0dee519b49d756ac65d18571f2286574c16cc60" dependencies = [ "base64 0.22.1", "bdk_chain", @@ -1480,22 +1480,22 @@ dependencies = [ "bip21", "bip39", "bitcoin", - "bitcoin-payment-instructions 0.6.0 (git+https://github.com/moneydevkit/bitcoin-payment-instructions?rev=bdcef061488bcc619142010a2a69cd49462d8843)", + "bitcoin-payment-instructions 0.6.0 (git+https://github.com/moneydevkit/bitcoin-payment-instructions?rev=6796e87525d6c564e1332354a808730e2ba2ebf8)", "chrono", "electrum-client", "esplora-client", "libc", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-background-processor 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-block-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-liquidity 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-net-tokio 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-persister 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-rapid-gossip-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-transaction-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-background-processor 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-block-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-liquidity 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-net-tokio 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-persister 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-rapid-gossip-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-transaction-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", "log", "prost", "rand 0.9.2", @@ -1541,35 +1541,35 @@ dependencies = [ [[package]] name = "lightning" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "bech32", "bitcoin", "dnssec-prover", "hashbrown 0.13.2", "libm", - "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", + "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", "musig2", - "possiblyrandom 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", + "possiblyrandom 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", ] [[package]] name = "lightning" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "bech32", "bitcoin", "dnssec-prover", "hashbrown 0.13.2", "libm", - "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", + "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", "musig2", - "possiblyrandom 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", + "possiblyrandom 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", ] [[package]] @@ -1592,39 +1592,39 @@ dependencies = [ [[package]] name = "lightning-background-processor" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "bitcoin", "bitcoin-io", "bitcoin_hashes", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-liquidity 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-rapid-gossip-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "possiblyrandom 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-liquidity 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-rapid-gossip-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "possiblyrandom 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", ] [[package]] name = "lightning-background-processor" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "bitcoin", "bitcoin-io", "bitcoin_hashes", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-liquidity 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-rapid-gossip-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "possiblyrandom 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-liquidity 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-rapid-gossip-sync 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "possiblyrandom 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", ] [[package]] name = "lightning-block-sync" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "bitcoin", "chunked_transfer", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", "serde_json", "tokio", ] @@ -1632,11 +1632,11 @@ dependencies = [ [[package]] name = "lightning-block-sync" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "bitcoin", "chunked_transfer", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", "serde_json", "tokio", ] @@ -1644,22 +1644,22 @@ dependencies = [ [[package]] name = "lightning-invoice" version = "0.34.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "bech32", "bitcoin", - "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", + "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", "serde", ] [[package]] name = "lightning-invoice" version = "0.34.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "bech32", "bitcoin", - "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", + "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", "serde", ] @@ -1676,14 +1676,14 @@ dependencies = [ [[package]] name = "lightning-liquidity" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "bitcoin", "chrono", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", "serde", "serde_json", ] @@ -1691,14 +1691,14 @@ dependencies = [ [[package]] name = "lightning-liquidity" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "bitcoin", "chrono", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-invoice 0.34.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-types 0.3.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", "serde", "serde_json", ] @@ -1706,7 +1706,7 @@ dependencies = [ [[package]] name = "lightning-macros" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "proc-macro2", "quote", @@ -1716,7 +1716,7 @@ dependencies = [ [[package]] name = "lightning-macros" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "proc-macro2", "quote", @@ -1736,31 +1736,31 @@ dependencies = [ [[package]] name = "lightning-net-tokio" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "bitcoin", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", "tokio", + "tokio-socks", ] [[package]] name = "lightning-net-tokio" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "bitcoin", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", "tokio", - "tokio-socks", ] [[package]] name = "lightning-persister" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "bitcoin", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", "tokio", "windows-sys 0.48.0", ] @@ -1768,10 +1768,10 @@ dependencies = [ [[package]] name = "lightning-persister" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "bitcoin", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", "tokio", "windows-sys 0.48.0", ] @@ -1779,55 +1779,55 @@ dependencies = [ [[package]] name = "lightning-rapid-gossip-sync" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "bitcoin", "bitcoin-io", "bitcoin_hashes", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", ] [[package]] name = "lightning-rapid-gossip-sync" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "bitcoin", "bitcoin-io", "bitcoin_hashes", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", ] [[package]] name = "lightning-transaction-sync" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "bitcoin", "electrum-client", "esplora-client", "futures", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", - "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", + "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e)", ] [[package]] name = "lightning-transaction-sync" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "bitcoin", "electrum-client", "esplora-client", "futures", - "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", - "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72)", + "lightning 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", + "lightning-macros 0.2.0 (git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d)", ] [[package]] name = "lightning-types" version = "0.3.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "bitcoin", ] @@ -1835,7 +1835,7 @@ dependencies = [ [[package]] name = "lightning-types" version = "0.3.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "bitcoin", ] @@ -1908,8 +1908,8 @@ dependencies = [ "hex-conservative", "hmac", "http-body-util", - "ldk-node 0.7.0 (git+https://github.com/moneydevkit/ldk-node?rev=e5fcce065fa97c522de0f8fec87beb9e7e541456)", - "ldk-node 0.7.0 (git+https://github.com/moneydevkit/ldk-node?rev=f13fcead7e02ef4b77489a83854f204de11e902b)", + "ldk-node 0.7.0 (git+https://github.com/moneydevkit/ldk-node?rev=48cb27f8179fa7c468ed50894821036a6d1153e0)", + "ldk-node 0.7.0 (git+https://github.com/moneydevkit/ldk-node?rev=b0dee519b49d756ac65d18571f2286574c16cc60)", "log", "reqwest 0.13.1", "rusqlite", @@ -2095,7 +2095,7 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "possiblyrandom" version = "0.2.0" -source = "git+https://github.com/lightningdevkit/rust-lightning?rev=e9ce486a425933041b319ac72512227353310dc5#e9ce486a425933041b319ac72512227353310dc5" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" dependencies = [ "getrandom 0.2.17", ] @@ -2103,7 +2103,7 @@ dependencies = [ [[package]] name = "possiblyrandom" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" +source = "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" dependencies = [ "getrandom 0.2.17", ] @@ -2111,7 +2111,7 @@ dependencies = [ [[package]] name = "possiblyrandom" version = "0.2.0" -source = "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" +source = "git+https://github.com/lightningdevkit/rust-lightning?rev=e9ce486a425933041b319ac72512227353310dc5#e9ce486a425933041b319ac72512227353310dc5" dependencies = [ "getrandom 0.2.17", ] diff --git a/Cargo.toml b/Cargo.toml index 5e0308e..25a6ea4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ demo = [] [dependencies] # Branch: https://github.com/moneydevkit/ldk-node/tree/lsp-0.7.0_accept-underpaying-htlcs_with_timing_logs -ldk-node = { git = "https://github.com/moneydevkit/ldk-node", rev = "f13fcead7e02ef4b77489a83854f204de11e902b" } +ldk-node = { git = "https://github.com/moneydevkit/ldk-node", rev = "48cb27f8179fa7c468ed50894821036a6d1153e0" } # Pinned to the same git rev as ldk-node's transitive pull to avoid duplicate # crate compilation. Verify with `cargo tree -d | grep bitcoin-payment-instructions`. @@ -45,7 +45,7 @@ base64 = "0.22" corepc-node = { version = "0.10", features = ["29_0"] } futures-util = "0.3" http-body-util = "0.1.3" -ldk-node-lsp = { package = "ldk-node", git = "https://github.com/moneydevkit/ldk-node", rev = "e5fcce065fa97c522de0f8fec87beb9e7e541456" } +ldk-node-lsp = { package = "ldk-node", git = "https://github.com/moneydevkit/ldk-node", rev = "b0dee519b49d756ac65d18571f2286574c16cc60" } tempfile = "3" tokio-tungstenite = "0.26" tower = "0.5.3" diff --git a/flake.nix b/flake.nix index 944be4d..d950d22 100644 --- a/flake.nix +++ b/flake.nix @@ -72,14 +72,14 @@ "sha256-kJz+7u55DiSy+/7Rpvm9aiB2ZGpds91M3QQ0CzOi9q4="; "git+https://github.com/moneydevkit/bitcoin-payment-instructions?rev=bdcef061488bcc619142010a2a69cd49462d8843#bdcef061488bcc619142010a2a69cd49462d8843" = "sha256-oj2zEt1iTQhK+m/2qXzRMHeZ7a+rm3pAO2ZbQXV1h18="; - "git+https://github.com/moneydevkit/ldk-node?rev=e5fcce065fa97c522de0f8fec87beb9e7e541456#e5fcce065fa97c522de0f8fec87beb9e7e541456" = - "sha256-LsodimSQabrGNw0vgoVKWC8pBglRJJYFvLqLL2/TIrA="; - "git+https://github.com/moneydevkit/ldk-node?rev=f13fcead7e02ef4b77489a83854f204de11e902b#f13fcead7e02ef4b77489a83854f204de11e902b" = - "sha256-w1AbC0s3SEuxCVMr0F8Uujw/MG0WyN5afHQK0h0S4Zw="; - "git+https://github.com/moneydevkit/rust-lightning?rev=eecf53e7c763e8ae8e436585858db506a7aac588#eecf53e7c763e8ae8e436585858db506a7aac588" = - "sha256-gRxr9GIIn9fWHhbg/xx2DT4z2CiBS6wVghiIXks/gsI="; - "git+https://github.com/moneydevkit/rust-lightning?rev=f56f47fe6c874771cd079faaacf96c42b32fbe72#f56f47fe6c874771cd079faaacf96c42b32fbe72" = - "sha256-g4+lUlGQVvURW1zizRQjcHfkFVbSV3jjFsyV3ah/kOo="; + "git+https://github.com/moneydevkit/ldk-node?rev=b0dee519b49d756ac65d18571f2286574c16cc60#b0dee519b49d756ac65d18571f2286574c16cc60" = + "sha256-dJam/azTnxC08hiLtNE/5CYp5UWdAJkQnBy6czwFraA="; + "git+https://github.com/moneydevkit/ldk-node?rev=48cb27f8179fa7c468ed50894821036a6d1153e0#48cb27f8179fa7c468ed50894821036a6d1153e0" = + "sha256-nSk5PZIN/GrEPDUYt/dsLGmhwY0cneX2DSla6qlXrKE="; + "git+https://github.com/moneydevkit/rust-lightning?rev=bdcdf57de38baeabce4bf8486769bc60d0aa0f8d#bdcdf57de38baeabce4bf8486769bc60d0aa0f8d" = + "sha256-9IDjszL8KOPsTUiOIAy2nU2DTvUaOGDMIutjIYjfc2M="; + "git+https://github.com/moneydevkit/rust-lightning?rev=9b5f40f00a623ff5e1cbe2540d79c3665589be6e#9b5f40f00a623ff5e1cbe2540d79c3665589be6e" = + "sha256-UB1MxvE88orgXTEGxyIzalJ7NLP9n4B66Gm07wHF/DM="; }; }; diff --git a/src/daemon/config.rs b/src/daemon/config.rs index cc41657..8d534b7 100644 --- a/src/daemon/config.rs +++ b/src/daemon/config.rs @@ -31,6 +31,7 @@ struct NodeSection { rest_service_address: Option, alias: Option, pathfinding_scores_source_url: Option, + fee_claim: Option, scoring: Option, } @@ -108,6 +109,7 @@ pub struct MdkConfig { pub storage_dir_path: Option, pub log_level: LevelFilter, pub pathfinding_scores_source_url: Option, + pub fee_claim: Option, pub scoring_overrides: ScoringOverrides, pub splice: SpliceConfig, pub max_sendable: MaxSendableConfig, @@ -208,6 +210,7 @@ pub fn load_config(path: &str) -> io::Result { storage_dir_path, log_level, pathfinding_scores_source_url: node.pathfinding_scores_source_url, + fee_claim: node.fee_claim, scoring_overrides, splice, max_sendable, diff --git a/src/main.rs b/src/main.rs index 1673453..a204127 100644 --- a/src/main.rs +++ b/src/main.rs @@ -129,6 +129,12 @@ fn main() { alias: config_file.alias.map(|a| a.to_string()), socks_proxy: socks_proxy.clone(), pathfinding_scores_source_url: config_file.pathfinding_scores_source_url, + // config.toml is the documented surface; MDK_FEE_CLAIM is an undocumented fallback for + // deployments that inject config through the environment (the open-money container, whose + // only runtime seam is env vars and whose baked config.toml cannot carry a per-wallet claim). + fee_claim: config_file + .fee_claim + .or_else(|| std::env::var("MDK_FEE_CLAIM").ok()), mnemonic: mnemonic_phrase, infra, scoring_overrides: config_file.scoring_overrides, diff --git a/src/mdk/node.rs b/src/mdk/node.rs index a6ddafe..4ae58b9 100644 --- a/src/mdk/node.rs +++ b/src/mdk/node.rs @@ -29,6 +29,7 @@ pub struct NodeConfig { pub alias: Option, pub socks_proxy: Option, pub pathfinding_scores_source_url: Option, + pub fee_claim: Option, pub mnemonic: String, pub infra: NetworkInfra, pub scoring_overrides: ScoringOverrides, @@ -168,7 +169,7 @@ pub fn build_node( .map_err(|e| MdkError::InvalidInput(format!("bad lsp_node_id: {e}")))?; let lsp_addr = SocketAddress::from_str(&infra.lsp_address) .map_err(|e| MdkError::InvalidInput(format!("bad lsp_address: {e}")))?; - builder.set_liquidity_source_lsps4(lsp_pubkey, lsp_addr); + builder.set_liquidity_source_lsps4(lsp_pubkey, lsp_addr, config.fee_claim); info!("LSPS4 liquidity source: {}", infra.lsp_node_id); builder.set_runtime(runtime); diff --git a/tests/common/mod.rs b/tests/common/mod.rs index 4a85151..3d98a73 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -14,6 +14,7 @@ use ldk_node::lightning::ln::msgs::SocketAddress; use ldk_node::lightning_invoice::Bolt11Invoice; use ldk_node::{Builder, Node}; +use ldk_node_lsp::bitcoin::secp256k1::XOnlyPublicKey; use ldk_node_lsp::config::Config as LspNodeConfig; use ldk_node_lsp::lightning::ln::msgs::SocketAddress as LspSocketAddress; use ldk_node_lsp::liquidity::LSPS4ServiceConfig; @@ -89,11 +90,14 @@ pub struct MdkdHandle { } impl MdkdHandle { + /// `fee_claim`, when set, is written into the `[node]` section of the generated config.toml + /// so the node presents a signed fee-policy grant on `register_node`. `None` omits the key. pub async fn start( bitcoind: &TestBitcoind, webhook_port: Option, lsp: Option<&LspNode>, mnemonic: &str, + fee_claim: Option<&str>, ) -> Self { #[allow(deprecated)] let storage_dir = tempfile::tempdir().unwrap().into_path(); @@ -120,12 +124,15 @@ impl MdkdHandle { let http_password_full = "test_full_password"; let http_password_read_only = "test_readonly_password"; + let fee_claim_line = fee_claim + .map(|claim| format!("fee_claim = \"{claim}\"\n")) + .unwrap_or_default(); let config = format!( r#"[node] network = "regtest" listening_addresses = ["127.0.0.1:{p2p_port}"] rest_service_address = "127.0.0.1:{api_port}" - +{fee_claim_line} [storage.disk] dir_path = "{storage_dir}" @@ -375,6 +382,12 @@ pub struct LspNode { impl LspNode { pub fn new(bitcoind: &TestBitcoind) -> Self { + Self::with_issuer_keys(bitcoind, vec![]) + } + + /// Stand up the LSP trusting `issuer_pubkeys` to grant non-standard fee policies via a signed + /// `MDK_FEE_CLAIM`. An empty set (the default `new`) keeps every node on the standard 2% skim. + pub fn with_issuer_keys(bitcoind: &TestBitcoind, issuer_pubkeys: Vec) -> Self { #[allow(deprecated)] let storage_dir = tempfile::tempdir().unwrap().into_path(); let p2p_port = find_available_port(); @@ -401,6 +414,7 @@ impl LspNode { channel_over_provisioning_ppm: 500_000, forwarding_fee_proportional_millionths: 20_000, channel_size_tiers: vec![], + issuer_pubkeys, }); let node = Arc::new(builder.build().unwrap()); @@ -702,6 +716,11 @@ pub fn random_mnemonic() -> String { .to_string() } +/// Parse a 32-byte x-only public key from hex, for configuring the LSP's trusted issuer set. +pub fn xonly_from_hex(hex: &str) -> XOnlyPublicKey { + XOnlyPublicKey::from_str(hex).expect("valid x-only pubkey hex") +} + // --------------------------------------------------------------------------- // LNURL bech32 helper // --------------------------------------------------------------------------- diff --git a/tests/integration.rs b/tests/integration.rs index ee43368..f7c1dc6 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -3,8 +3,8 @@ mod common; use std::time::Duration; use common::{ - encode_lnurl, fund_lsp, random_mnemonic, setup_payer_lsp_channel, LspNode, MdkdHandle, - PayerNode, TestBitcoind, WebhookReceiver, + encode_lnurl, fund_lsp, random_mnemonic, setup_payer_lsp_channel, xonly_from_hex, LspNode, + MdkdHandle, PayerNode, TestBitcoind, WebhookReceiver, }; const TEST_MNEMONIC: &str = @@ -14,11 +14,11 @@ const TEST_MNEMONIC: &str = async fn test_mnemonic_deterministic_node_id() { let bitcoind = TestBitcoind::new(); - let server1 = MdkdHandle::start(&bitcoind, None, None, TEST_MNEMONIC).await; + let server1 = MdkdHandle::start(&bitcoind, None, None, TEST_MNEMONIC, None).await; let node_id_1 = server1.node_id.clone(); drop(server1); - let server2 = MdkdHandle::start(&bitcoind, None, None, TEST_MNEMONIC).await; + let server2 = MdkdHandle::start(&bitcoind, None, None, TEST_MNEMONIC, None).await; let node_id_2 = server2.node_id.clone(); drop(server2); @@ -32,7 +32,7 @@ async fn test_mnemonic_deterministic_node_id() { #[tokio::test(flavor = "multi_thread")] async fn test_get_info() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp: serde_json::Value = server.get("/getinfo").await.json().await.unwrap(); assert!(!resp["nodeId"].as_str().unwrap().is_empty()); @@ -48,7 +48,7 @@ async fn test_create_and_get_invoice() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let resp = server .post_form( @@ -93,7 +93,7 @@ async fn test_create_and_get_invoice() { #[tokio::test(flavor = "multi_thread")] async fn test_auth_required() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; // Request without auth header. let resp = reqwest::Client::new() @@ -116,7 +116,7 @@ async fn test_auth_required() { #[tokio::test(flavor = "multi_thread")] async fn test_invoice_not_found() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp = server .get("/payments/incoming/0000000000000000000000000000000000000000000000000000000000000000") @@ -130,7 +130,7 @@ async fn test_payment_flow() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -242,6 +242,7 @@ async fn test_webhook_delivery() { Some(webhook.port), Some(&lsp), &random_mnemonic(), + None, ) .await; let payer = PayerNode::new(&bitcoind); @@ -291,7 +292,7 @@ async fn test_webhook_delivery() { #[tokio::test(flavor = "multi_thread")] async fn test_getbalance_empty() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp: serde_json::Value = server.get("/getbalance").await.json().await.unwrap(); assert_eq!(resp["balanceSat"].as_u64().unwrap(), 0); @@ -304,7 +305,7 @@ async fn test_getbalance_after_payment() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -353,6 +354,92 @@ async fn test_getbalance_after_payment() { ); } +/// Dedicated mnemonic for the fee-claim test. Its own VSS store keeps it from colliding with +/// other fixed-mnemonic tests under parallel runs. Its regtest node id is the one the claim binds. +const FEE_CLAIM_MNEMONIC: &str = + "legal winner thank year wave sausage worth useful legal winner thank yellow"; + +/// A `ZeroFee` claim bound to FEE_CLAIM_MNEMONIC's node id, signed by the issuer whose x-only +/// pubkey is FEE_CLAIM_ISSUER_XONLY. Static: the bound node id is deterministic, so the LSP only +/// verifies this if both the env wiring and the on-wire claim survive intact end-to-end. +/// +/// There is no in-repo mint path, so regeneration is manual (tracked by MDK-998, which will give +/// lightning-liquidity a reusable, mnemonic-bound vector). To remint after changing the mnemonic +/// or after a wire-format bump in lightning-liquidity: +/// 1. Boot the node once with FEE_CLAIM_MNEMONIC and read the `NODE_ID:` log line (its lightning +/// pubkey). Under `--no-capture` this test logs it via mdkd's startup. +/// 2. In rust-lightning's lightning-liquidity/src/lsps4/claim.rs `#[cfg(test)]`, call +/// `mint_claim(node_id, FeePolicy::Flat(FeeTier::ZeroFee), &ISSUER_SECRET)` (the in-tree test +/// issuer secret [0x42; 32], whose x-only pubkey is EXPECTED_ISSUER_XONLY == the constant +/// below) and print the hex. Copy it here, then revert the throwaway. +const FEE_CLAIM_HEX: &str = "73002f002d2c00010102210311234b076cb64b62a80d2b6d15ad9a51a659fa4283be9e811a5eecebdd8bd7bd04040002020002405a9e07595de0d941ca11faaf1bd1427c037156430af58e8b7f14e1f2a8e26c427e26b310d5328ab39fa34e20faef553333216a99992da5389f94c081c69678f8"; +const FEE_CLAIM_ISSUER_XONLY: &str = + "24653eac434488002cc06bbfb7f10fe18991e35f9fe4302dbea6d2353dc0ab1c"; + +/// Full loop: a node that presents a valid signed fee claim on register_node gets the LSP skim +/// waived. Mirrors test_getbalance_after_payment (which keeps the 2% skim with no claim), so the +/// 100k-vs-98k delta is the claim doing its job. +#[tokio::test(flavor = "multi_thread")] +async fn test_fee_claim_waives_lsp_skim() { + let bitcoind = TestBitcoind::new(); + let lsp = LspNode::with_issuer_keys(&bitcoind, vec![xonly_from_hex(FEE_CLAIM_ISSUER_XONLY)]); + fund_lsp(&bitcoind, &lsp).await; + + let server = MdkdHandle::start( + &bitcoind, + None, + Some(&lsp), + FEE_CLAIM_MNEMONIC, + Some(FEE_CLAIM_HEX), + ) + .await; + let payer = PayerNode::new(&bitcoind); + setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; + + let invoice: serde_json::Value = server + .post_form( + "/createinvoice", + &[ + ("amountSat", "100000"), + ("description", "fee claim test"), + ("expirySeconds", "3600"), + ("externalId", "claim-1"), + ], + ) + .await + .json() + .await + .unwrap(); + let invoice_str = invoice["serialized"].as_str().unwrap(); + let payment_hash = invoice["paymentHash"].as_str().unwrap().to_string(); + + payer.pay_invoice(invoice_str); + + let start = std::time::Instant::now(); + loop { + let resp: serde_json::Value = server + .get(&format!("/payments/incoming/{payment_hash}")) + .await + .json() + .await + .unwrap(); + if resp["isPaid"].as_bool().unwrap() { + break; + } + if start.elapsed() > Duration::from_secs(60) { + panic!("Timed out waiting for payment to settle"); + } + tokio::time::sleep(Duration::from_secs(1)).await; + } + + let resp: serde_json::Value = server.get("/getbalance").await.json().await.unwrap(); + assert_eq!( + resp["balanceSat"].as_u64().unwrap(), + 100_000, + "valid fee claim should waive the 2% LSP skim, got: {resp}" + ); +} + /// Regression test: total_lightning_balance_sats reports 0 for sub-dust /// balances because the force-close claimable output would be dust. /// outbound_capacity_msat still reflects the real spendable amount. @@ -362,7 +449,7 @@ async fn test_getbalance_small_payment() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -414,7 +501,7 @@ async fn test_jit_channel_invoice() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -503,7 +590,7 @@ async fn test_decodeinvoice() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; // Create an invoice to decode. let created: serde_json::Value = server @@ -545,7 +632,7 @@ async fn test_decodeinvoice() { #[tokio::test(flavor = "multi_thread")] async fn test_decodeinvoice_invalid() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp = server .post_form("/decodeinvoice", &[("invoice", "not-a-real-invoice")]) @@ -559,7 +646,7 @@ async fn test_decodeinvoice_invalid() { #[tokio::test(flavor = "multi_thread")] async fn test_decodeinvoice_missing_param() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; // POST with empty form body — axum returns 422 for missing fields. let resp = server.post_form("/decodeinvoice", &[]).await; @@ -576,7 +663,7 @@ async fn test_list_incoming_payments() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -712,7 +799,7 @@ async fn test_list_incoming_payments() { #[tokio::test(flavor = "multi_thread")] async fn test_listchannels_empty() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let channels: Vec = server.get("/listchannels").await.json().await.unwrap(); assert!(channels.is_empty()); @@ -724,7 +811,7 @@ async fn test_listchannels_and_closechannel() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -825,7 +912,7 @@ async fn test_listchannels_and_closechannel() { #[tokio::test(flavor = "multi_thread")] async fn test_closechannel_not_found() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp = server .post_form( @@ -842,7 +929,7 @@ async fn test_closechannel_not_found() { #[tokio::test(flavor = "multi_thread")] async fn test_closechannel_invalid_hex() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp = server .post_form("/closechannel", &[("channelId", "not-hex")]) @@ -856,7 +943,7 @@ async fn test_getbalance_onchain_after_close() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -950,7 +1037,7 @@ async fn test_getbalance_onchain_after_close() { #[tokio::test(flavor = "multi_thread")] async fn test_sendtoaddress_invalid_address() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp = server .post_form( @@ -971,7 +1058,7 @@ async fn test_sendtoaddress_invalid_address() { #[tokio::test(flavor = "multi_thread")] async fn test_sendtoaddress_missing_params() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; // Missing all required params. let resp = server.post_form("/sendtoaddress", &[]).await; @@ -985,7 +1072,7 @@ async fn test_sendtoaddress_missing_params() { #[tokio::test(flavor = "multi_thread")] async fn test_sendtoaddress_insufficient_funds() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; // Valid regtest address but no on-chain funds. let resp = server @@ -1010,7 +1097,7 @@ async fn test_sendtoaddress_success() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -1166,7 +1253,7 @@ async fn test_sendtoaddress_success() { #[tokio::test(flavor = "multi_thread")] async fn test_openapi_scalar() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; // /scalar is outside the auth middleware — no credentials needed. let resp = reqwest::Client::new() @@ -1193,7 +1280,7 @@ const BOLT12_OFFER: &str = #[tokio::test(flavor = "multi_thread")] async fn test_decodeoffer() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp = server .post_form("/decodeoffer", &[("offer", BOLT12_OFFER)]) @@ -1222,7 +1309,7 @@ async fn test_auto_splice_after_channel_close_and_reopen() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -1387,7 +1474,7 @@ async fn test_max_sendable_on_getbalance() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; // No channel yet: `maxWithdrawableSat` must be null, paired with a // zero `balanceSat`. This is the UX invariant the field exists to @@ -1466,7 +1553,7 @@ async fn test_max_sendable_on_getbalance() { #[tokio::test(flavor = "multi_thread")] async fn test_decodeoffer_invalid() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp = server .post_form("/decodeoffer", &[("offer", "not-a-real-offer")]) @@ -1480,7 +1567,7 @@ async fn test_decodeoffer_invalid() { #[tokio::test(flavor = "multi_thread")] async fn test_payinvoice_invalid_bolt11() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp = server .post_form("/payinvoice", &[("invoice", "not-a-real-bolt11")]) @@ -1502,7 +1589,7 @@ async fn test_payinvoice_outbound_payment() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -1616,7 +1703,7 @@ async fn test_payinvoice_outbound_payment() { #[tokio::test(flavor = "multi_thread")] async fn test_payinvoice_amount_mismatch_400() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; // A throwaway PayerNode just to mint a real bolt11 with an amount. let payer = PayerNode::new(&bitcoind); @@ -1661,7 +1748,7 @@ async fn test_payinvoice_amount_mismatch_400() { #[tokio::test(flavor = "multi_thread")] async fn test_pay_invalid_destination_400() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp = server .post_form("/pay", &[("destination", "garbage-not-a-real-destination")]) @@ -1674,7 +1761,7 @@ async fn test_pay_invalid_destination_400() { #[tokio::test(flavor = "multi_thread")] async fn test_pay_amount_sat_zero_400() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; // amountSat=0 should fail before destination resolution; pass any string. let resp = server @@ -1695,7 +1782,7 @@ async fn test_pay_amount_sat_zero_400() { #[tokio::test(flavor = "multi_thread")] async fn test_pay_wait_secs_over_cap_400() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let resp = server .post_form( @@ -1715,7 +1802,7 @@ async fn test_pay_wait_secs_over_cap_400() { #[tokio::test(flavor = "multi_thread")] async fn test_pay_bolt11_amount_mismatch_400() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); let invoice = payer.create_invoice(10_000, "mismatch test", 600); @@ -1732,7 +1819,7 @@ async fn test_pay_bolt11_amount_mismatch_400() { #[tokio::test(flavor = "multi_thread")] async fn test_pay_payer_note_on_bolt11_400() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); let invoice = payer.create_invoice(10_000, "payer note test", 600); @@ -1752,7 +1839,7 @@ async fn test_pay_payer_note_on_bolt11_400() { #[tokio::test(flavor = "multi_thread")] async fn test_pay_quantity_on_bolt11_400() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); let invoice = payer.create_invoice(10_000, "qty test", 600); @@ -1772,7 +1859,7 @@ async fn test_pay_quantity_on_bolt11_400() { #[tokio::test(flavor = "multi_thread")] async fn test_pay_lnurl_dns_failure_500() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; // Bind a port, then drop the listener so the next connect refuses. let listener = std::net::TcpListener::bind("127.0.0.1:0").unwrap(); @@ -1795,7 +1882,7 @@ async fn test_pay_lnurl_amount_mismatch_400() { use wiremock::{Mock, MockServer, ResponseTemplate}; let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; // PayerNode mints a real, signed BOLT11 with amount 10_000 sats. let payer = PayerNode::new(&bitcoind); @@ -1846,7 +1933,7 @@ async fn test_pay_dispatch_failure_returns_500() { let bitcoind = TestBitcoind::new(); // No LSP, no channels — mdkd has zero outbound capacity. Dispatch fails // synchronously and we must return ApiError (not PayResponse{failed}). - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); let invoice = payer.create_invoice(1_000, "dispatch fail", 600); @@ -1893,7 +1980,7 @@ async fn test_pay_bolt11_blocks_until_succeeded() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -2001,7 +2088,7 @@ async fn test_pay_wait_zero_returns_pending() { let lsp = LspNode::new(&bitcoind); fund_lsp(&bitcoind, &lsp).await; - let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, Some(&lsp), &random_mnemonic(), None).await; let payer = PayerNode::new(&bitcoind); setup_payer_lsp_channel(&bitcoind, &payer, &lsp, 500_000).await; @@ -2113,7 +2200,7 @@ async fn test_pay_wait_zero_returns_pending() { #[tokio::test(flavor = "multi_thread")] async fn test_payinvoice_still_works_after_pay() { let bitcoind = TestBitcoind::new(); - let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic()).await; + let server = MdkdHandle::start(&bitcoind, None, None, &random_mnemonic(), None).await; // Garbage invoice → 400, just like before. let resp = server