pub struct RecipientOnionFields {
pub payment_secret: Option<PaymentSecret>,
pub payment_metadata: Option<Vec<u8>>,
}
Expand description
Information which is provided, encrypted, to the payment recipient when sending HTLCs.
This should generally be constructed with data communicated to us from the recipient (via a BOLT11 or BOLT12 invoice).
Fields§
§payment_secret: Option<PaymentSecret>
The PaymentSecret
is an arbitrary 32 bytes provided by the recipient for us to repeat
in the onion. It is unrelated to payment_hash
(or PaymentPreimage
) and exists to
authenticate the sender to the recipient and prevent payment-probing (deanonymization)
attacks.
If you do not have one, the Route
you pay over must not contain multiple paths as
multi-path payments require a recipient-provided secret.
Some implementations may reject spontaneous payments with payment secrets, so you may only want to provide a secret for a spontaneous payment if MPP is needed and you know your recipient will not reject it.
payment_metadata: Option<Vec<u8>>
The payment metadata serves a similar purpose as Self::payment_secret
but is of
arbitrary length. This gives recipients substantially more flexibility to receive
additional data.
In LDK, while the Self::payment_secret
is fixed based on an internal authentication
scheme to authenticate received payments against expected payments and invoices, this field
is not used in LDK for received payments, and can be used to store arbitrary data in
invoices which will be received with the payment.
Note that this field was added to the lightning specification more recently than
Self::payment_secret
and while nearly all lightning senders support secrets, metadata
may not be supported as universally.
Implementations§
§impl RecipientOnionFields
impl RecipientOnionFields
pub fn secret_only(payment_secret: PaymentSecret) -> RecipientOnionFields
pub fn secret_only(payment_secret: PaymentSecret) -> RecipientOnionFields
Creates a RecipientOnionFields
from only a PaymentSecret
. This is the most common
set of onion fields for today’s BOLT11 invoices - most nodes require a PaymentSecret
but do not require or provide any further data.
pub fn spontaneous_empty() -> RecipientOnionFields
pub fn spontaneous_empty() -> RecipientOnionFields
Creates a new RecipientOnionFields
with no fields. This generally does not create
payable HTLCs except for single-path spontaneous payments, i.e. this should generally
only be used for calls to ChannelManager::send_spontaneous_payment
. If you are sending
a spontaneous MPP this will not work as all MPP require payment secrets; you may
instead want to use RecipientOnionFields::secret_only
.
Trait Implementations§
§impl Clone for RecipientOnionFields
impl Clone for RecipientOnionFields
§fn clone(&self) -> RecipientOnionFields
fn clone(&self) -> RecipientOnionFields
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for RecipientOnionFields
impl Debug for RecipientOnionFields
§impl PartialEq for RecipientOnionFields
impl PartialEq for RecipientOnionFields
§fn eq(&self, other: &RecipientOnionFields) -> bool
fn eq(&self, other: &RecipientOnionFields) -> bool
self
and other
values to be equal, and is used
by ==
.§impl Readable for RecipientOnionFields
impl Readable for RecipientOnionFields
§fn read<R>(reader: &mut R) -> Result<RecipientOnionFields, DecodeError>where
R: Read,
fn read<R>(reader: &mut R) -> Result<RecipientOnionFields, DecodeError>where
R: Read,
Self
in from the given Read
.§impl Writeable for RecipientOnionFields
impl Writeable for RecipientOnionFields
impl Eq for RecipientOnionFields
impl StructuralPartialEq for RecipientOnionFields
Auto Trait Implementations§
impl Freeze for RecipientOnionFields
impl RefUnwindSafe for RecipientOnionFields
impl Send for RecipientOnionFields
impl Sync for RecipientOnionFields
impl Unpin for RecipientOnionFields
impl UnwindSafe for RecipientOnionFields
Blanket Implementations§
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§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default 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