Skip to content

Commit 03c0f44

Browse files
Support overpayment in test util pass_along_path.
Useful for payments to blinded paths where rounding errors during BlindedPayInfo aggregation may result in overpayment.
1 parent 89fff64 commit 03c0f44

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

lightning/src/ln/functional_test_utils.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2426,6 +2426,9 @@ pub struct PassAlongPathArgs<'a, 'b, 'c, 'd> {
24262426
pub clear_recipient_events: bool,
24272427
pub expected_preimage: Option<PaymentPreimage>,
24282428
pub is_probe: bool,
2429+
// Allow overpayment to the recipient up to this amount. Useful for payments to blinded paths
2430+
// where rounding errors during `BlindedPayInfo` aggregation may result in overpayment.
2431+
pub overpay_limit: u64,
24292432
}
24302433

24312434
impl<'a, 'b, 'c, 'd> PassAlongPathArgs<'a, 'b, 'c, 'd> {
@@ -2436,7 +2439,7 @@ impl<'a, 'b, 'c, 'd> PassAlongPathArgs<'a, 'b, 'c, 'd> {
24362439
Self {
24372440
origin_node, expected_path, recv_value, payment_hash, payment_secret: None, event,
24382441
payment_claimable_expected: true, clear_recipient_events: true, expected_preimage: None,
2439-
is_probe: false,
2442+
is_probe: false, overpay_limit: 0,
24402443
}
24412444
}
24422445
pub fn clear_recipient_events(mut self, clear_recipient_events: bool) -> Self {
@@ -2460,13 +2463,17 @@ impl<'a, 'b, 'c, 'd> PassAlongPathArgs<'a, 'b, 'c, 'd> {
24602463
self.expected_preimage = Some(payment_preimage);
24612464
self
24622465
}
2466+
pub fn with_overpay_limit(mut self, overpay_limit: u64) -> Self {
2467+
self.overpay_limit = overpay_limit;
2468+
self
2469+
}
24632470
}
24642471

24652472
pub fn do_pass_along_path<'a, 'b, 'c>(args: PassAlongPathArgs) -> Option<Event> {
24662473
let PassAlongPathArgs {
24672474
origin_node, expected_path, recv_value, payment_hash: our_payment_hash,
24682475
payment_secret: our_payment_secret, event: ev, payment_claimable_expected,
2469-
clear_recipient_events, expected_preimage, is_probe
2476+
clear_recipient_events, expected_preimage, is_probe, overpay_limit,
24702477
} = args;
24712478

24722479
let mut payment_event = SendEvent::from_event(ev);
@@ -2510,7 +2517,8 @@ pub fn do_pass_along_path<'a, 'b, 'c>(args: PassAlongPathArgs) -> Option<Event>
25102517
assert_eq!(our_payment_secret, onion_fields.as_ref().unwrap().payment_secret);
25112518
},
25122519
}
2513-
assert_eq!(*amount_msat, recv_value);
2520+
assert!(*amount_msat >= recv_value);
2521+
assert!(*amount_msat <= recv_value + overpay_limit);
25142522
assert!(node.node.list_channels().iter().any(|details| details.channel_id == via_channel_id.unwrap()));
25152523
assert!(node.node.list_channels().iter().any(|details| details.user_channel_id == via_user_channel_id.unwrap()));
25162524
assert!(claim_deadline.unwrap() > node.best_block_info().1);

0 commit comments

Comments
 (0)