Skip to content

Commit f2fe95e

Browse files
authored
Merge pull request #2547 from TheBlueMatt/2023-04-nonlinear-scoring
Add an option to make the success probability estimation nonlinear
2 parents 7e7e7a0 + f2b2920 commit f2fe95e

File tree

3 files changed

+249
-121
lines changed

3 files changed

+249
-121
lines changed

bench/benches/bench.rs

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ criterion_group!(benches,
1313
lightning::routing::router::benches::generate_routes_with_probabilistic_scorer,
1414
lightning::routing::router::benches::generate_mpp_routes_with_probabilistic_scorer,
1515
lightning::routing::router::benches::generate_large_mpp_routes_with_probabilistic_scorer,
16+
lightning::routing::router::benches::generate_routes_with_nonlinear_probabilistic_scorer,
17+
lightning::routing::router::benches::generate_mpp_routes_with_nonlinear_probabilistic_scorer,
18+
lightning::routing::router::benches::generate_large_mpp_routes_with_nonlinear_probabilistic_scorer,
1619
lightning::sign::benches::bench_get_secure_random_bytes,
1720
lightning::ln::channelmanager::bench::bench_sends,
1821
lightning_persister::fs_store::bench::bench_sends,

lightning/src/routing/router.rs

+39-2
Original file line numberDiff line numberDiff line change
@@ -2325,8 +2325,9 @@ where L::Target: Logger {
23252325
// Decrease the available liquidity of a hop in the middle of the path.
23262326
let victim_candidate = &payment_path.hops[(payment_path.hops.len()) / 2].0.candidate;
23272327
let exhausted = u64::max_value();
2328-
log_trace!(logger, "Disabling route candidate {} for future path building iterations to
2329-
avoid duplicates.", LoggedCandidateHop(victim_candidate));
2328+
log_trace!(logger,
2329+
"Disabling route candidate {} for future path building iterations to avoid duplicates.",
2330+
LoggedCandidateHop(victim_candidate));
23302331
*used_liquidities.entry(victim_candidate.id(false)).or_default() = exhausted;
23312332
*used_liquidities.entry(victim_candidate.id(true)).or_default() = exhausted;
23322333
}
@@ -7361,6 +7362,42 @@ pub mod benches {
73617362
"generate_large_mpp_routes_with_probabilistic_scorer");
73627363
}
73637364

7365+
pub fn generate_routes_with_nonlinear_probabilistic_scorer(bench: &mut Criterion) {
7366+
let logger = TestLogger::new();
7367+
let network_graph = bench_utils::read_network_graph(&logger).unwrap();
7368+
let mut params = ProbabilisticScoringFeeParameters::default();
7369+
params.linear_success_probability = false;
7370+
let scorer = ProbabilisticScorer::new(
7371+
ProbabilisticScoringDecayParameters::default(), &network_graph, &logger);
7372+
generate_routes(bench, &network_graph, scorer, &params,
7373+
channelmanager::provided_invoice_features(&UserConfig::default()), 0,
7374+
"generate_routes_with_nonlinear_probabilistic_scorer");
7375+
}
7376+
7377+
pub fn generate_mpp_routes_with_nonlinear_probabilistic_scorer(bench: &mut Criterion) {
7378+
let logger = TestLogger::new();
7379+
let network_graph = bench_utils::read_network_graph(&logger).unwrap();
7380+
let mut params = ProbabilisticScoringFeeParameters::default();
7381+
params.linear_success_probability = false;
7382+
let scorer = ProbabilisticScorer::new(
7383+
ProbabilisticScoringDecayParameters::default(), &network_graph, &logger);
7384+
generate_routes(bench, &network_graph, scorer, &params,
7385+
channelmanager::provided_invoice_features(&UserConfig::default()), 0,
7386+
"generate_mpp_routes_with_nonlinear_probabilistic_scorer");
7387+
}
7388+
7389+
pub fn generate_large_mpp_routes_with_nonlinear_probabilistic_scorer(bench: &mut Criterion) {
7390+
let logger = TestLogger::new();
7391+
let network_graph = bench_utils::read_network_graph(&logger).unwrap();
7392+
let mut params = ProbabilisticScoringFeeParameters::default();
7393+
params.linear_success_probability = false;
7394+
let scorer = ProbabilisticScorer::new(
7395+
ProbabilisticScoringDecayParameters::default(), &network_graph, &logger);
7396+
generate_routes(bench, &network_graph, scorer, &params,
7397+
channelmanager::provided_invoice_features(&UserConfig::default()), 100_000_000,
7398+
"generate_large_mpp_routes_with_nonlinear_probabilistic_scorer");
7399+
}
7400+
73647401
fn generate_routes<S: ScoreLookUp + ScoreUpdate>(
73657402
bench: &mut Criterion, graph: &NetworkGraph<&TestLogger>, mut scorer: S,
73667403
score_params: &S::ScoreParams, features: Bolt11InvoiceFeatures, starting_amount: u64,

0 commit comments

Comments
 (0)