Skip to content

Commit e6834e8

Browse files
committed
Replace ldk-server with direct ldk-node dependency
Our ldk-server fork re-exported ldk-node and bundled config loading, a logger, and an HTTP/protobuf API layer we never used. We only need ldk-node itself. Drop ldk-server. Depend on ldk-node directly. Rewrite all imports from ldk_server::ldk_node::* to ldk_node::*. Inline our own config loader in src/config.rs to replace ldk-server's ArgsConfig/load_config/get_default_data_dir. Same config schema, no new crate dependencies beyond toml. Swap ldk-server's ServerLogger for a 60-line console-only logger. File logging and SIGHUP reopen are gone. Switch the single RFC 3339 formatting call (invoice checkout) from the `time` crate to `chrono`, which ldk-node already pulls in transitively.
1 parent 1adfb58 commit e6834e8

15 files changed

Lines changed: 287 additions & 175 deletions

File tree

Cargo.lock

Lines changed: 12 additions & 90 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ edition = "2021"
77
demo = []
88

99
[dependencies]
10-
ldk-server = { git = "https://github.com/moneydevkit/ldk-server", rev = "a17acc8f0b0c7803562ffdfa2e7cc87f85b12c31" }
10+
# Branch: https://github.com/moneydevkit/ldk-node/tree/lsp-0.7.0_socks-support
11+
ldk-node = { git = "https://github.com/moneydevkit/ldk-node", rev = "c3aba2a47a6314968979de8fe772d9d1bcb3ee6e" }
1112

1213
axum = { version = "0.8", features = ["json", "ws"] }
1314
utoipa = { version = "5.4", features = ["axum_extras"] }
@@ -21,10 +22,11 @@ rusqlite = { version = "0.31.0", features = ["bundled"] }
2122
hex = { package = "hex-conservative", version = "0.2.1" }
2223
clap = { version = "4", features = ["derive"] }
2324
log = "0.4"
25+
toml = "0.8"
26+
chrono = "0.4"
2427
hmac = "0.12"
2528
sha2 = "0.10"
2629
base64 = "0.22"
27-
time = { version = "0.3", features = ["formatting"] }
2830

2931
[dev-dependencies]
3032
corepc-node = { version = "0.10", features = ["29_0"] }

src/api/balance.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::sync::Arc;
22

33
use axum::Json;
4-
use ldk_server::ldk_node::Node;
4+
use ldk_node::Node;
55

66
use crate::api::error::AppError;
77
use crate::types::GetBalanceResponse;

src/api/channels.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ use std::sync::Arc;
33
use axum::http::StatusCode;
44
use axum::Json;
55
use hex::FromHex;
6-
use ldk_server::ldk_node::lightning::ln::types::ChannelId;
7-
use ldk_server::ldk_node::Node;
6+
use ldk_node::lightning::ln::types::ChannelId;
7+
use ldk_node::Node;
88

99
use crate::api::error::AppError;
1010
use crate::types::{ChannelInfo, CloseChannelRequest};

src/api/decode.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use std::str::FromStr;
22

33
use axum::Json;
4-
use ldk_server::ldk_node::lightning::offers::offer::Offer;
5-
use ldk_server::ldk_node::lightning_invoice::Bolt11Invoice;
4+
use ldk_node::lightning::offers::offer::{Amount, Offer};
5+
use ldk_node::lightning_invoice::Bolt11Invoice;
66

77
use crate::api::error::AppError;
88
use crate::types::{
@@ -74,9 +74,7 @@ pub fn handle_decode_offer(
7474
let offer_id = hex::DisplayHex::to_lower_hex_string(&offer.id().0[..]);
7575

7676
let (amount_msat, amount_sat) = match offer.amount() {
77-
Some(ldk_server::ldk_node::lightning::offers::offer::Amount::Bitcoin { amount_msats }) => {
78-
(Some(amount_msats), Some(amount_msats / 1000))
79-
}
77+
Some(Amount::Bitcoin { amount_msats }) => (Some(amount_msats), Some(amount_msats / 1000)),
8078
_ => (None, None),
8179
};
8280

@@ -99,8 +97,8 @@ pub fn handle_decode_offer(
9997
mod tests {
10098
use super::*;
10199

102-
use ldk_server::ldk_node::bitcoin::secp256k1::{PublicKey, Secp256k1, SecretKey};
103-
use ldk_server::ldk_node::lightning::offers::offer::OfferBuilder;
100+
use ldk_node::bitcoin::secp256k1::{PublicKey, Secp256k1, SecretKey};
101+
use ldk_node::lightning::offers::offer::OfferBuilder;
104102

105103
use crate::types::{DecodeInvoiceRequest, DecodeOfferRequest};
106104

src/api/info.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use std::sync::Arc;
22

33
use axum::Json;
4-
use ldk_server::ldk_node::bitcoin::Network;
5-
use ldk_server::ldk_node::Node;
4+
use ldk_node::bitcoin::Network;
5+
use ldk_node::Node;
66

77
use crate::api::error::AppError;
88
use crate::types::{ChannelInfo, GetInfoResponse};

src/api/invoices.rs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@ use std::sync::Arc;
33

44
use axum::extract::Path;
55
use axum::Json;
6+
use chrono::{DateTime, SecondsFormat};
67
use hex::FromHex;
7-
use ldk_server::ldk_node::bitcoin::hashes::sha256;
8-
use ldk_server::ldk_node::bitcoin::hashes::Hash as _;
9-
use ldk_server::ldk_node::lightning::ln::channelmanager::PaymentId;
10-
use ldk_server::ldk_node::lightning_invoice::{
11-
Bolt11Invoice, Bolt11InvoiceDescription, Description, Sha256,
12-
};
13-
use ldk_server::ldk_node::payment::{PaymentDetails, PaymentKind, PaymentStatus};
14-
use ldk_server::ldk_node::Node;
8+
use ldk_node::bitcoin::hashes::sha256;
9+
use ldk_node::bitcoin::hashes::Hash as _;
10+
use ldk_node::lightning::ln::channelmanager::PaymentId;
11+
use ldk_node::lightning_invoice::{Bolt11Invoice, Bolt11InvoiceDescription, Description, Sha256};
12+
use ldk_node::payment::{PaymentDetails, PaymentKind, PaymentStatus};
13+
use ldk_node::Node;
1514
use log::{error, info};
1615

1716
use crate::api::error::AppError;
@@ -155,11 +154,9 @@ async fn create_with_checkout(
155154
let payment_hash = invoice.payment_hash().to_string();
156155
let expires_at_iso = invoice
157156
.expires_at()
158-
.map(|d| {
159-
let dt = time::OffsetDateTime::from_unix_timestamp(d.as_secs() as i64)
160-
.expect("valid timestamp");
161-
dt.format(&time::format_description::well_known::Rfc3339)
162-
.expect("valid rfc3339")
157+
.and_then(|d| {
158+
DateTime::from_timestamp(d.as_secs() as i64, 0)
159+
.map(|dt| dt.to_rfc3339_opts(SecondsFormat::Secs, true))
163160
})
164161
.unwrap_or_default();
165162

@@ -333,8 +330,8 @@ fn extract_preimage(kind: &PaymentKind) -> Option<String> {
333330
#[cfg(test)]
334331
mod tests {
335332
use super::*;
336-
use ldk_server::ldk_node::lightning::types::payment::{PaymentHash, PaymentPreimage};
337-
use ldk_server::ldk_node::payment::PaymentDirection;
333+
use ldk_node::lightning::types::payment::{PaymentHash, PaymentPreimage};
334+
use ldk_node::payment::PaymentDirection;
338335

339336
fn test_metadata() -> InvoiceMetadata {
340337
InvoiceMetadata {

src/api/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use std::sync::Arc;
1212

1313
use axum::extract::{Path, Query, State};
1414
use axum::{middleware, Form, Json, Router};
15-
use ldk_server::ldk_node::Node;
15+
use ldk_node::Node;
1616
use tokio::sync::broadcast;
1717
use utoipa::openapi::security::{Http, HttpAuthScheme, SecurityScheme};
1818
use utoipa::{Modify, OpenApi};

src/api/onchain.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::sync::Arc;
22

3-
use ldk_server::ldk_node::bitcoin::{Address, FeeRate};
4-
use ldk_server::ldk_node::Node;
3+
use ldk_node::bitcoin::{Address, FeeRate};
4+
use ldk_node::Node;
55

66
use crate::api::error::AppError;
77
use crate::types::SendToAddressRequest;

0 commit comments

Comments
 (0)