Struct lightning::blinded_path::BlindedPath

source ·
pub struct BlindedPath {
    pub introduction_node: IntroductionNode,
    pub blinding_point: PublicKey,
    pub blinded_hops: Vec<BlindedHop>,
}
Expand description

Onion messages and payments can be sent and received to blinded paths, which serve to hide the identity of the recipient.

Fields§

§introduction_node: IntroductionNode

To send to a blinded path, the sender first finds a route to the unblinded introduction_node, which can unblind its encrypted_payload to find out the onion message or payment’s next hop and forward it along.

§blinding_point: PublicKey

Used by the introduction node to decrypt its encrypted_payload to forward the onion message or payment.

§blinded_hops: Vec<BlindedHop>

The hops composing the blinded path.

Implementations§

source§

impl BlindedPath

source

pub fn one_hop_for_message<ES: EntropySource + ?Sized, T: Signing + Verification>( recipient_node_id: PublicKey, entropy_source: &ES, secp_ctx: &Secp256k1<T> ) -> Result<Self, ()>

Create a one-hop blinded path for a message.

source

pub fn new_for_message<ES: EntropySource + ?Sized, T: Signing + Verification>( node_pks: &[PublicKey], entropy_source: &ES, secp_ctx: &Secp256k1<T> ) -> Result<Self, ()>

Create a blinded path for an onion message, to be forwarded along node_pks. The last node pubkey in node_pks will be the destination node.

Errors if no hops are provided or if node_pk(s) are invalid.

source

pub fn one_hop_for_payment<ES: EntropySource + ?Sized, T: Signing + Verification>( payee_node_id: PublicKey, payee_tlvs: ReceiveTlvs, min_final_cltv_expiry_delta: u16, entropy_source: &ES, secp_ctx: &Secp256k1<T> ) -> Result<(BlindedPayInfo, Self), ()>

Create a one-hop blinded path for a payment.

source

pub fn new_for_payment<ES: EntropySource + ?Sized, T: Signing + Verification>( intermediate_nodes: &[ForwardNode], payee_node_id: PublicKey, payee_tlvs: ReceiveTlvs, htlc_maximum_msat: u64, min_final_cltv_expiry_delta: u16, entropy_source: &ES, secp_ctx: &Secp256k1<T> ) -> Result<(BlindedPayInfo, Self), ()>

Create a blinded path for a payment, to be forwarded along intermediate_nodes.

Errors if:

  • a provided node id is invalid
  • BlindedPayInfo calculation results in an integer overflow
  • any unknown features are required in the provided ForwardTlvs
source

pub fn public_introduction_node_id<'a>( &self, network_graph: &'a ReadOnlyNetworkGraph<'_> ) -> Option<&'a NodeId>

Returns the introduction NodeId of the blinded path, if it is publicly reachable (i.e., it is found in the network graph).

Trait Implementations§

source§

impl Clone for BlindedPath

source§

fn clone(&self) -> BlindedPath

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BlindedPath

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for BlindedPath

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for BlindedPath

source§

fn eq(&self, other: &BlindedPath) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Readable for BlindedPath

source§

fn read<R: Read>(r: &mut R) -> Result<Self, DecodeError>

Reads a Self in from the given Read.
source§

impl Writeable for BlindedPath

source§

fn write<W: Writer>(&self, w: &mut W) -> Result<(), Error>

Writes self out to the given Writer.
source§

fn encode(&self) -> Vec<u8>

Writes self out to a Vec<u8>.
source§

fn serialized_length(&self) -> usize

Gets the length of this object after it has been serialized. This can be overridden to optimize cases where we prepend an object with its length.
source§

impl Eq for BlindedPath

source§

impl StructuralPartialEq for BlindedPath

Auto Trait Implementations§

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> MaybeReadable for T
where T: Readable,

source§

fn read<R>(reader: &mut R) -> Result<Option<T>, DecodeError>
where R: Read,

Reads a Self in from the given Read.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

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>,

§

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.