Skip to content

Commit fbc0847

Browse files
committed
Move the final CLTV delta to PaymentParameters from RouteParams
`PaymentParams` is all about the parameters for a payment, i.e. the parameters which are static across all the paths of a paymet. `RouteParameters` is about the information specific to a given `Route` (i.e. a set of paths, among multiple potential sets of paths for a payment). The CLTV delta thus doesn't belong in `RouterParameters` but instead in `PaymentParameters`. Worse, because `RouteParameters` is built from the information in the last hops of a `Route`, when we deliberately inflate the CLTV delta in path-finding, retries of the payment will have the final CLTV delta double-inflated as it inflates starting from the final CLTV delta used in the last attempt. By moving the CLTV delta to `PaymentParameters` we avoid this issue, leaving only the sought amount in the `RouteParameters`.
1 parent d4de913 commit fbc0847

13 files changed

+143
-113
lines changed

fuzz/src/full_stack.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
512512
},
513513
4 => {
514514
let final_value_msat = slice_to_be24(get_slice!(3)) as u64;
515-
let payment_params = PaymentParameters::from_node_id(get_pubkey!());
515+
let payment_params = PaymentParameters::from_node_id(get_pubkey!(), 42);
516516
let params = RouteParameters {
517517
payment_params,
518518
final_value_msat,
@@ -536,7 +536,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
536536
},
537537
15 => {
538538
let final_value_msat = slice_to_be24(get_slice!(3)) as u64;
539-
let payment_params = PaymentParameters::from_node_id(get_pubkey!());
539+
let payment_params = PaymentParameters::from_node_id(get_pubkey!(), 42);
540540
let params = RouteParameters {
541541
payment_params,
542542
final_value_msat,

fuzz/src/router.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,13 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
263263
let scorer = FixedPenaltyScorer::with_penalty(0);
264264
let random_seed_bytes: [u8; 32] = [get_slice!(1)[0]; 32];
265265
for target in node_pks.iter() {
266+
let final_value_msat = slice_to_be64(get_slice!(8));
267+
let final_cltv_expiry_delta = slice_to_be32(get_slice!(4));
266268
let route_params = RouteParameters {
267-
payment_params: PaymentParameters::from_node_id(*target).with_route_hints(last_hops.clone()),
268-
final_value_msat: slice_to_be64(get_slice!(8)),
269-
final_cltv_expiry_delta: slice_to_be32(get_slice!(4)),
269+
payment_params: PaymentParameters::from_node_id(*target, final_cltv_expiry_delta)
270+
.with_route_hints(last_hops.clone()),
271+
final_value_msat,
272+
final_cltv_expiry_delta,
270273
};
271274
let _ = find_route(&our_pubkey, &route_params, &net_graph,
272275
first_hops.map(|c| c.iter().collect::<Vec<_>>()).as_ref().map(|a| a.as_slice()),

lightning-invoice/src/payment.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,8 @@ where
422422
};
423423

424424
let payment_secret = Some(invoice.payment_secret().clone());
425-
let mut payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key())
425+
let mut payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key(),
426+
invoice.min_final_cltv_expiry_delta() as u32)
426427
.with_expiry_time(expiry_time_from_unix_epoch(&invoice).as_secs())
427428
.with_route_hints(invoice.route_hints());
428429
if let Some(features) = invoice.features() {
@@ -486,7 +487,7 @@ where
486487
};
487488

488489
let route_params = RouteParameters {
489-
payment_params: PaymentParameters::for_keysend(pubkey),
490+
payment_params: PaymentParameters::for_keysend(pubkey, final_cltv_expiry_delta),
490491
final_value_msat: amount_msats,
491492
final_cltv_expiry_delta,
492493
};
@@ -1377,7 +1378,7 @@ mod tests {
13771378
assert_eq!(*payer.attempts.borrow(), 1);
13781379

13791380
let retry = RouteParameters {
1380-
payment_params: PaymentParameters::for_keysend(pubkey),
1381+
payment_params: PaymentParameters::for_keysend(pubkey, final_cltv_expiry_delta),
13811382
final_value_msat,
13821383
final_cltv_expiry_delta,
13831384
};
@@ -1655,7 +1656,8 @@ mod tests {
16551656
}
16561657

16571658
fn retry_for_invoice(invoice: &Invoice) -> RouteParameters {
1658-
let mut payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key())
1659+
let mut payment_params = PaymentParameters::from_node_id(
1660+
invoice.recover_payee_pub_key(), invoice.min_final_cltv_expiry_delta() as u32)
16591661
.with_expiry_time(expiry_time_from_unix_epoch(invoice).as_secs())
16601662
.with_route_hints(invoice.route_hints());
16611663
if let Some(features) = invoice.features() {
@@ -2071,7 +2073,7 @@ mod tests {
20712073
cltv_expiry_delta: 100,
20722074
}],
20732075
],
2074-
payment_params: Some(PaymentParameters::from_node_id(nodes[1].node.get_our_node_id())),
2076+
payment_params: Some(PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), 100)),
20752077
};
20762078
let router = ManualRouter(RefCell::new(VecDeque::new()));
20772079
router.expect_find_route(Ok(route.clone()));
@@ -2114,7 +2116,7 @@ mod tests {
21142116
cltv_expiry_delta: 100,
21152117
}],
21162118
],
2117-
payment_params: Some(PaymentParameters::from_node_id(nodes[1].node.get_our_node_id())),
2119+
payment_params: Some(PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), 100)),
21182120
};
21192121
let router = ManualRouter(RefCell::new(VecDeque::new()));
21202122
router.expect_find_route(Ok(route.clone()));
@@ -2194,7 +2196,7 @@ mod tests {
21942196
cltv_expiry_delta: 100,
21952197
}]
21962198
],
2197-
payment_params: Some(PaymentParameters::from_node_id(nodes[2].node.get_our_node_id())),
2199+
payment_params: Some(PaymentParameters::from_node_id(nodes[2].node.get_our_node_id(), 100)),
21982200
};
21992201
let router = ManualRouter(RefCell::new(VecDeque::new()));
22002202
router.expect_find_route(Ok(route.clone()));

lightning-invoice/src/utils.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -724,7 +724,8 @@ mod test {
724724
assert_eq!(invoice.route_hints()[0].0[0].htlc_minimum_msat, chan.inbound_htlc_minimum_msat);
725725
assert_eq!(invoice.route_hints()[0].0[0].htlc_maximum_msat, chan.inbound_htlc_maximum_msat);
726726

727-
let payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key())
727+
let payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key(),
728+
invoice.min_final_cltv_expiry_delta() as u32)
728729
.with_features(invoice.features().unwrap().clone())
729730
.with_route_hints(invoice.route_hints());
730731
let route_params = RouteParameters {
@@ -1087,7 +1088,8 @@ mod test {
10871088
assert_eq!(invoice.expiry_time(), Duration::from_secs(non_default_invoice_expiry_secs.into()));
10881089
assert!(!invoice.features().unwrap().supports_basic_mpp());
10891090

1090-
let payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key())
1091+
let payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key(),
1092+
invoice.min_final_cltv_expiry_delta() as u32)
10911093
.with_features(invoice.features().unwrap().clone())
10921094
.with_route_hints(invoice.route_hints());
10931095
let params = RouteParameters {

lightning/src/ln/channelmanager.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7871,7 +7871,7 @@ mod tests {
78717871

78727872
// Next, attempt a keysend payment and make sure it fails.
78737873
let route_params = RouteParameters {
7874-
payment_params: PaymentParameters::for_keysend(expected_route.last().unwrap().node.get_our_node_id()),
7874+
payment_params: PaymentParameters::for_keysend(expected_route.last().unwrap().node.get_our_node_id(), TEST_FINAL_CLTV),
78757875
final_value_msat: 100_000,
78767876
final_cltv_expiry_delta: TEST_FINAL_CLTV,
78777877
};
@@ -7964,7 +7964,7 @@ mod tests {
79647964

79657965
let _chan = create_chan_between_nodes(&nodes[0], &nodes[1]);
79667966
let route_params = RouteParameters {
7967-
payment_params: PaymentParameters::for_keysend(payee_pubkey),
7967+
payment_params: PaymentParameters::for_keysend(payee_pubkey, 40),
79687968
final_value_msat: 10_000,
79697969
final_cltv_expiry_delta: 40,
79707970
};
@@ -8009,7 +8009,7 @@ mod tests {
80098009

80108010
let _chan = create_chan_between_nodes(&nodes[0], &nodes[1]);
80118011
let route_params = RouteParameters {
8012-
payment_params: PaymentParameters::for_keysend(payee_pubkey),
8012+
payment_params: PaymentParameters::for_keysend(payee_pubkey, 40),
80138013
final_value_msat: 10_000,
80148014
final_cltv_expiry_delta: 40,
80158015
};
@@ -8574,7 +8574,7 @@ pub mod bench {
85748574
macro_rules! send_payment {
85758575
($node_a: expr, $node_b: expr) => {
85768576
let usable_channels = $node_a.list_usable_channels();
8577-
let payment_params = PaymentParameters::from_node_id($node_b.get_our_node_id())
8577+
let payment_params = PaymentParameters::from_node_id($node_b.get_our_node_id(), TEST_FINAL_CLTV)
85788578
.with_features($node_b.invoice_features());
85798579
let scorer = test_utils::TestScorer::with_penalty(0);
85808580
let seed = [3u8; 32];

lightning/src/ln/functional_test_utils.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1484,7 +1484,7 @@ macro_rules! get_route {
14841484
#[macro_export]
14851485
macro_rules! get_route_and_payment_hash {
14861486
($send_node: expr, $recv_node: expr, $recv_value: expr) => {{
1487-
let payment_params = $crate::routing::router::PaymentParameters::from_node_id($recv_node.node.get_our_node_id())
1487+
let payment_params = $crate::routing::router::PaymentParameters::from_node_id($recv_node.node.get_our_node_id(), TEST_FINAL_CLTV)
14881488
.with_features($recv_node.node.invoice_features());
14891489
$crate::get_route_and_payment_hash!($send_node, $recv_node, payment_params, $recv_value, TEST_FINAL_CLTV)
14901490
}};
@@ -2096,7 +2096,7 @@ pub fn claim_payment<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_route:
20962096
pub const TEST_FINAL_CLTV: u32 = 70;
20972097

20982098
pub fn route_payment<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_route: &[&Node<'a, 'b, 'c>], recv_value: u64) -> (PaymentPreimage, PaymentHash, PaymentSecret) {
2099-
let payment_params = PaymentParameters::from_node_id(expected_route.last().unwrap().node.get_our_node_id())
2099+
let payment_params = PaymentParameters::from_node_id(expected_route.last().unwrap().node.get_our_node_id(), TEST_FINAL_CLTV)
21002100
.with_features(expected_route.last().unwrap().node.invoice_features());
21012101
let route = get_route!(origin_node, payment_params, recv_value, TEST_FINAL_CLTV).unwrap();
21022102
assert_eq!(route.paths.len(), 1);
@@ -2110,7 +2110,7 @@ pub fn route_payment<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_route:
21102110
}
21112111

21122112
pub fn route_over_limit<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_route: &[&Node<'a, 'b, 'c>], recv_value: u64) {
2113-
let payment_params = PaymentParameters::from_node_id(expected_route.last().unwrap().node.get_our_node_id())
2113+
let payment_params = PaymentParameters::from_node_id(expected_route.last().unwrap().node.get_our_node_id(), TEST_FINAL_CLTV)
21142114
.with_features(expected_route.last().unwrap().node.invoice_features());
21152115
let network_graph = origin_node.network_graph.read_only();
21162116
let scorer = test_utils::TestScorer::with_penalty(0);

lightning/src/ln/functional_tests.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1802,7 +1802,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
18021802

18031803
// attempt to send amt_msat > their_max_htlc_value_in_flight_msat
18041804
{
1805-
let payment_params = PaymentParameters::from_node_id(nodes[2].node.get_our_node_id())
1805+
let payment_params = PaymentParameters::from_node_id(nodes[2].node.get_our_node_id(), TEST_FINAL_CLTV)
18061806
.with_features(nodes[2].node.invoice_features()).with_max_channel_saturation_power_of_half(0);
18071807
let (mut route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], payment_params, recv_value_0, TEST_FINAL_CLTV);
18081808
route.paths[0].last_mut().unwrap().fee_msat += 1;
@@ -1827,7 +1827,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
18271827
break;
18281828
}
18291829

1830-
let payment_params = PaymentParameters::from_node_id(nodes[2].node.get_our_node_id())
1830+
let payment_params = PaymentParameters::from_node_id(nodes[2].node.get_our_node_id(), TEST_FINAL_CLTV)
18311831
.with_features(nodes[2].node.invoice_features()).with_max_channel_saturation_power_of_half(0);
18321832
let route = get_route!(nodes[0], payment_params, recv_value_0, TEST_FINAL_CLTV).unwrap();
18331833
let (payment_preimage, ..) = send_along_route(&nodes[0], route, &[&nodes[1], &nodes[2]], recv_value_0);
@@ -4716,7 +4716,7 @@ fn test_duplicate_payment_hash_one_failure_one_success() {
47164716
// We reduce the final CLTV here by a somewhat arbitrary constant to keep it under the one-byte
47174717
// script push size limit so that the below script length checks match
47184718
// ACCEPTED_HTLC_SCRIPT_WEIGHT.
4719-
let payment_params = PaymentParameters::from_node_id(nodes[3].node.get_our_node_id())
4719+
let payment_params = PaymentParameters::from_node_id(nodes[3].node.get_our_node_id(), TEST_FINAL_CLTV - 40)
47204720
.with_features(nodes[3].node.invoice_features());
47214721
let (route, _, _, _) = get_route_and_payment_hash!(nodes[0], nodes[3], payment_params, 800_000, TEST_FINAL_CLTV - 40);
47224722
send_along_route_with_secret(&nodes[0], route, &[&[&nodes[1], &nodes[2], &nodes[3]]], 800_000, duplicate_payment_hash, payment_secret);
@@ -6009,7 +6009,7 @@ fn test_update_add_htlc_bolt2_sender_cltv_expiry_too_high() {
60096009
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
60106010
let _chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 0);
60116011

6012-
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id())
6012+
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), 0)
60136013
.with_features(nodes[1].node.invoice_features());
60146014
let (mut route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], payment_params, 100000000, 0);
60156015
route.paths[0].last_mut().unwrap().cltv_expiry_delta = 500000001;
@@ -6927,7 +6927,7 @@ fn test_check_htlc_underpaying() {
69276927

69286928
let scorer = test_utils::TestScorer::with_penalty(0);
69296929
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
6930-
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id()).with_features(nodes[1].node.invoice_features());
6930+
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), TEST_FINAL_CLTV).with_features(nodes[1].node.invoice_features());
69316931
let route = get_route(&nodes[0].node.get_our_node_id(), &payment_params, &nodes[0].network_graph.read_only(), None, 10_000, TEST_FINAL_CLTV, nodes[0].logger, &scorer, &random_seed_bytes).unwrap();
69326932
let (_, our_payment_hash, _) = get_payment_preimage_hash!(nodes[0]);
69336933
let our_payment_secret = nodes[1].node.create_inbound_payment_for_hash(our_payment_hash, Some(100_000), 7200, None).unwrap();
@@ -7068,7 +7068,7 @@ fn test_bump_penalty_txn_on_revoked_commitment() {
70687068
let chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 59000000);
70697069

70707070
let payment_preimage = route_payment(&nodes[0], &vec!(&nodes[1])[..], 3000000).0;
7071-
let payment_params = PaymentParameters::from_node_id(nodes[0].node.get_our_node_id())
7071+
let payment_params = PaymentParameters::from_node_id(nodes[0].node.get_our_node_id(), 30)
70727072
.with_features(nodes[0].node.invoice_features());
70737073
let (route,_, _, _) = get_route_and_payment_hash!(nodes[1], nodes[0], payment_params, 3000000, 30);
70747074
send_along_route(&nodes[1], route, &vec!(&nodes[0])[..], 3000000);
@@ -7174,13 +7174,13 @@ fn test_bump_penalty_txn_on_revoked_htlcs() {
71747174

71757175
let chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 59000000);
71767176
// Lock HTLC in both directions (using a slightly lower CLTV delay to provide timely RBF bumps)
7177-
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id()).with_features(nodes[1].node.invoice_features());
7177+
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), 50).with_features(nodes[1].node.invoice_features());
71787178
let scorer = test_utils::TestScorer::with_penalty(0);
71797179
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
71807180
let route = get_route(&nodes[0].node.get_our_node_id(), &payment_params, &nodes[0].network_graph.read_only(), None,
71817181
3_000_000, 50, nodes[0].logger, &scorer, &random_seed_bytes).unwrap();
71827182
let payment_preimage = send_along_route(&nodes[0], route, &[&nodes[1]], 3_000_000).0;
7183-
let payment_params = PaymentParameters::from_node_id(nodes[0].node.get_our_node_id()).with_features(nodes[0].node.invoice_features());
7183+
let payment_params = PaymentParameters::from_node_id(nodes[0].node.get_our_node_id(), 50).with_features(nodes[0].node.invoice_features());
71847184
let route = get_route(&nodes[1].node.get_our_node_id(), &payment_params, &nodes[1].network_graph.read_only(), None,
71857185
3_000_000, 50, nodes[0].logger, &scorer, &random_seed_bytes).unwrap();
71867186
send_along_route(&nodes[1], route, &[&nodes[0]], 3_000_000);
@@ -8976,7 +8976,7 @@ fn do_test_dup_htlc_second_rejected(test_for_second_fail_panic: bool) {
89768976

89778977
let _chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 100000, 10001);
89788978

8979-
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id())
8979+
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), TEST_FINAL_CLTV)
89808980
.with_features(nodes[1].node.invoice_features());
89818981
let route = get_route!(nodes[0], payment_params, 10_000, TEST_FINAL_CLTV).unwrap();
89828982

@@ -9081,7 +9081,7 @@ fn test_inconsistent_mpp_params() {
90819081
create_announced_chan_between_nodes_with_value(&nodes, 1, 3, 100_000, 0);
90829082
let chan_2_3 =create_announced_chan_between_nodes_with_value(&nodes, 2, 3, 100_000, 0);
90839083

9084-
let payment_params = PaymentParameters::from_node_id(nodes[3].node.get_our_node_id())
9084+
let payment_params = PaymentParameters::from_node_id(nodes[3].node.get_our_node_id(), TEST_FINAL_CLTV)
90859085
.with_features(nodes[3].node.invoice_features());
90869086
let mut route = get_route!(nodes[0], payment_params, 15_000_000, TEST_FINAL_CLTV).unwrap();
90879087
assert_eq!(route.paths.len(), 2);
@@ -9182,7 +9182,7 @@ fn test_keysend_payments_to_public_node() {
91829182
let payer_pubkey = nodes[0].node.get_our_node_id();
91839183
let payee_pubkey = nodes[1].node.get_our_node_id();
91849184
let route_params = RouteParameters {
9185-
payment_params: PaymentParameters::for_keysend(payee_pubkey),
9185+
payment_params: PaymentParameters::for_keysend(payee_pubkey, 40),
91869186
final_value_msat: 10000,
91879187
final_cltv_expiry_delta: 40,
91889188
};
@@ -9215,7 +9215,7 @@ fn test_keysend_payments_to_private_node() {
92159215

92169216
let _chan = create_chan_between_nodes(&nodes[0], &nodes[1]);
92179217
let route_params = RouteParameters {
9218-
payment_params: PaymentParameters::for_keysend(payee_pubkey),
9218+
payment_params: PaymentParameters::for_keysend(payee_pubkey, 40),
92199219
final_value_msat: 10000,
92209220
final_cltv_expiry_delta: 40,
92219221
};
@@ -9603,7 +9603,7 @@ fn do_payment_with_custom_min_final_cltv_expiry(valid_delta: bool, use_user_hash
96039603

96049604
create_chan_between_nodes(&nodes[0], &nodes[1]);
96059605

9606-
let payment_parameters = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id());
9606+
let payment_parameters = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), final_cltv_expiry_delta as u32);
96079607
let (payment_hash, payment_preimage, payment_secret) = if use_user_hash {
96089608
let (payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash!(nodes[1],
96099609
Some(recv_value), Some(min_final_cltv_expiry_delta));

lightning/src/ln/onion_route_tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ fn do_test_onion_failure_stale_channel_update(announced_channel: bool) {
655655
htlc_maximum_msat: None,
656656
htlc_minimum_msat: None,
657657
}])];
658-
let payment_params = PaymentParameters::from_node_id(*channel_to_update_counterparty)
658+
let payment_params = PaymentParameters::from_node_id(*channel_to_update_counterparty, TEST_FINAL_CLTV)
659659
.with_features(nodes[2].node.invoice_features())
660660
.with_route_hints(hop_hints);
661661
get_route_and_payment_hash!(nodes[0], nodes[2], payment_params, PAYMENT_AMT, TEST_FINAL_CLTV)
@@ -802,7 +802,7 @@ fn test_always_create_tlv_format_onion_payloads() {
802802
create_announced_chan_between_nodes(&nodes, 0, 1);
803803
create_announced_chan_between_nodes(&nodes, 1, 2);
804804

805-
let payment_params = PaymentParameters::from_node_id(nodes[2].node.get_our_node_id())
805+
let payment_params = PaymentParameters::from_node_id(nodes[2].node.get_our_node_id(), TEST_FINAL_CLTV)
806806
.with_features(InvoiceFeatures::empty());
807807
let (route, _payment_hash, _payment_preimage, _payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], payment_params, 40000, TEST_FINAL_CLTV);
808808

@@ -902,7 +902,7 @@ macro_rules! get_phantom_route {
902902
($nodes: expr, $amt: expr, $channel: expr) => {{
903903
let phantom_pubkey = $nodes[1].keys_manager.get_node_id(Recipient::PhantomNode).unwrap();
904904
let phantom_route_hint = $nodes[1].node.get_phantom_route_hints();
905-
let payment_params = PaymentParameters::from_node_id(phantom_pubkey)
905+
let payment_params = PaymentParameters::from_node_id(phantom_pubkey, TEST_FINAL_CLTV)
906906
.with_features($nodes[1].node.invoice_features())
907907
.with_route_hints(vec![RouteHint(vec![
908908
RouteHintHop {

lightning/src/ln/outbound_payment.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1149,8 +1149,9 @@ mod tests {
11491149

11501150
let past_expiry_time = std::time::SystemTime::UNIX_EPOCH.elapsed().unwrap().as_secs() - 2;
11511151
let payment_params = PaymentParameters::from_node_id(
1152-
PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap()))
1153-
.with_expiry_time(past_expiry_time);
1152+
PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap()),
1153+
0
1154+
).with_expiry_time(past_expiry_time);
11541155
let expired_route_params = RouteParameters {
11551156
payment_params,
11561157
final_value_msat: 0,
@@ -1187,7 +1188,7 @@ mod tests {
11871188
router.expect_find_route(Err(LightningError { err: String::new(), action: ErrorAction::IgnoreError }));
11881189

11891190
let payment_params = PaymentParameters::from_node_id(
1190-
PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap()));
1191+
PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap()), 0);
11911192
let route_params = RouteParameters {
11921193
payment_params,
11931194
final_value_msat: 0,

0 commit comments

Comments
 (0)