@@ -28,6 +28,26 @@ class LightningService {
2828
2929 static var shared = LightningService ( )
3030
31+ private static let scoringBasePenaltyMsat : UInt64 = 50000
32+ private static let scoringLiquidityPenaltyMultiplierMsat : UInt64 = 10000
33+ private static let scoringLiquidityPenaltyAmountMultiplierMsat : UInt64 = 10000
34+ private static let scoringHistoricalLiquidityPenaltyAmountMultiplierMsat : UInt64 = 20000
35+ private static let scoringConsideredImpossiblePenaltyMsat : UInt64 = 1_000_000_000_000
36+ private static let scoringProbingDiversityPenaltyMsat : UInt64 = 60000
37+
38+ private static let defaultScoringFeeParameters = ScoringFeeParameters (
39+ basePenaltyMsat: 1024 ,
40+ basePenaltyAmountMultiplierMsat: 131_072 ,
41+ liquidityPenaltyMultiplierMsat: 0 ,
42+ liquidityPenaltyAmountMultiplierMsat: 0 ,
43+ historicalLiquidityPenaltyMultiplierMsat: 10000 ,
44+ historicalLiquidityPenaltyAmountMultiplierMsat: 1250 ,
45+ antiProbingPenaltyMsat: 250 ,
46+ consideredImpossiblePenaltyMsat: 100_000_000_000 ,
47+ linearSuccessProbability: false ,
48+ probingDiversityPenaltyMsat: 0
49+ )
50+
3151 private init ( ) { }
3252
3353 /// Flag and lock to prevent concurrent setup calls
@@ -107,6 +127,8 @@ class LightningService {
107127 builder. setPathfindingScoresSource ( url: scorerUrl)
108128 }
109129
130+ builder. setScoringFeeParams ( params: Self . scoringFeeParameters ( config: config) )
131+
110132 // Configure gossip source from current settings
111133 configureGossipSource ( builder: builder, rgsServerUrl: rgsServerUrl)
112134
@@ -1575,6 +1597,23 @@ extension LightningService {
15751597
15761598 // MARK: - Probing
15771599
1600+ private static func scoringFeeParameters( config: Config ) -> ScoringFeeParameters {
1601+ let defaultParameters = config. scoringFeeParams ?? defaultScoringFeeParameters
1602+
1603+ return ScoringFeeParameters (
1604+ basePenaltyMsat: scoringBasePenaltyMsat,
1605+ basePenaltyAmountMultiplierMsat: defaultParameters. basePenaltyAmountMultiplierMsat,
1606+ liquidityPenaltyMultiplierMsat: scoringLiquidityPenaltyMultiplierMsat,
1607+ liquidityPenaltyAmountMultiplierMsat: scoringLiquidityPenaltyAmountMultiplierMsat,
1608+ historicalLiquidityPenaltyMultiplierMsat: defaultParameters. historicalLiquidityPenaltyMultiplierMsat,
1609+ historicalLiquidityPenaltyAmountMultiplierMsat: scoringHistoricalLiquidityPenaltyAmountMultiplierMsat,
1610+ antiProbingPenaltyMsat: defaultParameters. antiProbingPenaltyMsat,
1611+ consideredImpossiblePenaltyMsat: scoringConsideredImpossiblePenaltyMsat,
1612+ linearSuccessProbability: defaultParameters. linearSuccessProbability,
1613+ probingDiversityPenaltyMsat: scoringProbingDiversityPenaltyMsat
1614+ )
1615+ }
1616+
15781617 /// Sends a probe to test if a payment route exists for the given invoice.
15791618 /// - Parameters:
15801619 /// - bolt11: The Lightning invoice string (BOLT 11)
0 commit comments