#[test]
fn we_are_intro_node() {
- // If we are sending straight to a blinded route and we are the introduction node, we need to
- // advance the blinded route by 1 hop so the second hop is the new introduction node.
+ // If we are sending straight to a blinded path and we are the introduction node, we need to
+ // advance the blinded path by 1 hop so the second hop is the new introduction node.
let mut nodes = create_nodes(3);
let test_msg = TestCustomMessage {};
nodes[0].messenger.send_onion_message(&[], Destination::BlindedPath(blinded_path), OnionMessageContents::Custom(test_msg.clone()), None).unwrap();
pass_along_path(&nodes, None);
- // Try with a two-hop blinded route where we are the introduction node.
+ // Try with a two-hop blinded path where we are the introduction node.
let blinded_path = BlindedPath::new(&[nodes[0].get_node_pk(), nodes[1].get_node_pk()], &*nodes[1].keys_manager, &secp_ctx).unwrap();
nodes[0].messenger.send_onion_message(&[], Destination::BlindedPath(blinded_path), OnionMessageContents::Custom(test_msg), None).unwrap();
nodes.remove(2);
#[test]
fn invalid_blinded_path_error() {
- // Make sure we error as expected if a provided blinded route has 0 or 1 hops.
+ // Make sure we error as expected if a provided blinded path has 0 or 1 hops.
let nodes = create_nodes(3);
let test_msg = TestCustomMessage {};
/// let message = OnionMessageContents::Custom(your_custom_message);
/// onion_messenger.send_onion_message(&intermediate_hops, Destination::Node(destination_node_id), message, reply_path);
///
-/// // Create a blinded route to yourself, for someone to send an onion message to.
+/// // Create a blinded path to yourself, for someone to send an onion message to.
/// # let your_node_id = hop_node_id1;
/// let hops = [hop_node_id3, hop_node_id4, your_node_id];
/// let blinded_path = BlindedPath::new(&hops, &keys_manager, &secp_ctx).unwrap();
///
-/// // Send a custom onion message to a blinded route.
+/// // Send a custom onion message to a blinded path.
/// # let intermediate_hops = [hop_node_id1, hop_node_id2];
/// let reply_path = None;
/// # let your_custom_message = YourCustomMessage {};
pub enum Destination {
/// We're sending this onion message to a node.
Node(PublicKey),
- /// We're sending this onion message to a blinded route.
+ /// We're sending this onion message to a blinded path.
BlindedPath(BlindedPath),
}
///
/// [`KeysInterface`]: crate::chain::keysinterface::KeysInterface
GetNodeIdFailed,
- /// We attempted to send to a blinded route where we are the introduction node, and failed to
- /// advance the blinded route to make the second hop the new introduction node. Either
+ /// We attempted to send to a blinded path where we are the introduction node, and failed to
+ /// advance the blinded path to make the second hop the new introduction node. Either
/// [`KeysInterface::ecdh`] failed, we failed to tweak the current blinding point to get the
/// new blinding point, or we were attempting to send to ourselves.
BlindedPathAdvanceFailed,
let OnionMessageContents::Custom(ref msg) = message;
if msg.tlv_type() < 64 { return Err(SendError::InvalidMessage) }
- // If we are sending straight to a blinded route and we are the introduction node, we need to
- // advance the blinded route by 1 hop so the second hop is the new introduction node.
+ // If we are sending straight to a blinded path and we are the introduction node, we need to
+ // advance the blinded path by 1 hop so the second hop is the new introduction node.
if intermediate_nodes.len() == 0 {
if let Destination::BlindedPath(ref mut blinded_path) = destination {
let our_node_id = self.keys_manager.get_node_id(Recipient::Node)
// TODO: we need to check whether `next_node_id` is our node, in which case this is a dummy
// blinded hop and this onion message is destined for us. In this situation, we should keep
// unwrapping the onion layers to get to the final payload. Since we don't have the option
- // of creating blinded routes with dummy hops currently, we should be ok to not handle this
+ // of creating blinded paths with dummy hops currently, we should be ok to not handle this
// for now.
let new_pubkey = match onion_utils::next_hop_packet_pubkey(&self.secp_ctx, msg.onion_routing_packet.public_key, &onion_decode_ss) {
Ok(pk) => pk,
//! Onion messages are multi-purpose messages sent between peers over the lightning network. In the
//! near future, they will be used to communicate invoices for [offers], unlocking use cases such as
//! static invoices, refunds and proof of payer. Further, you will be able to accept payments
-//! without revealing your node id through the use of [blinded routes].
+//! without revealing your node id through the use of [blinded paths].
//!
//! LDK sends and receives onion messages via the [`OnionMessenger`]. See its documentation for more
//! information on its usage.
//!
//! [offers]: <https://github.com/lightning/bolts/pull/798>
-//! [blinded routes]: crate::onion_message::BlindedPath
+//! [blinded paths]: crate::onion_message::BlindedPath
mod blinded_path;
mod messenger;