HrnResolution

Enum HrnResolution 

Source
pub enum HrnResolution {
    DNSSEC {
        proof: Option<Vec<u8>>,
        result: String,
    },
    LNURLPay {
        min_value: Amount,
        max_value: Amount,
        expected_description_hash: [u8; 32],
        recipient_description: Option<String>,
        callback: String,
    },
}
Expand description

The first-step resolution of a Human Readable Name.

It can either represent a resolution using BIP 353 and the DNS or the first step resolution of an LNURL-Pay. The second step, resolving a callback URI to a Bolt11Invoice occurs via HrnResolver::resolve_lnurl.

Variants§

§

DNSSEC

The HRN was resolved using BIP 353 and the DNS. The result should contain a BIP 321 bitcoin: URI as well as a DNSSEC proof which allows later verification of the payment instructions.

Fields

§proof: Option<Vec<u8>>

A DNSSEC proof as used in BIP 353.

If the HRN was resolved using BIP 353, this should be set to a full proof which can later be copied to PSBTs for hardware wallet verification or stored as a part of proof of payment.

§result: String

The result of the resolution.

This should contain a string which can be parsed as further payment instructions. For a BIP 353 resolution, this will contain a full BIP 321 bitcoin: URI, for a LN-Address resolution this will contain a lightning BOLT 11 invoice.

§

LNURLPay

The HRN was resolved using LNURL-Pay as an LN-Address. The result contains a callback URI which will be used once we pick an amount to fetch a final Bolt11Invoice.

Fields

§min_value: Amount

The minimum amount which can be sent to the recipient, as specified in the LNURL-Pay initial response.

§max_value: Amount

The maximum amount which can be sent to the recipient, as specified in the LNURL-Pay initial response.

§expected_description_hash: [u8; 32]

The description hash which must appear in the final Bolt11Invoice, committing to the full recipient metadata.

While we could store the full recipient metadata and use it as a committed value in our proof-of-payment, there is no way to ensure it is actually provable against the server/initial payment instructions string because the server can return a Bolt11Invoice signed by any arbitrary public key.

§recipient_description: Option<String>

The text/plain description provided in the LNURL-Pay initial response.

This is generally human-readable and can be displayed to the user as with any other recipient description in payment instructions.

§callback: String

The callback URI which can be used, with a concrete amount, to fetch a final Bolt11Invoice which can be paid.

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> Instrument for T

Source§

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

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

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

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

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

Source§

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