From: Jeffrey Czyz Date: Tue, 17 May 2022 21:43:36 +0000 (-0500) Subject: Use the correct amount when scoring route hints X-Git-Tag: v0.0.107~22^2~3 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=a190aed88afabb9a9f2c946792f38b9f661e9a64;p=rust-lightning Use the correct amount when scoring route hints When scoring route hints, the amount passed to the scorer should include any fees needed for subsequent hops. This worked correctly for single- hop hints since there are no further hops, but not for multi-hint hops (except the final one). --- diff --git a/lightning/src/routing/router.rs b/lightning/src/routing/router.rs index 13cd82f7..7536011d 100644 --- a/lightning/src/routing/router.rs +++ b/lightning/src/routing/router.rs @@ -1295,10 +1295,10 @@ where L::Target: Logger { short_channel_id: hop.short_channel_id, }) .unwrap_or_else(|| CandidateRouteHop::PrivateHop { hint: hop }); + let amount_to_transfer_msat = final_value_msat + aggregate_next_hops_fee_msat; let capacity_msat = candidate.effective_capacity().as_msat(); aggregate_next_hops_path_penalty_msat = aggregate_next_hops_path_penalty_msat - .saturating_add(scorer.channel_penalty_msat(hop.short_channel_id, - final_value_msat, capacity_msat, &source, &target)); + .saturating_add(scorer.channel_penalty_msat(hop.short_channel_id, amount_to_transfer_msat, capacity_msat, &source, &target)); aggregate_next_hops_cltv_delta = aggregate_next_hops_cltv_delta .saturating_add(hop.cltv_expiry_delta as u32);