Skip to content

Commit a622333

Browse files
authored
Merge pull request #248 from benthecarman/scorer-url
Default to the LDK scoring server
2 parents a2801a0 + b1f7c48 commit a622333

2 files changed

Lines changed: 52 additions & 3 deletions

File tree

contrib/ldk-server-config.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ listening_addresses = ["localhost:9735"] # Lightning node listening address
55
#announcement_addresses = ["54.3.7.81:9735"] # Lightning node announcement addresses
66
#grpc_service_address = "127.0.0.1:3536" # LDK Server gRPC address (optional, defaults to 127.0.0.1:3536)
77
alias = "ldk_server" # Lightning node alias
8-
#pathfinding_scores_source_url = "" # External Pathfinding Scores Source
8+
#pathfinding_scores_source_url = "https://rapidsync.lightningdevkit.org/scoring/scorer.bin" # External pathfinding scores source (optional, defaults to this URL on mainnet; set to "" to disable)
99
#rgs_server_url = "https://rapidsync.lightningdevkit.org/snapshot/v2/" # Optional: RGS URL for rapid gossip sync
1010
#async_payments_role = "client" # Optional async payments role: "client" or "server"
1111

ldk-server/src/util/config.rs

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ use log::LevelFilter;
2323
use serde::{Deserialize, Serialize};
2424

2525
const DEFAULT_GRPC_SERVICE_ADDRESS: &str = "127.0.0.1:3536";
26+
const DEFAULT_PATHFINDING_SCORES_SOURCE_URL: &str =
27+
"https://rapidsync.lightningdevkit.org/scoring/scorer.bin";
2628
const DEFAULT_LOG_MAX_SIZE_MB: u64 = 50;
2729
const DEFAULT_LOG_ROTATION_INTERVAL_HOURS: u64 = 24;
2830
const DEFAULT_LOG_MAX_FILES: usize = 5;
@@ -482,7 +484,14 @@ impl ConfigBuilder {
482484
#[cfg(not(feature = "experimental-lsps2-support"))]
483485
let lsps2_service_config = None;
484486

485-
let pathfinding_scores_source_url = self.pathfinding_scores_source_url;
487+
let pathfinding_scores_source_url = match self.pathfinding_scores_source_url {
488+
Some(url) if url.is_empty() => None,
489+
Some(url) => Some(url),
490+
None if network == Network::Bitcoin => {
491+
Some(DEFAULT_PATHFINDING_SCORES_SOURCE_URL.to_string())
492+
},
493+
None => None,
494+
};
486495

487496
let async_payments_role =
488497
self.async_payments_role.as_deref().map(parse_async_payments_role).transpose()?;
@@ -960,7 +969,7 @@ pub struct ArgsConfig {
960969
#[arg(
961970
long,
962971
env = "LDK_SERVER_PATHFINDING_SCORES_SOURCE_URL",
963-
help = "The external scores source that is merged into the local scoring system to improve routing."
972+
help = "The external scores source that is merged into the local scoring system to improve routing. Defaults to https://rapidsync.lightningdevkit.org/scoring/scorer.bin on mainnet. Set to an empty string to disable."
964973
)]
965974
pathfinding_scores_source_url: Option<String>,
966975

@@ -1519,6 +1528,46 @@ mod tests {
15191528
assert!(load_config(&args_config).is_ok());
15201529
}
15211530

1531+
#[test]
1532+
fn test_mainnet_defaults_pathfinding_scores_source_url() {
1533+
let storage_path = std::env::temp_dir();
1534+
let config_file_name = "test_mainnet_pathfinding_scores_source_url.toml";
1535+
1536+
fs::write(storage_path.join(config_file_name), DEFAULT_CONFIG).unwrap();
1537+
1538+
let mut args_config = empty_args_config();
1539+
args_config.config_file =
1540+
Some(storage_path.join(config_file_name).to_string_lossy().to_string());
1541+
args_config.node_network = Some(Network::Bitcoin);
1542+
1543+
let config = load_config(&args_config).unwrap();
1544+
1545+
assert_eq!(
1546+
config.pathfinding_scores_source_url,
1547+
Some(DEFAULT_PATHFINDING_SCORES_SOURCE_URL.to_string())
1548+
);
1549+
}
1550+
1551+
#[test]
1552+
fn test_empty_pathfinding_scores_source_url_disables_source() {
1553+
let storage_path = std::env::temp_dir();
1554+
let config_file_name = "test_empty_pathfinding_scores_source_url.toml";
1555+
let toml_config = DEFAULT_CONFIG.replace(
1556+
"alias = \"LDK Server\"",
1557+
"alias = \"LDK Server\"\npathfinding_scores_source_url = \"\"",
1558+
);
1559+
fs::write(storage_path.join(config_file_name), toml_config).unwrap();
1560+
1561+
let mut args_config = empty_args_config();
1562+
args_config.config_file =
1563+
Some(storage_path.join(config_file_name).to_string_lossy().to_string());
1564+
args_config.node_network = Some(Network::Bitcoin);
1565+
1566+
let config = load_config(&args_config).unwrap();
1567+
1568+
assert_eq!(config.pathfinding_scores_source_url, None);
1569+
}
1570+
15221571
#[test]
15231572
fn test_config_missing_fields_in_file() {
15241573
let storage_path = std::env::temp_dir();

0 commit comments

Comments
 (0)