@@ -572,7 +572,7 @@ pub struct ProbabilisticScoringParameters {
572572 /// probabilities, the multiplier will have a decreasing effect as the negative `log10` will
573573 /// fall below `1`.
574574 ///
575- /// Default value: 0
575+ /// Default value: 256
576576 pub amount_penalty_multiplier_msat : u64 ,
577577}
578578
@@ -621,13 +621,25 @@ impl<G: Deref<Target = NetworkGraph>, T: Time> ProbabilisticScorerUsingTime<G, T
621621 }
622622}
623623
624+ impl ProbabilisticScoringParameters {
625+ #[ cfg( test) ]
626+ fn zero_penalty ( ) -> Self {
627+ Self {
628+ base_penalty_msat : 0 ,
629+ liquidity_penalty_multiplier_msat : 0 ,
630+ liquidity_offset_half_life : Duration :: from_secs ( 3600 ) ,
631+ amount_penalty_multiplier_msat : 0 ,
632+ }
633+ }
634+ }
635+
624636impl Default for ProbabilisticScoringParameters {
625637 fn default ( ) -> Self {
626638 Self {
627639 base_penalty_msat : 500 ,
628640 liquidity_penalty_multiplier_msat : 40_000 ,
629641 liquidity_offset_half_life : Duration :: from_secs ( 3600 ) ,
630- amount_penalty_multiplier_msat : 0 ,
642+ amount_penalty_multiplier_msat : 256 ,
631643 }
632644 }
633645}
@@ -1793,7 +1805,8 @@ mod tests {
17931805 fn increased_penalty_nearing_liquidity_upper_bound ( ) {
17941806 let network_graph = network_graph ( ) ;
17951807 let params = ProbabilisticScoringParameters {
1796- base_penalty_msat : 0 , liquidity_penalty_multiplier_msat : 1_000 , ..Default :: default ( )
1808+ liquidity_penalty_multiplier_msat : 1_000 ,
1809+ ..ProbabilisticScoringParameters :: zero_penalty ( )
17971810 } ;
17981811 let scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
17991812 let source = source_node_id ( ) ;
@@ -1818,7 +1831,8 @@ mod tests {
18181831 let last_updated = SinceEpoch :: now ( ) ;
18191832 let network_graph = network_graph ( ) ;
18201833 let params = ProbabilisticScoringParameters {
1821- base_penalty_msat : 0 , liquidity_penalty_multiplier_msat : 1_000 , ..Default :: default ( )
1834+ liquidity_penalty_multiplier_msat : 1_000 ,
1835+ ..ProbabilisticScoringParameters :: zero_penalty ( )
18221836 } ;
18231837 let scorer = ProbabilisticScorer :: new ( params, & network_graph)
18241838 . with_channel ( 42 ,
@@ -1838,7 +1852,8 @@ mod tests {
18381852 fn does_not_further_penalize_own_channel ( ) {
18391853 let network_graph = network_graph ( ) ;
18401854 let params = ProbabilisticScoringParameters {
1841- base_penalty_msat : 0 , liquidity_penalty_multiplier_msat : 1_000 , ..Default :: default ( )
1855+ liquidity_penalty_multiplier_msat : 1_000 ,
1856+ ..ProbabilisticScoringParameters :: zero_penalty ( )
18421857 } ;
18431858 let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
18441859 let sender = sender_node_id ( ) ;
@@ -1859,7 +1874,8 @@ mod tests {
18591874 fn sets_liquidity_lower_bound_on_downstream_failure ( ) {
18601875 let network_graph = network_graph ( ) ;
18611876 let params = ProbabilisticScoringParameters {
1862- base_penalty_msat : 0 , liquidity_penalty_multiplier_msat : 1_000 , ..Default :: default ( )
1877+ liquidity_penalty_multiplier_msat : 1_000 ,
1878+ ..ProbabilisticScoringParameters :: zero_penalty ( )
18631879 } ;
18641880 let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
18651881 let source = source_node_id ( ) ;
@@ -1881,7 +1897,8 @@ mod tests {
18811897 fn sets_liquidity_upper_bound_on_failure ( ) {
18821898 let network_graph = network_graph ( ) ;
18831899 let params = ProbabilisticScoringParameters {
1884- base_penalty_msat : 0 , liquidity_penalty_multiplier_msat : 1_000 , ..Default :: default ( )
1900+ liquidity_penalty_multiplier_msat : 1_000 ,
1901+ ..ProbabilisticScoringParameters :: zero_penalty ( )
18851902 } ;
18861903 let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
18871904 let source = source_node_id ( ) ;
@@ -1903,7 +1920,8 @@ mod tests {
19031920 fn reduces_liquidity_upper_bound_along_path_on_success ( ) {
19041921 let network_graph = network_graph ( ) ;
19051922 let params = ProbabilisticScoringParameters {
1906- base_penalty_msat : 0 , liquidity_penalty_multiplier_msat : 1_000 , ..Default :: default ( )
1923+ liquidity_penalty_multiplier_msat : 1_000 ,
1924+ ..ProbabilisticScoringParameters :: zero_penalty ( )
19071925 } ;
19081926 let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
19091927 let sender = sender_node_id ( ) ;
@@ -1927,10 +1945,9 @@ mod tests {
19271945 fn decays_liquidity_bounds_over_time ( ) {
19281946 let network_graph = network_graph ( ) ;
19291947 let params = ProbabilisticScoringParameters {
1930- base_penalty_msat : 0 ,
19311948 liquidity_penalty_multiplier_msat : 1_000 ,
19321949 liquidity_offset_half_life : Duration :: from_secs ( 10 ) ,
1933- ..Default :: default ( )
1950+ ..ProbabilisticScoringParameters :: zero_penalty ( )
19341951 } ;
19351952 let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
19361953 let source = source_node_id ( ) ;
@@ -1980,10 +1997,9 @@ mod tests {
19801997 fn decays_liquidity_bounds_without_shift_overflow ( ) {
19811998 let network_graph = network_graph ( ) ;
19821999 let params = ProbabilisticScoringParameters {
1983- base_penalty_msat : 0 ,
19842000 liquidity_penalty_multiplier_msat : 1_000 ,
19852001 liquidity_offset_half_life : Duration :: from_secs ( 10 ) ,
1986- ..Default :: default ( )
2002+ ..ProbabilisticScoringParameters :: zero_penalty ( )
19872003 } ;
19882004 let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
19892005 let source = source_node_id ( ) ;
@@ -2006,10 +2022,9 @@ mod tests {
20062022 fn restricts_liquidity_bounds_after_decay ( ) {
20072023 let network_graph = network_graph ( ) ;
20082024 let params = ProbabilisticScoringParameters {
2009- base_penalty_msat : 0 ,
20102025 liquidity_penalty_multiplier_msat : 1_000 ,
20112026 liquidity_offset_half_life : Duration :: from_secs ( 10 ) ,
2012- ..Default :: default ( )
2027+ ..ProbabilisticScoringParameters :: zero_penalty ( )
20132028 } ;
20142029 let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
20152030 let source = source_node_id ( ) ;
@@ -2045,10 +2060,9 @@ mod tests {
20452060 fn restores_persisted_liquidity_bounds ( ) {
20462061 let network_graph = network_graph ( ) ;
20472062 let params = ProbabilisticScoringParameters {
2048- base_penalty_msat : 0 ,
20492063 liquidity_penalty_multiplier_msat : 1_000 ,
20502064 liquidity_offset_half_life : Duration :: from_secs ( 10 ) ,
2051- ..Default :: default ( )
2065+ ..ProbabilisticScoringParameters :: zero_penalty ( )
20522066 } ;
20532067 let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
20542068 let source = source_node_id ( ) ;
@@ -2076,10 +2090,9 @@ mod tests {
20762090 fn decays_persisted_liquidity_bounds ( ) {
20772091 let network_graph = network_graph ( ) ;
20782092 let params = ProbabilisticScoringParameters {
2079- base_penalty_msat : 0 ,
20802093 liquidity_penalty_multiplier_msat : 1_000 ,
20812094 liquidity_offset_half_life : Duration :: from_secs ( 10 ) ,
2082- ..Default :: default ( )
2095+ ..ProbabilisticScoringParameters :: zero_penalty ( )
20832096 } ;
20842097 let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
20852098 let source = source_node_id ( ) ;
@@ -2112,7 +2125,8 @@ mod tests {
21122125 let target = target_node_id ( ) ;
21132126
21142127 let params = ProbabilisticScoringParameters {
2115- base_penalty_msat : 0 , liquidity_penalty_multiplier_msat : 1_000 , ..Default :: default ( )
2128+ liquidity_penalty_multiplier_msat : 1_000 ,
2129+ ..ProbabilisticScoringParameters :: zero_penalty ( )
21162130 } ;
21172131 let scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
21182132 assert_eq ! ( scorer. channel_penalty_msat( 42 , 128 , 1_024 , & source, & target) , 58 ) ;
@@ -2133,18 +2147,18 @@ mod tests {
21332147 let params = ProbabilisticScoringParameters {
21342148 liquidity_penalty_multiplier_msat : 1_000 ,
21352149 amount_penalty_multiplier_msat : 0 ,
2136- ..Default :: default ( )
2150+ ..ProbabilisticScoringParameters :: zero_penalty ( )
21372151 } ;
21382152 let scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
2139- assert_eq ! ( scorer. channel_penalty_msat( 42 , 512_000 , 1_024_000 , & source, & target) , 800 ) ;
2153+ assert_eq ! ( scorer. channel_penalty_msat( 42 , 512_000 , 1_024_000 , & source, & target) , 300 ) ;
21402154
21412155 let params = ProbabilisticScoringParameters {
21422156 liquidity_penalty_multiplier_msat : 1_000 ,
21432157 amount_penalty_multiplier_msat : 256 ,
2144- ..Default :: default ( )
2158+ ..ProbabilisticScoringParameters :: zero_penalty ( )
21452159 } ;
21462160 let scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
2147- assert_eq ! ( scorer. channel_penalty_msat( 42 , 512_000 , 1_024_000 , & source, & target) , 837 ) ;
2161+ assert_eq ! ( scorer. channel_penalty_msat( 42 , 512_000 , 1_024_000 , & source, & target) , 337 ) ;
21482162 }
21492163
21502164 #[ test]
@@ -2154,7 +2168,8 @@ mod tests {
21542168 let target = target_node_id ( ) ;
21552169
21562170 let params = ProbabilisticScoringParameters {
2157- base_penalty_msat : 0 , ..Default :: default ( )
2171+ liquidity_penalty_multiplier_msat : 40_000 ,
2172+ ..ProbabilisticScoringParameters :: zero_penalty ( )
21582173 } ;
21592174 let scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
21602175 assert_eq ! (
0 commit comments