@@ -23,6 +23,8 @@ use log::LevelFilter;
2323use serde:: { Deserialize , Serialize } ;
2424
2525const 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" ;
2628const DEFAULT_LOG_MAX_SIZE_MB : u64 = 50 ;
2729const DEFAULT_LOG_ROTATION_INTERVAL_HOURS : u64 = 24 ;
2830const 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\" \n pathfinding_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