Skip to content

Commit 4df0ff7

Browse files
committed
Make htlc_maximum_msat in EffectiveCapacity non-Optional
Because we now never generate an `EffectiveCapacity` with an `htlc_maximum_msat` set to `None`, making it non-`Option`al effectively removes dead code, which we do here.
1 parent 81afc2f commit 4df0ff7

File tree

3 files changed

+37
-39
lines changed

3 files changed

+37
-39
lines changed

lightning/src/routing/gossip.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -874,7 +874,7 @@ impl<'a> DirectedChannelInfo<'a> {
874874
let effective_capacity = match capacity_msat {
875875
Some(capacity_msat) => {
876876
htlc_maximum_msat = cmp::min(htlc_maximum_msat, capacity_msat);
877-
EffectiveCapacity::Total { capacity_msat, htlc_maximum_msat: Some(htlc_maximum_msat) }
877+
EffectiveCapacity::Total { capacity_msat, htlc_maximum_msat: htlc_maximum_msat }
878878
},
879879
None => EffectiveCapacity::MaximumHTLC { amount_msat: htlc_maximum_msat },
880880
};
@@ -939,7 +939,7 @@ pub enum EffectiveCapacity {
939939
/// The funding amount denominated in millisatoshi.
940940
capacity_msat: u64,
941941
/// The maximum HTLC amount denominated in millisatoshi.
942-
htlc_maximum_msat: Option<u64>
942+
htlc_maximum_msat: u64
943943
},
944944
/// A capacity sufficient to route any payment, typically used for private channels provided by
945945
/// an invoice.

lightning/src/routing/router.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -494,10 +494,8 @@ fn max_htlc_from_capacity(capacity: EffectiveCapacity, max_channel_saturation_po
494494
EffectiveCapacity::Unknown => EffectiveCapacity::Unknown.as_msat(),
495495
EffectiveCapacity::MaximumHTLC { amount_msat } =>
496496
amount_msat.checked_shr(saturation_shift).unwrap_or(0),
497-
EffectiveCapacity::Total { capacity_msat, htlc_maximum_msat: None } =>
498-
capacity_msat.checked_shr(saturation_shift).unwrap_or(0),
499-
EffectiveCapacity::Total { capacity_msat, htlc_maximum_msat: Some(htlc_max) } =>
500-
cmp::min(capacity_msat.checked_shr(saturation_shift).unwrap_or(0), htlc_max),
497+
EffectiveCapacity::Total { capacity_msat, htlc_maximum_msat } =>
498+
cmp::min(capacity_msat.checked_shr(saturation_shift).unwrap_or(0), htlc_maximum_msat),
501499
}
502500
}
503501

@@ -5391,7 +5389,7 @@ mod tests {
53915389
let usage = ChannelUsage {
53925390
amount_msat: 0,
53935391
inflight_htlc_msat: 0,
5394-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: Some(1_000) },
5392+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: 1_000 },
53955393
};
53965394
scorer.set_manual_penalty(&NodeId::from_pubkey(&nodes[3]), 123);
53975395
scorer.set_manual_penalty(&NodeId::from_pubkey(&nodes[4]), 456);

lightning/src/routing/scoring.rs

+32-32
Original file line numberDiff line numberDiff line change
@@ -1113,7 +1113,7 @@ impl<G: Deref<Target = NetworkGraph<L>>, L: Deref, T: Time> Score for Probabilis
11131113
return base_penalty_msat;
11141114
}
11151115
},
1116-
EffectiveCapacity::Total { capacity_msat, htlc_maximum_msat: Some(htlc_maximum_msat) } => {
1116+
EffectiveCapacity::Total { capacity_msat, htlc_maximum_msat } => {
11171117
if htlc_maximum_msat >= capacity_msat/2 {
11181118
anti_probing_penalty_msat = self.params.anti_probing_penalty_msat;
11191119
}
@@ -1985,7 +1985,7 @@ mod tests {
19851985
let usage = ChannelUsage {
19861986
amount_msat: 1_024,
19871987
inflight_htlc_msat: 0,
1988-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: Some(1_000) },
1988+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: 1_000 },
19891989
};
19901990
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 0);
19911991
let usage = ChannelUsage { amount_msat: 10_240, ..usage };
@@ -1998,7 +1998,7 @@ mod tests {
19981998
let usage = ChannelUsage {
19991999
amount_msat: 128,
20002000
inflight_htlc_msat: 0,
2001-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: Some(1_000) },
2001+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: 1_000 },
20022002
};
20032003
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 58);
20042004
let usage = ChannelUsage { amount_msat: 256, ..usage };
@@ -2038,7 +2038,7 @@ mod tests {
20382038
let usage = ChannelUsage {
20392039
amount_msat: 39,
20402040
inflight_htlc_msat: 0,
2041-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 100, htlc_maximum_msat: Some(1_000) },
2041+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 100, htlc_maximum_msat: 1_000 },
20422042
};
20432043
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 0);
20442044
let usage = ChannelUsage { amount_msat: 50, ..usage };
@@ -2062,7 +2062,7 @@ mod tests {
20622062
let usage = ChannelUsage {
20632063
amount_msat: 500,
20642064
inflight_htlc_msat: 0,
2065-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: Some(1_000) },
2065+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: 1_000 },
20662066
};
20672067
let failed_path = payment_path_for_amount(500);
20682068
let successful_path = payment_path_for_amount(200);
@@ -2092,7 +2092,7 @@ mod tests {
20922092
let usage = ChannelUsage {
20932093
amount_msat: 250,
20942094
inflight_htlc_msat: 0,
2095-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: Some(1_000) },
2095+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: 1_000 },
20962096
};
20972097
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 128);
20982098
let usage = ChannelUsage { amount_msat: 500, ..usage };
@@ -2127,7 +2127,7 @@ mod tests {
21272127
let usage = ChannelUsage {
21282128
amount_msat: 250,
21292129
inflight_htlc_msat: 0,
2130-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: Some(1_000) },
2130+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: 1_000 },
21312131
};
21322132
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 128);
21332133
let usage = ChannelUsage { amount_msat: 500, ..usage };
@@ -2161,7 +2161,7 @@ mod tests {
21612161
let usage = ChannelUsage {
21622162
amount_msat: 250,
21632163
inflight_htlc_msat: 0,
2164-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: Some(1_000) },
2164+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: 1_000 },
21652165
};
21662166
let path = payment_path_for_amount(500);
21672167

@@ -2193,7 +2193,7 @@ mod tests {
21932193
let usage = ChannelUsage {
21942194
amount_msat: 0,
21952195
inflight_htlc_msat: 0,
2196-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: Some(1_024) },
2196+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: 1_024 },
21972197
};
21982198
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 0);
21992199
let usage = ChannelUsage { amount_msat: 1_023, ..usage };
@@ -2271,7 +2271,7 @@ mod tests {
22712271
let usage = ChannelUsage {
22722272
amount_msat: 256,
22732273
inflight_htlc_msat: 0,
2274-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: Some(1_000) },
2274+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: 1_000 },
22752275
};
22762276
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 125);
22772277

@@ -2302,7 +2302,7 @@ mod tests {
23022302
let usage = ChannelUsage {
23032303
amount_msat: 512,
23042304
inflight_htlc_msat: 0,
2305-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: Some(1_000) },
2305+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: 1_000 },
23062306
};
23072307

23082308
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 300);
@@ -2347,7 +2347,7 @@ mod tests {
23472347
let usage = ChannelUsage {
23482348
amount_msat: 500,
23492349
inflight_htlc_msat: 0,
2350-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: Some(1_000) },
2350+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: 1_000 },
23512351
};
23522352

23532353
scorer.payment_path_failed(&payment_path_for_amount(500).iter().collect::<Vec<_>>(), 42);
@@ -2384,7 +2384,7 @@ mod tests {
23842384
let usage = ChannelUsage {
23852385
amount_msat: 500,
23862386
inflight_htlc_msat: 0,
2387-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: Some(1_000) },
2387+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: 1_000 },
23882388
};
23892389

23902390
scorer.payment_path_failed(&payment_path_for_amount(500).iter().collect::<Vec<_>>(), 42);
@@ -2421,47 +2421,47 @@ mod tests {
24212421
let usage = ChannelUsage {
24222422
amount_msat: 100_000_000,
24232423
inflight_htlc_msat: 0,
2424-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 950_000_000, htlc_maximum_msat: Some(1_000) },
2424+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 950_000_000, htlc_maximum_msat: 1_000 },
24252425
};
24262426
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 4375);
24272427
let usage = ChannelUsage {
2428-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_950_000_000, htlc_maximum_msat: Some(1_000) }, ..usage
2428+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_950_000_000, htlc_maximum_msat: 1_000 }, ..usage
24292429
};
24302430
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 2739);
24312431
let usage = ChannelUsage {
2432-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 2_950_000_000, htlc_maximum_msat: Some(1_000) }, ..usage
2432+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 2_950_000_000, htlc_maximum_msat: 1_000 }, ..usage
24332433
};
24342434
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 2236);
24352435
let usage = ChannelUsage {
2436-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 3_950_000_000, htlc_maximum_msat: Some(1_000) }, ..usage
2436+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 3_950_000_000, htlc_maximum_msat: 1_000 }, ..usage
24372437
};
24382438
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 1983);
24392439
let usage = ChannelUsage {
2440-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 4_950_000_000, htlc_maximum_msat: Some(1_000) }, ..usage
2440+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 4_950_000_000, htlc_maximum_msat: 1_000 }, ..usage
24412441
};
24422442
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 1637);
24432443
let usage = ChannelUsage {
2444-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 5_950_000_000, htlc_maximum_msat: Some(1_000) }, ..usage
2444+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 5_950_000_000, htlc_maximum_msat: 1_000 }, ..usage
24452445
};
24462446
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 1606);
24472447
let usage = ChannelUsage {
2448-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 6_950_000_000, htlc_maximum_msat: Some(1_000) }, ..usage
2448+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 6_950_000_000, htlc_maximum_msat: 1_000 }, ..usage
24492449
};
24502450
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 1331);
24512451
let usage = ChannelUsage {
2452-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 7_450_000_000, htlc_maximum_msat: Some(1_000) }, ..usage
2452+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 7_450_000_000, htlc_maximum_msat: 1_000 }, ..usage
24532453
};
24542454
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 1387);
24552455
let usage = ChannelUsage {
2456-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 7_950_000_000, htlc_maximum_msat: Some(1_000) }, ..usage
2456+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 7_950_000_000, htlc_maximum_msat: 1_000 }, ..usage
24572457
};
24582458
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 1379);
24592459
let usage = ChannelUsage {
2460-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 8_950_000_000, htlc_maximum_msat: Some(1_000) }, ..usage
2460+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 8_950_000_000, htlc_maximum_msat: 1_000 }, ..usage
24612461
};
24622462
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 1363);
24632463
let usage = ChannelUsage {
2464-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 9_950_000_000, htlc_maximum_msat: Some(1_000) }, ..usage
2464+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 9_950_000_000, htlc_maximum_msat: 1_000 }, ..usage
24652465
};
24662466
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 1355);
24672467
}
@@ -2475,7 +2475,7 @@ mod tests {
24752475
let usage = ChannelUsage {
24762476
amount_msat: 128,
24772477
inflight_htlc_msat: 0,
2478-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: Some(1_000) },
2478+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: 1_000 },
24792479
};
24802480

24812481
let params = ProbabilisticScoringParameters {
@@ -2511,7 +2511,7 @@ mod tests {
25112511
let usage = ChannelUsage {
25122512
amount_msat: 512_000,
25132513
inflight_htlc_msat: 0,
2514-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: Some(1_000) },
2514+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: 1_000 },
25152515
};
25162516

25172517
let params = ProbabilisticScoringParameters {
@@ -2566,7 +2566,7 @@ mod tests {
25662566
let usage = ChannelUsage {
25672567
amount_msat: 750,
25682568
inflight_htlc_msat: 0,
2569-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: Some(1_000) },
2569+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_000, htlc_maximum_msat: 1_000 },
25702570
};
25712571
assert_ne!(scorer.channel_penalty_msat(42, &source, &target, usage), u64::max_value());
25722572

@@ -2615,7 +2615,7 @@ mod tests {
26152615
let usage = ChannelUsage {
26162616
amount_msat: 100,
26172617
inflight_htlc_msat: 0,
2618-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: Some(1_024) },
2618+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024, htlc_maximum_msat: 1_024 },
26192619
};
26202620
// With no historical data the normal liquidity penalty calculation is used.
26212621
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 47);
@@ -2650,31 +2650,31 @@ mod tests {
26502650
let usage = ChannelUsage {
26512651
amount_msat: 512_000,
26522652
inflight_htlc_msat: 0,
2653-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: Some(1_000) },
2653+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: 1_000 },
26542654
};
26552655
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 0);
26562656

26572657
// Check we receive anti-probing penalty for htlc_maximum_msat == channel_capacity.
26582658
let usage = ChannelUsage {
26592659
amount_msat: 512_000,
26602660
inflight_htlc_msat: 0,
2661-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: Some(1_024_000) },
2661+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: 1_024_000 },
26622662
};
26632663
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 500);
26642664

26652665
// Check we receive anti-probing penalty for htlc_maximum_msat == channel_capacity/2.
26662666
let usage = ChannelUsage {
26672667
amount_msat: 512_000,
26682668
inflight_htlc_msat: 0,
2669-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: Some(512_000) },
2669+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: 512_000 },
26702670
};
26712671
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 500);
26722672

26732673
// Check we receive no anti-probing penalty for htlc_maximum_msat == channel_capacity/2 - 1.
26742674
let usage = ChannelUsage {
26752675
amount_msat: 512_000,
26762676
inflight_htlc_msat: 0,
2677-
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: Some(511_999) },
2677+
effective_capacity: EffectiveCapacity::Total { capacity_msat: 1_024_000, htlc_maximum_msat: 511_999 },
26782678
};
26792679
assert_eq!(scorer.channel_penalty_msat(42, &source, &target, usage), 0);
26802680
}

0 commit comments

Comments
 (0)