Skip to content

Commit 7469bcf

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 390f5a1 commit 7469bcf

File tree

7 files changed

+29
-55
lines changed

7 files changed

+29
-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};
@@ -139,7 +139,7 @@ impl MessageRouter for FuzzRouter {
139139
}
140140

141141
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
142-
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<PublicKey>,
142+
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<MessageForwardNode>,
143143
_secp_ctx: &Secp256k1<T>,
144144
) -> Result<Vec<BlindedMessagePath>, ()> {
145145
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};
@@ -171,7 +171,7 @@ impl MessageRouter for FuzzRouter {
171171
}
172172

173173
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
174-
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<PublicKey>,
174+
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<MessageForwardNode>,
175175
_secp_ctx: &Secp256k1<T>,
176176
) -> Result<Vec<BlindedMessagePath>, ()> {
177177
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;
@@ -103,7 +103,7 @@ impl MessageRouter for TestMessageRouter {
103103
}
104104

105105
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
106-
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<PublicKey>,
106+
&self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<MessageForwardNode>,
107107
_secp_ctx: &Secp256k1<T>,
108108
) -> Result<Vec<BlindedMessagePath>, ()> {
109109
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};
@@ -228,7 +230,7 @@ mod test {
228230
}
229231

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

lightning/src/ln/channelmanager.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10883,7 +10883,10 @@ where
1088310883
.map(|(node_id, peer_state)| (node_id, peer_state.lock().unwrap()))
1088410884
.filter(|(_, peer)| peer.is_connected)
1088510885
.filter(|(_, peer)| peer.latest_features.supports_onion_messages())
10886-
.map(|(node_id, _)| *node_id)
10886+
.map(|(node_id, _)| MessageForwardNode {
10887+
node_id: *node_id,
10888+
short_channel_id: None
10889+
})
1088710890
.collect::<Vec<_>>();
1088810891

1088910892
self.message_router

lightning/src/onion_message/messenger.rs

Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ where
215215
/// # })
216216
/// # }
217217
/// # fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
218-
/// # &self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<PublicKey>, _secp_ctx: &Secp256k1<T>
218+
/// # &self, _recipient: PublicKey, _context: MessageContext, _peers: Vec<MessageForwardNode>, _secp_ctx: &Secp256k1<T>
219219
/// # ) -> Result<Vec<BlindedMessagePath>, ()> {
220220
/// # unreachable!()
221221
/// # }
@@ -493,7 +493,7 @@ pub trait MessageRouter {
493493
/// Creates [`BlindedMessagePath`]s to the `recipient` node. The nodes in `peers` are assumed to
494494
/// be direct peers with the `recipient`.
495495
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
496-
&self, recipient: PublicKey, context: MessageContext, peers: Vec<PublicKey>,
496+
&self, recipient: PublicKey, context: MessageContext, peers: Vec<MessageForwardNode>,
497497
secp_ctx: &Secp256k1<T>,
498498
) -> Result<Vec<BlindedMessagePath>, ()>;
499499

@@ -514,10 +514,6 @@ pub trait MessageRouter {
514514
&self, recipient: PublicKey, context: MessageContext, peers: Vec<MessageForwardNode>,
515515
secp_ctx: &Secp256k1<T>,
516516
) -> Result<Vec<BlindedMessagePath>, ()> {
517-
let peers = peers
518-
.into_iter()
519-
.map(|MessageForwardNode { node_id, short_channel_id: _ }| node_id)
520-
.collect();
521517
self.create_blinded_paths(recipient, context, peers, secp_ctx)
522518
}
523519
}
@@ -549,7 +545,7 @@ where
549545
Self { network_graph, entropy_source }
550546
}
551547

552-
fn create_blinded_paths_from_iter<
548+
pub(crate) fn create_blinded_paths_from_iter<
553549
I: ExactSizeIterator<Item = MessageForwardNode>,
554550
T: secp256k1::Signing + secp256k1::Verification,
555551
>(
@@ -663,38 +659,6 @@ where
663659
}
664660
}
665661
}
666-
667-
pub(crate) fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
668-
network_graph: &G, recipient: PublicKey, context: MessageContext, peers: Vec<PublicKey>,
669-
entropy_source: &ES, secp_ctx: &Secp256k1<T>,
670-
) -> Result<Vec<BlindedMessagePath>, ()> {
671-
let peers =
672-
peers.into_iter().map(|node_id| MessageForwardNode { node_id, short_channel_id: None });
673-
Self::create_blinded_paths_from_iter(
674-
network_graph,
675-
recipient,
676-
context,
677-
peers.into_iter(),
678-
entropy_source,
679-
secp_ctx,
680-
false,
681-
)
682-
}
683-
684-
pub(crate) fn create_compact_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
685-
network_graph: &G, recipient: PublicKey, context: MessageContext,
686-
peers: Vec<MessageForwardNode>, entropy_source: &ES, secp_ctx: &Secp256k1<T>,
687-
) -> Result<Vec<BlindedMessagePath>, ()> {
688-
Self::create_blinded_paths_from_iter(
689-
network_graph,
690-
recipient,
691-
context,
692-
peers.into_iter(),
693-
entropy_source,
694-
secp_ctx,
695-
true,
696-
)
697-
}
698662
}
699663

700664
impl<G: Deref<Target = NetworkGraph<L>>, L: Deref, ES: Deref> MessageRouter
@@ -710,30 +674,32 @@ where
710674
}
711675

712676
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
713-
&self, recipient: PublicKey, context: MessageContext, peers: Vec<PublicKey>,
677+
&self, recipient: PublicKey, context: MessageContext, peers: Vec<MessageForwardNode>,
714678
secp_ctx: &Secp256k1<T>,
715679
) -> Result<Vec<BlindedMessagePath>, ()> {
716-
Self::create_blinded_paths(
680+
Self::create_blinded_paths_from_iter(
717681
&self.network_graph,
718682
recipient,
719683
context,
720-
peers,
684+
peers.into_iter(),
721685
&self.entropy_source,
722686
secp_ctx,
687+
false,
723688
)
724689
}
725690

726691
fn create_compact_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
727692
&self, recipient: PublicKey, context: MessageContext, peers: Vec<MessageForwardNode>,
728693
secp_ctx: &Secp256k1<T>,
729694
) -> Result<Vec<BlindedMessagePath>, ()> {
730-
Self::create_compact_blinded_paths(
695+
Self::create_blinded_paths_from_iter(
731696
&self.network_graph,
732697
recipient,
733698
context,
734-
peers,
699+
peers.into_iter(),
735700
&self.entropy_source,
736701
secp_ctx,
702+
true,
737703
)
738704
}
739705
}
@@ -1406,7 +1372,10 @@ where
14061372
message_recipients
14071373
.iter()
14081374
.filter(|(_, peer)| matches!(peer, OnionMessageRecipient::ConnectedPeer(_)))
1409-
.map(|(node_id, _)| *node_id)
1375+
.map(|(node_id, _)| MessageForwardNode {
1376+
node_id: *node_id,
1377+
short_channel_id: None,
1378+
})
14101379
.collect::<Vec<_>>()
14111380
};
14121381

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)