Struct PaymentParameters
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
impl PaymentParameters
pub fn from_node_id(
payee_pubkey: PublicKey,
final_cltv_expiry_delta: u32,
) -> 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
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
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
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, ()>
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, ()>
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, ()>
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
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
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
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
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
impl Clone for PaymentParameters
§fn clone(&self) -> PaymentParameters
fn clone(&self) -> PaymentParameters
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for PaymentParameters
impl Debug for PaymentParameters
§impl Hash for PaymentParameters
impl Hash for PaymentParameters
§impl PartialEq for PaymentParameters
impl PartialEq for PaymentParameters
§impl ReadableArgs<u32> for PaymentParameters
impl ReadableArgs<u32> for PaymentParameters
§fn read<R>(
reader: &mut R,
default_final_cltv_expiry_delta: u32,
) -> Result<PaymentParameters, DecodeError>where
R: Read,
fn read<R>(
reader: &mut R,
default_final_cltv_expiry_delta: u32,
) -> Result<PaymentParameters, DecodeError>where
R: Read,
Self
in from the given Read
.§impl Writeable for PaymentParameters
impl Writeable for PaymentParameters
impl Eq for PaymentParameters
impl StructuralPartialEq for PaymentParameters
Auto Trait Implementations§
impl Freeze for PaymentParameters
impl RefUnwindSafe for PaymentParameters
impl Send for PaymentParameters
impl Sync for PaymentParameters
impl Unpin for PaymentParameters
impl UnwindSafe for PaymentParameters
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request