Skip to content

Commit d6099c3

Browse files
committed
Update create_blinded_paths to accept Vec<MessageForwardNode>
To prepare for supporting both standard and compact blinded paths, this commit updates the `create_blinded_paths` function to take a `Vec<MessageForwardNode>` as input. This change ensures the function has all the information it needs to handle both types of blinded path creation. This refactor that sets the stage for upcoming enhancements.
1 parent 5bc12d4 commit d6099c3

File tree

7 files changed

+30
-60
lines changed

7 files changed

+30
-60
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use bitcoin::hashes::sha256d::Hash as Sha256dHash;
3333
use bitcoin::hashes::Hash as TraitImport;
3434
use bitcoin::WPubkeyHash;
3535

36-
use lightning::blinded_path::message::{BlindedMessagePath, MessageContext};
36+
use lightning::blinded_path::message::{BlindedMessagePath, MessageContext, MessageForwardNode};
3737
use lightning::blinded_path::payment::{BlindedPaymentPath, ReceiveTlvs};
3838
use lightning::chain;
3939
use lightning::chain::chaininterface::{BroadcasterInterface, ConfirmationTarget, FeeEstimator};
@@ -144,7 +144,7 @@ impl MessageRouter for FuzzRouter {
144144

145145
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
146146
&self, _recipient: PublicKey, _local_node_receive_key: ReceiveAuthKey,
147-
_context: MessageContext, _peers: Vec<PublicKey>, _secp_ctx: &Secp256k1<T>,
147+
_context: MessageContext, _peers: Vec<MessageForwardNode>, _secp_ctx: &Secp256k1<T>,
148148
) -> Result<Vec<BlindedMessagePath>, ()> {
149149
unreachable!()
150150
}

fuzz/src/full_stack.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use bitcoin::hashes::Hash as _;
3030
use bitcoin::hex::FromHex;
3131
use bitcoin::WPubkeyHash;
3232

33-
use lightning::blinded_path::message::{BlindedMessagePath, MessageContext};
33+
use lightning::blinded_path::message::{BlindedMessagePath, MessageContext, MessageForwardNode};
3434
use lightning::blinded_path::payment::{BlindedPaymentPath, ReceiveTlvs};
3535
use lightning::chain;
3636
use lightning::chain::chaininterface::{BroadcasterInterface, ConfirmationTarget, FeeEstimator};
@@ -175,7 +175,7 @@ impl MessageRouter for FuzzRouter {
175175

176176
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
177177
&self, _recipient: PublicKey, _local_node_receive_key: ReceiveAuthKey,
178-
_context: MessageContext, _peers: Vec<PublicKey>, _secp_ctx: &Secp256k1<T>,
178+
_context: MessageContext, _peers: Vec<MessageForwardNode>, _secp_ctx: &Secp256k1<T>,
179179
) -> Result<Vec<BlindedMessagePath>, ()> {
180180
unreachable!()
181181
}

fuzz/src/onion_message.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use bitcoin::secp256k1::schnorr;
66
use bitcoin::secp256k1::{self, PublicKey, Scalar, Secp256k1, SecretKey};
77

88
use lightning::blinded_path::message::{
9-
AsyncPaymentsContext, BlindedMessagePath, MessageContext, OffersContext,
9+
AsyncPaymentsContext, BlindedMessagePath, MessageContext, MessageForwardNode, OffersContext,
1010
};
1111
use lightning::blinded_path::EmptyNodeIdLookUp;
1212
use lightning::ln::inbound_payment::ExpandedKey;
@@ -107,7 +107,7 @@ impl MessageRouter for TestMessageRouter {
107107

108108
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
109109
&self, _recipient: PublicKey, _local_node_receive_key: ReceiveAuthKey,
110-
_context: MessageContext, _peers: Vec<PublicKey>, _secp_ctx: &Secp256k1<T>,
110+
_context: MessageContext, _peers: Vec<MessageForwardNode>, _secp_ctx: &Secp256k1<T>,
111111
) -> Result<Vec<BlindedMessagePath>, ()> {
112112
unreachable!()
113113
}

lightning-dns-resolver/src/lib.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,9 @@ mod test {
159159
use bitcoin::secp256k1::{self, PublicKey, Secp256k1};
160160
use bitcoin::Block;
161161

162-
use lightning::blinded_path::message::{BlindedMessagePath, MessageContext};
162+
use lightning::blinded_path::message::{
163+
BlindedMessagePath, MessageContext, MessageForwardNode,
164+
};
163165
use lightning::blinded_path::NodeIdLookUp;
164166
use lightning::events::{Event, PaymentPurpose};
165167
use lightning::ln::channelmanager::{PaymentId, Retry};
@@ -228,7 +230,7 @@ mod test {
228230

229231
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
230232
&self, recipient: PublicKey, local_node_receive_key: ReceiveAuthKey,
231-
context: MessageContext, _peers: Vec<PublicKey>, secp_ctx: &Secp256k1<T>,
233+
context: MessageContext, _peers: Vec<MessageForwardNode>, secp_ctx: &Secp256k1<T>,
232234
) -> Result<Vec<BlindedMessagePath>, ()> {
233235
let keys = KeysManager::new(&[0; 32], 42, 43);
234236
Ok(vec![BlindedMessagePath::one_hop(

lightning/src/offers/flow.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,6 @@ where
334334
let receive_key = self.get_receive_auth_key();
335335
let secp_ctx = &self.secp_ctx;
336336

337-
let peers = peers.into_iter().map(|node| node.node_id).collect();
338337
self.message_router
339338
.create_blinded_paths(recipient, receive_key, context, peers, secp_ctx)
340339
.and_then(|paths| (!paths.is_empty()).then(|| paths).ok_or(()))

lightning/src/onion_message/messenger.rs

Lines changed: 14 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ where
219219
/// # }
220220
/// # fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
221221
/// # &self, _recipient: PublicKey, _local_node_receive_key: ReceiveAuthKey,
222-
/// # _context: MessageContext, _peers: Vec<PublicKey>, _secp_ctx: &Secp256k1<T>
222+
/// # _context: MessageContext, _peers: Vec<MessageForwardNode>, _secp_ctx: &Secp256k1<T>
223223
/// # ) -> Result<Vec<BlindedMessagePath>, ()> {
224224
/// # unreachable!()
225225
/// # }
@@ -508,7 +508,7 @@ pub trait MessageRouter {
508508
/// be direct peers with the `recipient`.
509509
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
510510
&self, recipient: PublicKey, local_node_receive_key: ReceiveAuthKey,
511-
context: MessageContext, peers: Vec<PublicKey>, secp_ctx: &Secp256k1<T>,
511+
context: MessageContext, peers: Vec<MessageForwardNode>, secp_ctx: &Secp256k1<T>,
512512
) -> Result<Vec<BlindedMessagePath>, ()>;
513513

514514
/// Creates compact [`BlindedMessagePath`]s to the `recipient` node. The nodes in `peers` are
@@ -528,10 +528,6 @@ pub trait MessageRouter {
528528
&self, recipient: PublicKey, local_node_receive_key: ReceiveAuthKey,
529529
context: MessageContext, peers: Vec<MessageForwardNode>, secp_ctx: &Secp256k1<T>,
530530
) -> Result<Vec<BlindedMessagePath>, ()> {
531-
let peers = peers
532-
.into_iter()
533-
.map(|MessageForwardNode { node_id, short_channel_id: _ }| node_id)
534-
.collect();
535531
self.create_blinded_paths(recipient, local_node_receive_key, context, peers, secp_ctx)
536532
}
537533
}
@@ -563,7 +559,7 @@ where
563559
Self { network_graph, entropy_source }
564560
}
565561

566-
fn create_blinded_paths_from_iter<
562+
pub(crate) fn create_blinded_paths_from_iter<
567563
I: ExactSizeIterator<Item = MessageForwardNode>,
568564
T: secp256k1::Signing + secp256k1::Verification,
569565
>(
@@ -692,42 +688,6 @@ where
692688
}
693689
}
694690
}
695-
696-
pub(crate) fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
697-
network_graph: &G, recipient: PublicKey, local_node_receive_key: ReceiveAuthKey,
698-
context: MessageContext, peers: Vec<PublicKey>, entropy_source: &ES,
699-
secp_ctx: &Secp256k1<T>,
700-
) -> Result<Vec<BlindedMessagePath>, ()> {
701-
let peers =
702-
peers.into_iter().map(|node_id| MessageForwardNode { node_id, short_channel_id: None });
703-
Self::create_blinded_paths_from_iter(
704-
network_graph,
705-
recipient,
706-
local_node_receive_key,
707-
context,
708-
peers.into_iter(),
709-
entropy_source,
710-
secp_ctx,
711-
false,
712-
)
713-
}
714-
715-
pub(crate) fn create_compact_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
716-
network_graph: &G, recipient: PublicKey, local_node_receive_key: ReceiveAuthKey,
717-
context: MessageContext, peers: Vec<MessageForwardNode>, entropy_source: &ES,
718-
secp_ctx: &Secp256k1<T>,
719-
) -> Result<Vec<BlindedMessagePath>, ()> {
720-
Self::create_blinded_paths_from_iter(
721-
network_graph,
722-
recipient,
723-
local_node_receive_key,
724-
context,
725-
peers.into_iter(),
726-
entropy_source,
727-
secp_ctx,
728-
true,
729-
)
730-
}
731691
}
732692

733693
impl<G: Deref<Target = NetworkGraph<L>>, L: Deref, ES: Deref> MessageRouter
@@ -744,31 +704,33 @@ where
744704

745705
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
746706
&self, recipient: PublicKey, local_node_receive_key: ReceiveAuthKey,
747-
context: MessageContext, peers: Vec<PublicKey>, secp_ctx: &Secp256k1<T>,
707+
context: MessageContext, peers: Vec<MessageForwardNode>, secp_ctx: &Secp256k1<T>,
748708
) -> Result<Vec<BlindedMessagePath>, ()> {
749-
Self::create_blinded_paths(
709+
Self::create_blinded_paths_from_iter(
750710
&self.network_graph,
751711
recipient,
752712
local_node_receive_key,
753713
context,
754-
peers,
714+
peers.into_iter(),
755715
&self.entropy_source,
756716
secp_ctx,
717+
false,
757718
)
758719
}
759720

760721
fn create_compact_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
761722
&self, recipient: PublicKey, local_node_receive_key: ReceiveAuthKey,
762723
context: MessageContext, peers: Vec<MessageForwardNode>, secp_ctx: &Secp256k1<T>,
763724
) -> Result<Vec<BlindedMessagePath>, ()> {
764-
Self::create_compact_blinded_paths(
725+
Self::create_blinded_paths_from_iter(
765726
&self.network_graph,
766727
recipient,
767728
local_node_receive_key,
768729
context,
769-
peers,
730+
peers.into_iter(),
770731
&self.entropy_source,
771732
secp_ctx,
733+
true,
772734
)
773735
}
774736
}
@@ -1498,7 +1460,10 @@ where
14981460
message_recipients
14991461
.iter()
15001462
.filter(|(_, peer)| matches!(peer, OnionMessageRecipient::ConnectedPeer(_)))
1501-
.map(|(node_id, _)| *node_id)
1463+
.map(|(node_id, _)| MessageForwardNode {
1464+
node_id: *node_id,
1465+
short_channel_id: None,
1466+
})
15021467
.collect::<Vec<_>>()
15031468
};
15041469

lightning/src/util/test_utils.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,13 +347,17 @@ impl<'a> MessageRouter for TestMessageRouter<'a> {
347347

348348
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
349349
&self, recipient: PublicKey, local_node_receive_key: ReceiveAuthKey,
350-
context: MessageContext, peers: Vec<PublicKey>, secp_ctx: &Secp256k1<T>,
350+
context: MessageContext, peers: Vec<MessageForwardNode>, secp_ctx: &Secp256k1<T>,
351351
) -> Result<Vec<BlindedMessagePath>, ()> {
352352
let mut peers = peers;
353353
{
354354
let peers_override = self.peers_override.lock().unwrap();
355355
if !peers_override.is_empty() {
356-
peers = peers_override.clone();
356+
let peer_override_nodes: Vec<_> = peers_override
357+
.iter()
358+
.map(|pk| MessageForwardNode { node_id: *pk, short_channel_id: None })
359+
.collect();
360+
peers = peer_override_nodes;
357361
}
358362
}
359363
self.inner.create_blinded_paths(recipient, local_node_receive_key, context, peers, secp_ctx)

0 commit comments

Comments
 (0)