DefaultMessageRouter

Struct DefaultMessageRouter 

Source
pub struct DefaultMessageRouter<G: Deref<Target = NetworkGraph<L>>, L: Deref, ES: Deref>{ /* private fields */ }
Expand description

A MessageRouter that can only route to a directly connected Destination.

DefaultMessageRouter constructs compact BlindedMessagePaths on a best-effort basis. That is, if appropriate SCID information is available for the intermediate peers, it will default to creating compact paths.

§Compact Blinded Paths

Compact blinded paths use short channel IDs (SCIDs) instead of pubkeys, resulting in smaller serialization. This is particularly useful when encoding data into space-constrained formats such as QR codes. The SCID is communicated via a MessageForwardNode, but may be None to allow for graceful degradation.

Note: If any SCID in the blinded path becomes invalid, the entire compact blinded path may fail to route. For the immediate hop, this can happen if the corresponding channel is closed. For other intermediate hops, it can happen if the channel is closed or modified (e.g., due to splicing).

§Privacy

Creating BlindedMessagePaths may affect privacy since, if a suitable path cannot be found, it will create a one-hop path using the recipient as the introduction node if it is an announced node. Otherwise, there is no way to find a path to the introduction node in order to send a message, and thus an Err is returned.

Implementations§

Source§

impl<G: Deref<Target = NetworkGraph<L>>, L: Deref, ES: Deref> DefaultMessageRouter<G, L, ES>

Source

pub fn new(network_graph: G, entropy_source: ES) -> Self

Creates a DefaultMessageRouter using the given NetworkGraph.

Trait Implementations§

Source§

impl<G: Deref<Target = NetworkGraph<L>>, L: Deref, ES: Deref> MessageRouter for DefaultMessageRouter<G, L, ES>

Source§

fn find_path( &self, sender: PublicKey, peers: Vec<PublicKey>, destination: Destination, ) -> Result<OnionMessagePath, ()>

Returns a route for sending an OnionMessage to the given Destination.
Source§

fn create_blinded_paths<T: Signing + Verification>( &self, recipient: PublicKey, local_node_receive_key: ReceiveAuthKey, context: MessageContext, peers: Vec<MessageForwardNode>, secp_ctx: &Secp256k1<T>, ) -> Result<Vec<BlindedMessagePath>, ()>

Creates BlindedMessagePaths to the recipient node. The nodes in peers are assumed to be direct peers with the recipient.

Auto Trait Implementations§

§

impl<G, L, ES> Freeze for DefaultMessageRouter<G, L, ES>
where G: Freeze, ES: Freeze,

§

impl<G, L, ES> RefUnwindSafe for DefaultMessageRouter<G, L, ES>

§

impl<G, L, ES> Send for DefaultMessageRouter<G, L, ES>
where G: Send, ES: Send,

§

impl<G, L, ES> Sync for DefaultMessageRouter<G, L, ES>
where G: Sync, ES: Sync,

§

impl<G, L, ES> Unpin for DefaultMessageRouter<G, L, ES>
where G: Unpin, ES: Unpin,

§

impl<G, L, ES> UnwindSafe for DefaultMessageRouter<G, L, ES>
where G: UnwindSafe, ES: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.