Skip to content

Commit 3485059

Browse files
authored
Merge pull request #148 from Anyitechs/import-scorer
2 parents e3f6b83 + 7acedf2 commit 3485059

3 files changed

Lines changed: 35 additions & 0 deletions

File tree

ldk-server/ldk-server-config.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ listening_addresses = ["localhost:3001"] # Lightning node listening address
55
announcement_addresses = ["54.3.7.81:3001"] # Lightning node announcement addresses
66
rest_service_address = "127.0.0.1:3002" # LDK Server REST address
77
alias = "ldk_server" # Lightning node alias
8+
#pathfinding_scores_source_url = "" # External Pathfinding Scores Source
89

910
# Storage settings
1011
[storage.disk]

ldk-server/src/main.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,10 @@ fn main() {
163163
},
164164
}
165165

166+
if let Some(pathfinding_scores_source) = config_file.pathfinding_scores_source_url {
167+
builder.set_pathfinding_scores_source(pathfinding_scores_source);
168+
}
169+
166170
// LSPS2 support is highly experimental and for testing purposes only.
167171
#[cfg(feature = "experimental-lsps2-support")]
168172
builder.set_liquidity_provider_lsps2(

ldk-server/src/util/config.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ pub struct Config {
5151
pub lsps2_service_config: Option<LSPS2ServiceConfig>,
5252
pub log_level: LevelFilter,
5353
pub log_file_path: Option<String>,
54+
pub pathfinding_scores_source_url: Option<String>,
5455
}
5556

5657
#[derive(Debug, Clone, PartialEq, Eq)]
@@ -87,6 +88,7 @@ struct ConfigBuilder {
8788
lsps2: Option<LiquidityConfig>,
8889
log_level: Option<String>,
8990
log_file_path: Option<String>,
91+
pathfinding_scores_source_url: Option<String>,
9092
}
9193

9294
impl ConfigBuilder {
@@ -100,6 +102,8 @@ impl ConfigBuilder {
100102
self.rest_service_address =
101103
node.rest_service_address.or(self.rest_service_address.clone());
102104
self.alias = node.alias.or(self.alias.clone());
105+
self.pathfinding_scores_source_url =
106+
node.pathfinding_scores_source_url.or(self.pathfinding_scores_source_url.clone());
103107
}
104108

105109
if let Some(storage) = toml.storage {
@@ -181,6 +185,10 @@ impl ConfigBuilder {
181185
if let Some(storage_dir_path) = &args.storage_dir_path {
182186
self.storage_dir_path = Some(storage_dir_path.clone());
183187
}
188+
189+
if let Some(pathfinding_scores_source_url) = &args.pathfinding_scores_source_url {
190+
self.pathfinding_scores_source_url = Some(pathfinding_scores_source_url.clone());
191+
}
184192
}
185193

186194
fn build(self) -> io::Result<Config> {
@@ -330,6 +338,8 @@ impl ConfigBuilder {
330338
#[cfg(not(feature = "experimental-lsps2-support"))]
331339
let lsps2_service_config = None;
332340

341+
let pathfinding_scores_source_url = self.pathfinding_scores_source_url;
342+
333343
Ok(Config {
334344
network,
335345
listening_addrs,
@@ -344,6 +354,7 @@ impl ConfigBuilder {
344354
lsps2_service_config,
345355
log_level,
346356
log_file_path: self.log_file_path,
357+
pathfinding_scores_source_url,
347358
})
348359
}
349360
}
@@ -369,6 +380,7 @@ struct NodeConfig {
369380
announcement_addresses: Option<Vec<String>>,
370381
rest_service_address: Option<String>,
371382
alias: Option<String>,
383+
pathfinding_scores_source_url: Option<String>,
372384
}
373385

374386
#[derive(Deserialize, Serialize)]
@@ -539,6 +551,13 @@ pub struct ArgsConfig {
539551
help = "The path where the underlying LDK and BDK persist their data."
540552
)]
541553
storage_dir_path: Option<String>,
554+
555+
#[arg(
556+
long,
557+
env = "LDK_SERVER_PATHFINDING_SCORES_SOURCE_URL",
558+
help = "The external scores source that is merged into the local scoring system to improve routing."
559+
)]
560+
pathfinding_scores_source_url: Option<String>,
542561
}
543562

544563
pub fn load_config(args: &ArgsConfig) -> io::Result<Config> {
@@ -664,6 +683,7 @@ mod tests {
664683
bitcoind_rpc_password: Some(String::from("bitcoind-testpassword_cli")),
665684
storage_dir_path: Some(String::from("/tmp_cli")),
666685
node_alias: Some(String::from("LDK Server CLI")),
686+
pathfinding_scores_source_url: Some(String::from("https://example.com/")),
667687
}
668688
}
669689

@@ -679,6 +699,7 @@ mod tests {
679699
bitcoind_rpc_user: None,
680700
bitcoind_rpc_password: None,
681701
storage_dir_path: None,
702+
pathfinding_scores_source_url: None,
682703
}
683704
}
684705

@@ -745,6 +766,7 @@ mod tests {
745766
}),
746767
log_level: LevelFilter::Trace,
747768
log_file_path: Some("/var/log/ldk-server.log".to_string()),
769+
pathfinding_scores_source_url: None,
748770
};
749771

750772
assert_eq!(config.listening_addrs, expected.listening_addrs);
@@ -760,6 +782,7 @@ mod tests {
760782
assert_eq!(config.lsps2_service_config.is_some(), expected.lsps2_service_config.is_some());
761783
assert_eq!(config.log_level, expected.log_level);
762784
assert_eq!(config.log_file_path, expected.log_file_path);
785+
assert_eq!(config.pathfinding_scores_source_url, expected.pathfinding_scores_source_url);
763786

764787
// Test case where only electrum is set
765788

@@ -770,6 +793,7 @@ mod tests {
770793
announcement_addresses = ["54.3.7.81:3001"]
771794
rest_service_address = "127.0.0.1:3002"
772795
alias = "LDK Server"
796+
pathfinding_scores_source_url = "https://example.com/"
773797
774798
[tls]
775799
cert_path = "/path/to/tls.crt"
@@ -820,6 +844,7 @@ mod tests {
820844
announcement_addresses = ["54.3.7.81:3001"]
821845
rest_service_address = "127.0.0.1:3002"
822846
alias = "LDK Server"
847+
pathfinding_scores_source_url = "https://example.com/"
823848
824849
[tls]
825850
cert_path = "/path/to/tls.crt"
@@ -876,6 +901,7 @@ mod tests {
876901
announcement_addresses = ["54.3.7.81:3001"]
877902
rest_service_address = "127.0.0.1:3002"
878903
alias = "LDK Server"
904+
pathfinding_scores_source_url = "https://example.com/"
879905
880906
[tls]
881907
cert_path = "/path/to/tls.crt"
@@ -1048,6 +1074,7 @@ mod tests {
10481074
lsps2_service_config: None,
10491075
log_level: LevelFilter::Trace,
10501076
log_file_path: Some("/var/log/ldk-server.log".to_string()),
1077+
pathfinding_scores_source_url: Some("https://example.com/".to_string()),
10511078
};
10521079

10531080
assert_eq!(config.listening_addrs, expected.listening_addrs);
@@ -1059,6 +1086,7 @@ mod tests {
10591086
assert_eq!(config.rabbitmq_connection_string, expected.rabbitmq_connection_string);
10601087
assert_eq!(config.rabbitmq_exchange_name, expected.rabbitmq_exchange_name);
10611088
assert!(config.lsps2_service_config.is_none());
1089+
assert_eq!(config.pathfinding_scores_source_url, expected.pathfinding_scores_source_url);
10621090
}
10631091

10641092
#[test]
@@ -1148,6 +1176,7 @@ mod tests {
11481176
}),
11491177
log_level: LevelFilter::Trace,
11501178
log_file_path: Some("/var/log/ldk-server.log".to_string()),
1179+
pathfinding_scores_source_url: Some("https://example.com/".to_string()),
11511180
};
11521181

11531182
assert_eq!(config.listening_addrs, expected.listening_addrs);
@@ -1160,6 +1189,7 @@ mod tests {
11601189
assert_eq!(config.rabbitmq_exchange_name, expected.rabbitmq_exchange_name);
11611190
#[cfg(feature = "experimental-lsps2-support")]
11621191
assert_eq!(config.lsps2_service_config.is_some(), expected.lsps2_service_config.is_some());
1192+
assert_eq!(config.pathfinding_scores_source_url, expected.pathfinding_scores_source_url);
11631193
}
11641194

11651195
#[test]

0 commit comments

Comments
 (0)