mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-25 07:17:40 +01:00
Use correct penalty and CLTV delta in route hints
For route hints, the aggregate next hops path penalty and CLTV delta should be computed after considering each hop rather than before. Otherwise, these aggregate values will include values from the current hop, too.
This commit is contained in:
parent
a190aed88a
commit
435a325d02
1 changed files with 11 additions and 10 deletions
|
@ -1295,16 +1295,6 @@ 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, 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);
|
||||
|
||||
aggregate_next_hops_path_length = aggregate_next_hops_path_length
|
||||
.saturating_add(1);
|
||||
|
||||
if !add_entry!(candidate, source, target, aggregate_next_hops_fee_msat,
|
||||
path_value_msat, aggregate_next_hops_path_htlc_minimum_msat,
|
||||
|
@ -1316,6 +1306,17 @@ where L::Target: Logger {
|
|||
hop_used = false;
|
||||
}
|
||||
|
||||
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, 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);
|
||||
|
||||
aggregate_next_hops_path_length = aggregate_next_hops_path_length
|
||||
.saturating_add(1);
|
||||
|
||||
// Searching for a direct channel between last checked hop and first_hop_targets
|
||||
if let Some(first_channels) = first_hop_targets.get(&NodeId::from_pubkey(&prev_hop_id)) {
|
||||
for details in first_channels {
|
||||
|
|
Loading…
Add table
Reference in a new issue