From 5bff5f9b64aa3754e8793eea9de5f6667ac05f10 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Thu, 7 Jul 2022 17:37:22 +0000 Subject: [PATCH] Change default "impossibility penalty" to one Bitcoin In general we should avoid taking paths that we are confident will not work as much possible, but we should be willing to try each payment at least once, even if its over a channel that failed recently. A full Bitcoin penalty for such a channel seems reasonable - lightning fees are unlikely to ever reach that point so such channels will be scored much worse than any other potential path, while still being below `u64::max_value()`. --- lightning/src/routing/scoring.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lightning/src/routing/scoring.rs b/lightning/src/routing/scoring.rs index 4dc7951fa92..9fa62d83f53 100644 --- a/lightning/src/routing/scoring.rs +++ b/lightning/src/routing/scoring.rs @@ -404,7 +404,7 @@ pub struct ProbabilisticScoringParameters { /// If you wish to avoid creating paths with such channels entirely, setting this to a value of /// `u64::max_value()` will guarantee that. /// - /// Default value: `u64::max_value()` + /// Default value: 1_0000_0000_000 msat (1 Bitcoin) /// /// [`liquidity_penalty_multiplier_msat`]: Self::liquidity_penalty_multiplier_msat /// [`amount_penalty_multiplier_msat`]: Self::amount_penalty_multiplier_msat @@ -551,7 +551,7 @@ impl Default for ProbabilisticScoringParameters { amount_penalty_multiplier_msat: 256, banned_nodes: HashSet::new(), anti_probing_penalty_msat: 250, - considered_impossible_penalty_msat: u64::max_value(), + considered_impossible_penalty_msat: 1_0000_0000_000, } } } @@ -2168,7 +2168,10 @@ mod tests { fn accounts_for_inflight_htlc_usage() { let logger = TestLogger::new(); let network_graph = network_graph(&logger); - let params = ProbabilisticScoringParameters::default(); + let params = ProbabilisticScoringParameters { + considered_impossible_penalty_msat: u64::max_value(), + ..ProbabilisticScoringParameters::zero_penalty() + }; let scorer = ProbabilisticScorer::new(params, &network_graph, &logger); let source = source_node_id(); let target = target_node_id();