Skip to content

Commit 1d85efe

Browse files
committed
Qualify BOLT11 ChannelManager invoice_features
1 parent 46b794e commit 1d85efe

File tree

9 files changed

+111
-86
lines changed

9 files changed

+111
-86
lines changed

lightning/src/ln/blinded_payment_tests.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,9 @@ fn mpp_to_one_hop_blinded_path() {
8989
).unwrap();
9090

9191
let bolt12_features: Bolt12InvoiceFeatures =
92-
channelmanager::provided_invoice_features(&UserConfig::default()).to_context();
92+
channelmanager::provided_bolt11_invoice_features(&UserConfig::default()).to_context();
9393
let route_params = RouteParameters::from_payment_params_and_value(
94-
PaymentParameters::blinded(vec![blinded_path])
95-
.with_bolt12_features(bolt12_features).unwrap(),
94+
PaymentParameters::blinded(vec![blinded_path]).with_bolt12_features(bolt12_features).unwrap(),
9695
amt_msat,
9796
);
9897
nodes[0].node.send_payment(payment_hash, RecipientOnionFields::spontaneous_empty(), PaymentId(payment_hash.0), route_params, Retry::Attempts(0)).unwrap();

lightning/src/ln/channelmanager.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8256,8 +8256,8 @@ where
82568256
/// Note that the invoice feature flags can vary depending on if the invoice is a "phantom invoice"
82578257
/// or not. Thus, this method is not public.
82588258
#[cfg(any(feature = "_test_utils", test))]
8259-
pub fn invoice_features(&self) -> Bolt11InvoiceFeatures {
8260-
provided_invoice_features(&self.default_configuration)
8259+
pub fn bolt11_invoice_features(&self) -> Bolt11InvoiceFeatures {
8260+
provided_bolt11_invoice_features(&self.default_configuration)
82618261
}
82628262

82638263
/// Fetches the set of [`ChannelFeatures`] flags which are provided by or required by
@@ -8817,7 +8817,7 @@ pub(crate) fn provided_node_features(config: &UserConfig) -> NodeFeatures {
88178817
/// Note that the invoice feature flags can vary depending on if the invoice is a "phantom invoice"
88188818
/// or not. Thus, this method is not public.
88198819
#[cfg(any(feature = "_test_utils", test))]
8820-
pub(crate) fn provided_invoice_features(config: &UserConfig) -> Bolt11InvoiceFeatures {
8820+
pub(crate) fn provided_bolt11_invoice_features(config: &UserConfig) -> Bolt11InvoiceFeatures {
88218821
provided_init_features(config).to_context()
88228822
}
88238823

@@ -11988,7 +11988,7 @@ pub mod bench {
1198811988
macro_rules! send_payment {
1198911989
($node_a: expr, $node_b: expr) => {
1199011990
let payment_params = PaymentParameters::from_node_id($node_b.get_our_node_id(), TEST_FINAL_CLTV)
11991-
.with_bolt11_features($node_b.invoice_features()).unwrap();
11991+
.with_bolt11_features($node_b.bolt11_invoice_features()).unwrap();
1199211992
let mut payment_preimage = PaymentPreimage([0; 32]);
1199311993
payment_preimage.0[0..8].copy_from_slice(&payment_count.to_le_bytes());
1199411994
payment_count += 1;

lightning/src/ln/functional_test_utils.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1904,7 +1904,7 @@ macro_rules! get_route {
19041904
macro_rules! get_route_and_payment_hash {
19051905
($send_node: expr, $recv_node: expr, $recv_value: expr) => {{
19061906
let payment_params = $crate::routing::router::PaymentParameters::from_node_id($recv_node.node.get_our_node_id(), TEST_FINAL_CLTV)
1907-
.with_bolt11_features($recv_node.node.invoice_features()).unwrap();
1907+
.with_bolt11_features($recv_node.node.bolt11_invoice_features()).unwrap();
19081908
$crate::get_route_and_payment_hash!($send_node, $recv_node, payment_params, $recv_value)
19091909
}};
19101910
($send_node: expr, $recv_node: expr, $payment_params: expr, $recv_value: expr) => {{
@@ -2517,7 +2517,7 @@ pub const TEST_FINAL_CLTV: u32 = 70;
25172517

25182518
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, PaymentId) {
25192519
let payment_params = PaymentParameters::from_node_id(expected_route.last().unwrap().node.get_our_node_id(), TEST_FINAL_CLTV)
2520-
.with_bolt11_features(expected_route.last().unwrap().node.invoice_features()).unwrap();
2520+
.with_bolt11_features(expected_route.last().unwrap().node.bolt11_invoice_features()).unwrap();
25212521
let route_params = RouteParameters::from_payment_params_and_value(payment_params, recv_value);
25222522
let route = get_route(origin_node, &route_params).unwrap();
25232523
assert_eq!(route.paths.len(), 1);
@@ -2532,7 +2532,7 @@ pub fn route_payment<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_route:
25322532

25332533
pub fn route_over_limit<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_route: &[&Node<'a, 'b, 'c>], recv_value: u64) {
25342534
let payment_params = PaymentParameters::from_node_id(expected_route.last().unwrap().node.get_our_node_id(), TEST_FINAL_CLTV)
2535-
.with_bolt11_features(expected_route.last().unwrap().node.invoice_features()).unwrap();
2535+
.with_bolt11_features(expected_route.last().unwrap().node.bolt11_invoice_features()).unwrap();
25362536
let route_params = RouteParameters::from_payment_params_and_value(payment_params, recv_value);
25372537
let network_graph = origin_node.network_graph.read_only();
25382538
let scorer = test_utils::TestScorer::new();

lightning/src/ln/functional_tests.rs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1865,7 +1865,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
18651865
// attempt to send amt_msat > their_max_htlc_value_in_flight_msat
18661866
{
18671867
let payment_params = PaymentParameters::from_node_id(nodes[2].node.get_our_node_id(), TEST_FINAL_CLTV)
1868-
.with_bolt11_features(nodes[2].node.invoice_features()).unwrap().with_max_channel_saturation_power_of_half(0);
1868+
.with_bolt11_features(nodes[2].node.bolt11_invoice_features()).unwrap().with_max_channel_saturation_power_of_half(0);
18691869
let (mut route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], payment_params, recv_value_0);
18701870
route.paths[0].hops.last_mut().unwrap().fee_msat += 1;
18711871
assert!(route.paths[0].hops.iter().rev().skip(1).all(|h| h.fee_msat == feemsat));
@@ -1890,7 +1890,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
18901890
}
18911891

18921892
let payment_params = PaymentParameters::from_node_id(nodes[2].node.get_our_node_id(), TEST_FINAL_CLTV)
1893-
.with_bolt11_features(nodes[2].node.invoice_features()).unwrap().with_max_channel_saturation_power_of_half(0);
1893+
.with_bolt11_features(nodes[2].node.bolt11_invoice_features()).unwrap().with_max_channel_saturation_power_of_half(0);
18941894
let route = get_route!(nodes[0], payment_params, recv_value_0).unwrap();
18951895
let (payment_preimage, ..) = send_along_route(&nodes[0], route, &[&nodes[1], &nodes[2]], recv_value_0);
18961896
claim_payment(&nodes[0], &[&nodes[1], &nodes[2]], payment_preimage);
@@ -4990,7 +4990,7 @@ fn test_duplicate_payment_hash_one_failure_one_success() {
49904990
// script push size limit so that the below script length checks match
49914991
// ACCEPTED_HTLC_SCRIPT_WEIGHT.
49924992
let payment_params = PaymentParameters::from_node_id(nodes[3].node.get_our_node_id(), TEST_FINAL_CLTV - 40)
4993-
.with_bolt11_features(nodes[3].node.invoice_features()).unwrap();
4993+
.with_bolt11_features(nodes[3].node.bolt11_invoice_features()).unwrap();
49944994
let (route, _, _, _) = get_route_and_payment_hash!(nodes[0], nodes[3], payment_params, 800_000);
49954995
send_along_route_with_secret(&nodes[0], route, &[&[&nodes[1], &nodes[2], &nodes[3]]], 800_000, duplicate_payment_hash, payment_secret);
49964996

@@ -6281,7 +6281,7 @@ fn test_update_add_htlc_bolt2_sender_cltv_expiry_too_high() {
62816281
let _chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 0);
62826282

62836283
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), 0)
6284-
.with_bolt11_features(nodes[1].node.invoice_features()).unwrap();
6284+
.with_bolt11_features(nodes[1].node.bolt11_invoice_features()).unwrap();
62856285
let (mut route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], payment_params, 100000000);
62866286
route.paths[0].hops.last_mut().unwrap().cltv_expiry_delta = 500000001;
62876287
unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, our_payment_hash,
@@ -7227,8 +7227,8 @@ fn test_check_htlc_underpaying() {
72277227

72287228
let scorer = test_utils::TestScorer::new();
72297229
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
7230-
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(),
7231-
TEST_FINAL_CLTV).with_bolt11_features(nodes[1].node.invoice_features()).unwrap();
7230+
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), TEST_FINAL_CLTV)
7231+
.with_bolt11_features(nodes[1].node.bolt11_invoice_features()).unwrap();
72327232
let route_params = RouteParameters::from_payment_params_and_value(payment_params, 10_000);
72337233
let route = get_route(&nodes[0].node.get_our_node_id(), &route_params, &nodes[0].network_graph.read_only(),
72347234
None, nodes[0].logger, &scorer, &Default::default(), &random_seed_bytes).unwrap();
@@ -7380,7 +7380,7 @@ fn test_bump_penalty_txn_on_revoked_commitment() {
73807380

73817381
let payment_preimage = route_payment(&nodes[0], &vec!(&nodes[1])[..], 3000000).0;
73827382
let payment_params = PaymentParameters::from_node_id(nodes[0].node.get_our_node_id(), 30)
7383-
.with_bolt11_features(nodes[0].node.invoice_features()).unwrap();
7383+
.with_bolt11_features(nodes[0].node.bolt11_invoice_features()).unwrap();
73847384
let (route,_, _, _) = get_route_and_payment_hash!(nodes[1], nodes[0], payment_params, 3000000);
73857385
send_along_route(&nodes[1], route, &vec!(&nodes[0])[..], 3000000);
73867386

@@ -7484,14 +7484,15 @@ fn test_bump_penalty_txn_on_revoked_htlcs() {
74847484

74857485
let chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 59000000);
74867486
// Lock HTLC in both directions (using a slightly lower CLTV delay to provide timely RBF bumps)
7487-
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), 50).with_bolt11_features(nodes[1].node.invoice_features()).unwrap();
7487+
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), 50).with_bolt11_features(nodes[1].node.bolt11_invoice_features()).unwrap();
74887488
let scorer = test_utils::TestScorer::new();
74897489
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
74907490
let route_params = RouteParameters::from_payment_params_and_value(payment_params, 3_000_000);
74917491
let route = get_route(&nodes[0].node.get_our_node_id(), &route_params, &nodes[0].network_graph.read_only(), None,
74927492
nodes[0].logger, &scorer, &Default::default(), &random_seed_bytes).unwrap();
74937493
let payment_preimage = send_along_route(&nodes[0], route, &[&nodes[1]], 3_000_000).0;
7494-
let payment_params = PaymentParameters::from_node_id(nodes[0].node.get_our_node_id(), 50).with_bolt11_features(nodes[0].node.invoice_features()).unwrap();
7494+
let payment_params = PaymentParameters::from_node_id(nodes[0].node.get_our_node_id(), 50)
7495+
.with_bolt11_features(nodes[0].node.bolt11_invoice_features()).unwrap();
74957496
let route_params = RouteParameters::from_payment_params_and_value(payment_params, 3_000_000);
74967497
let route = get_route(&nodes[1].node.get_our_node_id(), &route_params, &nodes[1].network_graph.read_only(), None,
74977498
nodes[0].logger, &scorer, &Default::default(), &random_seed_bytes).unwrap();
@@ -9394,7 +9395,7 @@ fn do_test_dup_htlc_second_rejected(test_for_second_fail_panic: bool) {
93949395
let _chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 100000, 10001);
93959396

93969397
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), TEST_FINAL_CLTV)
9397-
.with_bolt11_features(nodes[1].node.invoice_features()).unwrap();
9398+
.with_bolt11_features(nodes[1].node.bolt11_invoice_features()).unwrap();
93989399
let route = get_route!(nodes[0], payment_params, 10_000).unwrap();
93999400

94009401
let (our_payment_preimage, our_payment_hash, our_payment_secret) = get_payment_preimage_hash!(&nodes[1]);
@@ -9503,7 +9504,7 @@ fn test_inconsistent_mpp_params() {
95039504
let chan_2_3 =create_announced_chan_between_nodes_with_value(&nodes, 2, 3, 100_000, 0);
95049505

95059506
let payment_params = PaymentParameters::from_node_id(nodes[3].node.get_our_node_id(), TEST_FINAL_CLTV)
9506-
.with_bolt11_features(nodes[3].node.invoice_features()).unwrap();
9507+
.with_bolt11_features(nodes[3].node.bolt11_invoice_features()).unwrap();
95079508
let mut route = get_route!(nodes[0], payment_params, 15_000_000).unwrap();
95089509
assert_eq!(route.paths.len(), 2);
95099510
route.paths.sort_by(|path_a, _| {

lightning/src/ln/onion_route_tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -790,7 +790,7 @@ fn do_test_onion_failure_stale_channel_update(announced_channel: bool) {
790790
htlc_minimum_msat: None,
791791
}])];
792792
let payment_params = PaymentParameters::from_node_id(*channel_to_update_counterparty, TEST_FINAL_CLTV)
793-
.with_bolt11_features(nodes[2].node.invoice_features()).unwrap()
793+
.with_bolt11_features(nodes[2].node.bolt11_invoice_features()).unwrap()
794794
.with_route_hints(hop_hints).unwrap();
795795
get_route_and_payment_hash!(nodes[0], nodes[2], payment_params, PAYMENT_AMT)
796796
};
@@ -1047,7 +1047,7 @@ macro_rules! get_phantom_route {
10471047
let phantom_pubkey = $nodes[1].keys_manager.get_node_id(Recipient::PhantomNode).unwrap();
10481048
let phantom_route_hint = $nodes[1].node.get_phantom_route_hints();
10491049
let payment_params = PaymentParameters::from_node_id(phantom_pubkey, TEST_FINAL_CLTV)
1050-
.with_bolt11_features($nodes[1].node.invoice_features()).unwrap()
1050+
.with_bolt11_features($nodes[1].node.bolt11_invoice_features()).unwrap()
10511051
.with_route_hints(vec![RouteHint(vec![
10521052
RouteHintHop {
10531053
src_node_id: $nodes[0].node.get_our_node_id(),

lightning/src/ln/payment_tests.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ fn mpp_retry() {
8585
let amt_msat = 1_000_000;
8686
let max_total_routing_fee_msat = 50_000;
8787
let payment_params = PaymentParameters::from_node_id(nodes[3].node.get_our_node_id(), TEST_FINAL_CLTV)
88-
.with_bolt11_features(nodes[3].node.invoice_features()).unwrap();
88+
.with_bolt11_features(nodes[3].node.bolt11_invoice_features()).unwrap();
8989
let (mut route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(
9090
nodes[0], nodes[3], payment_params, amt_msat, Some(max_total_routing_fee_msat));
9191
let path = route.paths[0].clone();
@@ -184,7 +184,7 @@ fn mpp_retry_overpay() {
184184
let max_total_routing_fee_msat = Some(1_000_000);
185185

186186
let payment_params = PaymentParameters::from_node_id(nodes[3].node.get_our_node_id(), TEST_FINAL_CLTV)
187-
.with_bolt11_features(nodes[3].node.invoice_features()).unwrap();
187+
.with_bolt11_features(nodes[3].node.bolt11_invoice_features()).unwrap();
188188
let (mut route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(
189189
nodes[0], nodes[3], payment_params, amt_msat, max_total_routing_fee_msat);
190190

@@ -1217,7 +1217,7 @@ fn get_ldk_payment_preimage() {
12171217
let (payment_hash, payment_secret) = nodes[1].node.create_inbound_payment(Some(amt_msat), expiry_secs, None).unwrap();
12181218

12191219
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), TEST_FINAL_CLTV)
1220-
.with_bolt11_features(nodes[1].node.invoice_features()).unwrap();
1220+
.with_bolt11_features(nodes[1].node.bolt11_invoice_features()).unwrap();
12211221
let scorer = test_utils::TestScorer::new();
12221222
let keys_manager = test_utils::TestKeysInterface::new(&[0u8; 32], Network::Testnet);
12231223
let random_seed_bytes = keys_manager.get_secure_random_bytes();
@@ -1867,11 +1867,12 @@ fn do_test_intercepted_payment(test: InterceptTest) {
18671867
htlc_maximum_msat: None,
18681868
}])
18691869
]).unwrap()
1870-
.with_bolt11_features(nodes[2].node.invoice_features()).unwrap();
1871-
let route_params = RouteParameters::from_payment_params_and_value(payment_params, amt_msat,);
1872-
let route = get_route(&nodes[0].node.get_our_node_id(), &route_params,
1873-
&nodes[0].network_graph.read_only(), None, nodes[0].logger, &scorer, &Default::default(),
1874-
&random_seed_bytes).unwrap();
1870+
.with_bolt11_features(nodes[2].node.bolt11_invoice_features()).unwrap();
1871+
let route_params = RouteParameters::from_payment_params_and_value(payment_params, amt_msat);
1872+
let route = get_route(
1873+
&nodes[0].node.get_our_node_id(), &route_params, &nodes[0].network_graph.read_only(), None,
1874+
nodes[0].logger, &scorer, &(), &random_seed_bytes
1875+
).unwrap();
18751876

18761877
let (payment_hash, payment_secret) = nodes[2].node.create_inbound_payment(Some(amt_msat), 60 * 60, None).unwrap();
18771878
nodes[0].node.send_payment_with_route(&route, payment_hash,
@@ -2051,7 +2052,7 @@ fn do_accept_underpaying_htlcs_config(num_mpp_parts: usize) {
20512052
}
20522053
let payment_params = PaymentParameters::from_node_id(nodes[2].node.get_our_node_id(), TEST_FINAL_CLTV)
20532054
.with_route_hints(route_hints).unwrap()
2054-
.with_bolt11_features(nodes[2].node.invoice_features()).unwrap();
2055+
.with_bolt11_features(nodes[2].node.bolt11_invoice_features()).unwrap();
20552056
let route_params = RouteParameters::from_payment_params_and_value(payment_params, amt_msat);
20562057
let (payment_hash, payment_secret) = nodes[2].node.create_inbound_payment(Some(amt_msat), 60 * 60, None).unwrap();
20572058
nodes[0].node.send_payment(payment_hash, RecipientOnionFields::secret_only(payment_secret),
@@ -3513,10 +3514,9 @@ fn do_claim_from_closed_chan(fail_payment: bool) {
35133514
create_announced_chan_between_nodes(&nodes, 2, 3);
35143515

35153516
let (payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash!(nodes[3]);
3516-
let mut route_params = RouteParameters::from_payment_params_and_value(
3517-
PaymentParameters::from_node_id(nodes[3].node.get_our_node_id(), TEST_FINAL_CLTV)
3518-
.with_bolt11_features(nodes[1].node.invoice_features()).unwrap(),
3519-
10_000_000);
3517+
let payment_params = PaymentParameters::from_node_id(nodes[3].node.get_our_node_id(), TEST_FINAL_CLTV)
3518+
.with_bolt11_features(nodes[1].node.bolt11_invoice_features()).unwrap();
3519+
let mut route_params = RouteParameters::from_payment_params_and_value(payment_params, 10_000_000);
35203520
let mut route = nodes[0].router.find_route(&nodes[0].node.get_our_node_id(), &route_params,
35213521
None, nodes[0].node.compute_inflight_htlcs()).unwrap();
35223522
// Make sure the route is ordered as the B->D path before C->D
@@ -3840,7 +3840,7 @@ fn do_test_custom_tlvs_consistency(first_tlvs: Vec<(u64, Vec<u8>)>, second_tlvs:
38403840
let chan_2_3 = create_announced_chan_between_nodes_with_value(&nodes, 2, 3, 100_000, 0);
38413841

38423842
let payment_params = PaymentParameters::from_node_id(nodes[3].node.get_our_node_id(), TEST_FINAL_CLTV)
3843-
.with_bolt11_features(nodes[3].node.invoice_features()).unwrap();
3843+
.with_bolt11_features(nodes[3].node.bolt11_invoice_features()).unwrap();
38443844
let mut route = get_route!(nodes[0], payment_params, 15_000_000).unwrap();
38453845
assert_eq!(route.paths.len(), 2);
38463846
route.paths.sort_by(|path_a, _| {
@@ -3978,7 +3978,7 @@ fn do_test_payment_metadata_consistency(do_reload: bool, do_modify: bool) {
39783978
let payment_metadata = vec![44, 49, 52, 142];
39793979

39803980
let payment_params = PaymentParameters::from_node_id(nodes[3].node.get_our_node_id(), TEST_FINAL_CLTV)
3981-
.with_bolt11_features(nodes[1].node.invoice_features()).unwrap();
3981+
.with_bolt11_features(nodes[1].node.bolt11_invoice_features()).unwrap();
39823982
let mut route_params = RouteParameters::from_payment_params_and_value(payment_params, amt_msat);
39833983

39843984
// Send the MPP payment, delivering the updated commitment state to nodes[1].

0 commit comments

Comments
 (0)