Skip to content

Commit b138165

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 8d13f41 commit b138165

File tree

7 files changed

+25
-55
lines changed

7 files changed

+25
-55
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};
@@ -142,7 +142,7 @@ impl MessageRouter for FuzzRouter {
142142
}
143143

144144
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
145-
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<PublicKey>,
145+
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<MessageForwardNode>,
146146
_secp_ctx: &Secp256k1<T>,
147147
) -> Result<Vec<BlindedMessagePath>, ()> {
148148
unreachable!()

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};
@@ -173,7 +173,7 @@ impl MessageRouter for FuzzRouter {
173173
}
174174

175175
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
176-
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<PublicKey>,
176+
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<MessageForwardNode>,
177177
_secp_ctx: &Secp256k1<T>,
178178
) -> Result<Vec<BlindedMessagePath>, ()> {
179179
unreachable!()

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;
@@ -104,7 +104,7 @@ impl MessageRouter for TestMessageRouter {
104104
}
105105

106106
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
107-
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<PublicKey>,
107+
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<MessageForwardNode>,
108108
_secp_ctx: &Secp256k1<T>,
109109
) -> Result<Vec<BlindedMessagePath>, ()> {
110110
unreachable!()

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};
@@ -230,7 +232,7 @@ mod test {
230232
}
231233

232234
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
233-
&self, recipient: PublicKey, context: MessageContext, _peers: Vec<PublicKey>,
235+
&self, recipient: PublicKey, context: MessageContext, _peers: Vec<MessageForwardNode>,
234236
secp_ctx: &Secp256k1<T>,
235237
) -> Result<Vec<BlindedMessagePath>, ()> {
236238
let keys = KeysManager::new(&[0; 32], 42, 43);

lightning/src/offers/flow.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,6 @@ where
280280
let recipient = self.get_our_node_id();
281281
let secp_ctx = &self.secp_ctx;
282282

283-
let peers = peers.into_iter().map(|node| node.node_id).collect();
284283
self.message_router
285284
.create_blinded_paths(recipient, context, peers, secp_ctx)
286285
.and_then(|paths| (!paths.is_empty()).then(|| paths).ok_or(()))

lightning/src/onion_message/messenger.rs

Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ where
217217
/// # })
218218
/// # }
219219
/// # fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
220-
/// # &self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<PublicKey>, _secp_ctx: &Secp256k1<T>
220+
/// # &self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<MessageForwardNode>, _secp_ctx: &Secp256k1<T>
221221
/// # ) -> Result<Vec<BlindedMessagePath>, ()> {
222222
/// # unreachable!()
223223
/// # }
@@ -501,7 +501,7 @@ pub trait MessageRouter {
501501
/// Creates [`BlindedMessagePath`]s to the `recipient` node. The nodes in `peers` are assumed to
502502
/// be direct peers with the `recipient`.
503503
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
504-
&self, recipient: PublicKey, context: MessageContext, peers: Vec<PublicKey>,
504+
&self, recipient: PublicKey, context: MessageContext, peers: Vec<MessageForwardNode>,
505505
secp_ctx: &Secp256k1<T>,
506506
) -> Result<Vec<BlindedMessagePath>, ()>;
507507

@@ -522,10 +522,6 @@ pub trait MessageRouter {
522522
&self, recipient: PublicKey, context: MessageContext, peers: Vec<MessageForwardNode>,
523523
secp_ctx: &Secp256k1<T>,
524524
) -> Result<Vec<BlindedMessagePath>, ()> {
525-
let peers = peers
526-
.into_iter()
527-
.map(|MessageForwardNode { node_id, short_channel_id: _ }| node_id)
528-
.collect();
529525
self.create_blinded_paths(recipient, context, peers, secp_ctx)
530526
}
531527
}
@@ -557,7 +553,7 @@ where
557553
Self { network_graph, entropy_source }
558554
}
559555

560-
fn create_blinded_paths_from_iter<
556+
pub(crate) fn create_blinded_paths_from_iter<
561557
I: ExactSizeIterator<Item = MessageForwardNode>,
562558
T: secp256k1::Signing + secp256k1::Verification,
563559
>(
@@ -671,38 +667,6 @@ where
671667
}
672668
}
673669
}
674-
675-
pub(crate) fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
676-
network_graph: &G, recipient: PublicKey, context: MessageContext, peers: Vec<PublicKey>,
677-
entropy_source: &ES, secp_ctx: &Secp256k1<T>,
678-
) -> Result<Vec<BlindedMessagePath>, ()> {
679-
let peers =
680-
peers.into_iter().map(|node_id| MessageForwardNode { node_id, short_channel_id: None });
681-
Self::create_blinded_paths_from_iter(
682-
network_graph,
683-
recipient,
684-
context,
685-
peers.into_iter(),
686-
entropy_source,
687-
secp_ctx,
688-
false,
689-
)
690-
}
691-
692-
pub(crate) fn create_compact_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
693-
network_graph: &G, recipient: PublicKey, context: MessageContext,
694-
peers: Vec<MessageForwardNode>, entropy_source: &ES, secp_ctx: &Secp256k1<T>,
695-
) -> Result<Vec<BlindedMessagePath>, ()> {
696-
Self::create_blinded_paths_from_iter(
697-
network_graph,
698-
recipient,
699-
context,
700-
peers.into_iter(),
701-
entropy_source,
702-
secp_ctx,
703-
true,
704-
)
705-
}
706670
}
707671

708672
impl<G: Deref<Target = NetworkGraph<L>>, L: Deref, ES: Deref> MessageRouter
@@ -718,30 +682,32 @@ where
718682
}
719683

720684
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
721-
&self, recipient: PublicKey, context: MessageContext, peers: Vec<PublicKey>,
685+
&self, recipient: PublicKey, context: MessageContext, peers: Vec<MessageForwardNode>,
722686
secp_ctx: &Secp256k1<T>,
723687
) -> Result<Vec<BlindedMessagePath>, ()> {
724-
Self::create_blinded_paths(
688+
Self::create_blinded_paths_from_iter(
725689
&self.network_graph,
726690
recipient,
727691
context,
728-
peers,
692+
peers.into_iter(),
729693
&self.entropy_source,
730694
secp_ctx,
695+
false,
731696
)
732697
}
733698

734699
fn create_compact_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
735700
&self, recipient: PublicKey, context: MessageContext, peers: Vec<MessageForwardNode>,
736701
secp_ctx: &Secp256k1<T>,
737702
) -> Result<Vec<BlindedMessagePath>, ()> {
738-
Self::create_compact_blinded_paths(
703+
Self::create_blinded_paths_from_iter(
739704
&self.network_graph,
740705
recipient,
741706
context,
742-
peers,
707+
peers.into_iter(),
743708
&self.entropy_source,
744709
secp_ctx,
710+
true,
745711
)
746712
}
747713
}
@@ -1430,7 +1396,10 @@ where
14301396
message_recipients
14311397
.iter()
14321398
.filter(|(_, peer)| matches!(peer, OnionMessageRecipient::ConnectedPeer(_)))
1433-
.map(|(node_id, _)| *node_id)
1399+
.map(|(node_id, _)| MessageForwardNode {
1400+
node_id: *node_id,
1401+
short_channel_id: None,
1402+
})
14341403
.collect::<Vec<_>>()
14351404
};
14361405

lightning/src/util/test_utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ impl<'a> MessageRouter for TestMessageRouter<'a> {
335335
}
336336

337337
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
338-
&self, recipient: PublicKey, context: MessageContext, peers: Vec<PublicKey>,
338+
&self, recipient: PublicKey, context: MessageContext, peers: Vec<MessageForwardNode>,
339339
secp_ctx: &Secp256k1<T>,
340340
) -> Result<Vec<BlindedMessagePath>, ()> {
341341
self.inner.create_blinded_paths(recipient, context, peers, secp_ctx)

0 commit comments

Comments
 (0)