@@ -572,7 +572,7 @@ pub struct ProbabilisticScoringParameters {
572
572
/// probabilities, the multiplier will have a decreasing effect as the negative `log10` will
573
573
/// fall below `1`.
574
574
///
575
- /// Default value: 0
575
+ /// Default value: 256
576
576
pub amount_penalty_multiplier_msat : u64 ,
577
577
}
578
578
@@ -621,13 +621,25 @@ impl<G: Deref<Target = NetworkGraph>, T: Time> ProbabilisticScorerUsingTime<G, T
621
621
}
622
622
}
623
623
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
+
624
636
impl Default for ProbabilisticScoringParameters {
625
637
fn default ( ) -> Self {
626
638
Self {
627
639
base_penalty_msat : 500 ,
628
640
liquidity_penalty_multiplier_msat : 40_000 ,
629
641
liquidity_offset_half_life : Duration :: from_secs ( 3600 ) ,
630
- amount_penalty_multiplier_msat : 0 ,
642
+ amount_penalty_multiplier_msat : 256 ,
631
643
}
632
644
}
633
645
}
@@ -1793,7 +1805,8 @@ mod tests {
1793
1805
fn increased_penalty_nearing_liquidity_upper_bound ( ) {
1794
1806
let network_graph = network_graph ( ) ;
1795
1807
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 ( )
1797
1810
} ;
1798
1811
let scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
1799
1812
let source = source_node_id ( ) ;
@@ -1818,7 +1831,8 @@ mod tests {
1818
1831
let last_updated = SinceEpoch :: now ( ) ;
1819
1832
let network_graph = network_graph ( ) ;
1820
1833
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 ( )
1822
1836
} ;
1823
1837
let scorer = ProbabilisticScorer :: new ( params, & network_graph)
1824
1838
. with_channel ( 42 ,
@@ -1838,7 +1852,8 @@ mod tests {
1838
1852
fn does_not_further_penalize_own_channel ( ) {
1839
1853
let network_graph = network_graph ( ) ;
1840
1854
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 ( )
1842
1857
} ;
1843
1858
let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
1844
1859
let sender = sender_node_id ( ) ;
@@ -1859,7 +1874,8 @@ mod tests {
1859
1874
fn sets_liquidity_lower_bound_on_downstream_failure ( ) {
1860
1875
let network_graph = network_graph ( ) ;
1861
1876
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 ( )
1863
1879
} ;
1864
1880
let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
1865
1881
let source = source_node_id ( ) ;
@@ -1881,7 +1897,8 @@ mod tests {
1881
1897
fn sets_liquidity_upper_bound_on_failure ( ) {
1882
1898
let network_graph = network_graph ( ) ;
1883
1899
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 ( )
1885
1902
} ;
1886
1903
let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
1887
1904
let source = source_node_id ( ) ;
@@ -1903,7 +1920,8 @@ mod tests {
1903
1920
fn reduces_liquidity_upper_bound_along_path_on_success ( ) {
1904
1921
let network_graph = network_graph ( ) ;
1905
1922
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 ( )
1907
1925
} ;
1908
1926
let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
1909
1927
let sender = sender_node_id ( ) ;
@@ -1927,10 +1945,9 @@ mod tests {
1927
1945
fn decays_liquidity_bounds_over_time ( ) {
1928
1946
let network_graph = network_graph ( ) ;
1929
1947
let params = ProbabilisticScoringParameters {
1930
- base_penalty_msat : 0 ,
1931
1948
liquidity_penalty_multiplier_msat : 1_000 ,
1932
1949
liquidity_offset_half_life : Duration :: from_secs ( 10 ) ,
1933
- ..Default :: default ( )
1950
+ ..ProbabilisticScoringParameters :: zero_penalty ( )
1934
1951
} ;
1935
1952
let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
1936
1953
let source = source_node_id ( ) ;
@@ -1980,10 +1997,9 @@ mod tests {
1980
1997
fn decays_liquidity_bounds_without_shift_overflow ( ) {
1981
1998
let network_graph = network_graph ( ) ;
1982
1999
let params = ProbabilisticScoringParameters {
1983
- base_penalty_msat : 0 ,
1984
2000
liquidity_penalty_multiplier_msat : 1_000 ,
1985
2001
liquidity_offset_half_life : Duration :: from_secs ( 10 ) ,
1986
- ..Default :: default ( )
2002
+ ..ProbabilisticScoringParameters :: zero_penalty ( )
1987
2003
} ;
1988
2004
let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
1989
2005
let source = source_node_id ( ) ;
@@ -2006,10 +2022,9 @@ mod tests {
2006
2022
fn restricts_liquidity_bounds_after_decay ( ) {
2007
2023
let network_graph = network_graph ( ) ;
2008
2024
let params = ProbabilisticScoringParameters {
2009
- base_penalty_msat : 0 ,
2010
2025
liquidity_penalty_multiplier_msat : 1_000 ,
2011
2026
liquidity_offset_half_life : Duration :: from_secs ( 10 ) ,
2012
- ..Default :: default ( )
2027
+ ..ProbabilisticScoringParameters :: zero_penalty ( )
2013
2028
} ;
2014
2029
let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
2015
2030
let source = source_node_id ( ) ;
@@ -2045,10 +2060,9 @@ mod tests {
2045
2060
fn restores_persisted_liquidity_bounds ( ) {
2046
2061
let network_graph = network_graph ( ) ;
2047
2062
let params = ProbabilisticScoringParameters {
2048
- base_penalty_msat : 0 ,
2049
2063
liquidity_penalty_multiplier_msat : 1_000 ,
2050
2064
liquidity_offset_half_life : Duration :: from_secs ( 10 ) ,
2051
- ..Default :: default ( )
2065
+ ..ProbabilisticScoringParameters :: zero_penalty ( )
2052
2066
} ;
2053
2067
let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
2054
2068
let source = source_node_id ( ) ;
@@ -2076,10 +2090,9 @@ mod tests {
2076
2090
fn decays_persisted_liquidity_bounds ( ) {
2077
2091
let network_graph = network_graph ( ) ;
2078
2092
let params = ProbabilisticScoringParameters {
2079
- base_penalty_msat : 0 ,
2080
2093
liquidity_penalty_multiplier_msat : 1_000 ,
2081
2094
liquidity_offset_half_life : Duration :: from_secs ( 10 ) ,
2082
- ..Default :: default ( )
2095
+ ..ProbabilisticScoringParameters :: zero_penalty ( )
2083
2096
} ;
2084
2097
let mut scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
2085
2098
let source = source_node_id ( ) ;
@@ -2112,7 +2125,8 @@ mod tests {
2112
2125
let target = target_node_id ( ) ;
2113
2126
2114
2127
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 ( )
2116
2130
} ;
2117
2131
let scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
2118
2132
assert_eq ! ( scorer. channel_penalty_msat( 42 , 128 , 1_024 , & source, & target) , 58 ) ;
@@ -2133,18 +2147,18 @@ mod tests {
2133
2147
let params = ProbabilisticScoringParameters {
2134
2148
liquidity_penalty_multiplier_msat : 1_000 ,
2135
2149
amount_penalty_multiplier_msat : 0 ,
2136
- ..Default :: default ( )
2150
+ ..ProbabilisticScoringParameters :: zero_penalty ( )
2137
2151
} ;
2138
2152
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 ) ;
2140
2154
2141
2155
let params = ProbabilisticScoringParameters {
2142
2156
liquidity_penalty_multiplier_msat : 1_000 ,
2143
2157
amount_penalty_multiplier_msat : 256 ,
2144
- ..Default :: default ( )
2158
+ ..ProbabilisticScoringParameters :: zero_penalty ( )
2145
2159
} ;
2146
2160
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 ) ;
2148
2162
}
2149
2163
2150
2164
#[ test]
@@ -2154,7 +2168,8 @@ mod tests {
2154
2168
let target = target_node_id ( ) ;
2155
2169
2156
2170
let params = ProbabilisticScoringParameters {
2157
- base_penalty_msat : 0 , ..Default :: default ( )
2171
+ liquidity_penalty_multiplier_msat : 40_000 ,
2172
+ ..ProbabilisticScoringParameters :: zero_penalty ( )
2158
2173
} ;
2159
2174
let scorer = ProbabilisticScorer :: new ( params, & network_graph) ;
2160
2175
assert_eq ! (
0 commit comments