pub struct PaymentParameters {
    pub payee: Payee,
    pub expiry_time: Option<u64>,
    pub max_total_cltv_expiry_delta: u32,
    pub max_path_count: u8,
    pub max_channel_saturation_power_of_half: u8,
    pub previously_failed_channels: Vec<u64>,
}
Expand description

Information used to route a payment.

Fields§

§payee: Payee

Information about the payee, such as their features and route hints for their channels.

§expiry_time: Option<u64>

Expiration of a payment to the payee, in seconds relative to the UNIX epoch.

§max_total_cltv_expiry_delta: u32

The maximum total CLTV delta we accept for the route. Defaults to DEFAULT_MAX_TOTAL_CLTV_EXPIRY_DELTA.

§max_path_count: u8

The maximum number of paths that may be used by (MPP) payments. Defaults to DEFAULT_MAX_PATH_COUNT.

§max_channel_saturation_power_of_half: u8

Selects the maximum share of a channel’s total capacity which will be sent over a channel, as a power of 1/2. A higher value prefers to send the payment using more MPP parts whereas a lower value prefers to send larger MPP parts, potentially saturating channels and increasing failure probability for those paths.

Note that this restriction will be relaxed during pathfinding after paths which meet this restriction have been found. While paths which meet this criteria will be searched for, it is ultimately up to the scorer to select them over other paths.

A value of 0 will allow payments up to and including a channel’s total announced usable capacity, a value of one will only use up to half its capacity, two 1/4, etc.

Default value: 2

§previously_failed_channels: Vec<u64>

A list of SCIDs which this payment was previously attempted over and which caused the payment to fail. Future attempts for the same payment shouldn’t be relayed through any of these SCIDs.

Implementations§

§

impl PaymentParameters

pub fn from_node_id( payee_pubkey: PublicKey, final_cltv_expiry_delta: u32, ) -> PaymentParameters

Creates a payee with the node id of the given pubkey.

The final_cltv_expiry_delta should match the expected final CLTV delta the recipient has provided.

pub fn for_keysend( payee_pubkey: PublicKey, final_cltv_expiry_delta: u32, allow_mpp: bool, ) -> PaymentParameters

Creates a payee with the node id of the given pubkey to use for keysend payments.

The final_cltv_expiry_delta should match the expected final CLTV delta the recipient has provided.

Note that MPP keysend is not widely supported yet. The allow_mpp lets you choose whether your router will be allowed to find a multi-part route for this payment. If you set allow_mpp to true, you should ensure a payment secret is set on send, likely via RecipientOnionFields::secret_only.

pub fn from_bolt12_invoice(invoice: &Bolt12Invoice) -> PaymentParameters

Creates parameters for paying to a blinded payee from the provided invoice. Sets Payee::Blinded::route_hints, Payee::Blinded::features, and PaymentParameters::expiry_time.

pub fn blinded( blinded_route_hints: Vec<(BlindedPayInfo, BlindedPath)>, ) -> PaymentParameters

Creates parameters for paying to a blinded payee from the provided blinded route hints.

pub fn with_bolt12_features( self, features: Features<Bolt12InvoiceContext>, ) -> Result<PaymentParameters, ()>

Includes the payee’s features. Errors if the parameters were not initialized with PaymentParameters::from_bolt12_invoice.

This is not exported to bindings users since bindings don’t support move semantics

pub fn with_bolt11_features( self, features: Features<Bolt11InvoiceContext>, ) -> Result<PaymentParameters, ()>

Includes the payee’s features. Errors if the parameters were initialized with PaymentParameters::from_bolt12_invoice.

This is not exported to bindings users since bindings don’t support move semantics

pub fn with_route_hints( self, route_hints: Vec<RouteHint>, ) -> Result<PaymentParameters, ()>

Includes hints for routing to the payee. Errors if the parameters were initialized with PaymentParameters::from_bolt12_invoice.

This is not exported to bindings users since bindings don’t support move semantics

pub fn with_expiry_time(self, expiry_time: u64) -> PaymentParameters

Includes a payment expiration in seconds relative to the UNIX epoch.

This is not exported to bindings users since bindings don’t support move semantics

pub fn with_max_total_cltv_expiry_delta( self, max_total_cltv_expiry_delta: u32, ) -> PaymentParameters

Includes a limit for the total CLTV expiry delta which is considered during routing

This is not exported to bindings users since bindings don’t support move semantics

pub fn with_max_path_count(self, max_path_count: u8) -> PaymentParameters

Includes a limit for the maximum number of payment paths that may be used.

This is not exported to bindings users since bindings don’t support move semantics

pub fn with_max_channel_saturation_power_of_half( self, max_channel_saturation_power_of_half: u8, ) -> PaymentParameters

Includes a limit for the maximum share of a channel’s total capacity that can be sent over, as a power of 1/2. See PaymentParameters::max_channel_saturation_power_of_half.

This is not exported to bindings users since bindings don’t support move semantics

Trait Implementations§

§

impl Clone for PaymentParameters

§

fn clone(&self) -> PaymentParameters

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
§

impl Debug for PaymentParameters

§

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

Formats the value using the given formatter. Read more
§

impl Hash for PaymentParameters

§

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

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
§

impl PartialEq for PaymentParameters

§

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

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

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

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

impl ReadableArgs<u32> for PaymentParameters

§

fn read<R>( reader: &mut R, default_final_cltv_expiry_delta: u32, ) -> Result<PaymentParameters, DecodeError>
where R: Read,

Reads a Self in from the given Read.
§

impl Writeable for PaymentParameters

§

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

Writes self out to the given Writer.
§

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

Writes self out to a Vec<u8>.
§

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.
§

impl Eq for PaymentParameters

§

impl StructuralPartialEq for PaymentParameters

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
§

impl<T> Any for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

§

fn type_name(&self) -> &'static str

§

impl<T> AnySync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

§

impl<T> AsAny for T
where T: Any,

§

fn as_any(&self) -> &(dyn Any + 'static)

§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

§

fn type_name(&self) -> &'static str

Gets the type name of self
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> Downcast for T
where T: AsAny + ?Sized,

§

fn is<T>(&self) -> bool
where T: AsAny,

Returns true if the boxed type is the same as T. Read more
§

fn downcast_ref<T>(&self) -> Option<&T>
where T: AsAny,

Forward to the method defined on the type Any.
§

fn downcast_mut<T>(&mut self) -> Option<&mut T>
where T: AsAny,

Forward to the method defined on the type Any.
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

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

source§

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

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> DartSafe for T

§

impl<T> Sequence for T
where T: Eq + Hash,