Struct lightning_invoice::Bolt11Invoice
source · pub struct Bolt11Invoice { /* private fields */ }
Expand description
Represents a syntactically and semantically correct lightning BOLT11 invoice.
There are three ways to construct a Bolt11Invoice
:
- using
InvoiceBuilder
- using
Bolt11Invoice::from_signed
- using
str::parse::<Bolt11Invoice>(&str)
(seeBolt11Invoice::from_str
)
Implementations§
source§impl Bolt11Invoice
impl Bolt11Invoice
sourcepub fn signable_hash(&self) -> [u8; 32]
pub fn signable_hash(&self) -> [u8; 32]
The hash of the RawBolt11Invoice
that was signed.
sourcepub fn into_signed_raw(self) -> SignedRawBolt11Invoice
pub fn into_signed_raw(self) -> SignedRawBolt11Invoice
Transform the Bolt11Invoice
into its unchecked version.
sourcepub fn check_signature(&self) -> Result<(), Bolt11SemanticError>
pub fn check_signature(&self) -> Result<(), Bolt11SemanticError>
Check that the invoice is signed correctly and that key recovery works
sourcepub fn from_signed(
signed_invoice: SignedRawBolt11Invoice
) -> Result<Self, Bolt11SemanticError>
pub fn from_signed( signed_invoice: SignedRawBolt11Invoice ) -> Result<Self, Bolt11SemanticError>
Constructs a Bolt11Invoice
from a SignedRawBolt11Invoice
by checking all its invariants.
use lightning_invoice::*;
let invoice = "lnbc100p1psj9jhxdqud3jxktt5w46x7unfv9kz6mn0v3jsnp4q0d3p2sfluzdx45tqcs\
h2pu5qc7lgq0xs578ngs6s0s68ua4h7cvspp5q6rmq35js88zp5dvwrv9m459tnk2zunwj5jalqtyxqulh0l\
5gflssp5nf55ny5gcrfl30xuhzj3nphgj27rstekmr9fw3ny5989s300gyus9qyysgqcqpcrzjqw2sxwe993\
h5pcm4dxzpvttgza8zhkqxpgffcrf5v25nwpr3cmfg7z54kuqq8rgqqqqqqqq2qqqqq9qq9qrzjqd0ylaqcl\
j9424x9m8h2vcukcgnm6s56xfgu3j78zyqzhgs4hlpzvznlugqq9vsqqqqqqqlgqqqqqeqq9qrzjqwldmj9d\
ha74df76zhx6l9we0vjdquygcdt3kssupehe64g6yyp5yz5rhuqqwccqqyqqqqlgqqqqjcqq9qrzjqf9e58a\
guqr0rcun0ajlvmzq3ek63cw2w282gv3z5uupmuwvgjtq2z55qsqqg6qqqyqqqrtnqqqzq3cqygrzjqvphms\
ywntrrhqjcraumvc4y6r8v4z5v593trte429v4hredj7ms5z52usqq9ngqqqqqqqlgqqqqqqgq9qrzjq2v0v\
p62g49p7569ev48cmulecsxe59lvaw3wlxm7r982zxa9zzj7z5l0cqqxusqqyqqqqlgqqqqqzsqygarl9fh3\
8s0gyuxjjgux34w75dnc6xp2l35j7es3jd4ugt3lu0xzre26yg5m7ke54n2d5sym4xcmxtl8238xxvw5h5h5\
j5r6drg6k6zcqj0fcwg";
let signed = invoice.parse::<SignedRawBolt11Invoice>().unwrap();
assert!(Bolt11Invoice::from_signed(signed).is_ok());
sourcepub fn timestamp(&self) -> SystemTime
Available on crate feature std
only.
pub fn timestamp(&self) -> SystemTime
std
only.Returns the Bolt11Invoice
’s timestamp (should equal its creation time)
sourcepub fn duration_since_epoch(&self) -> Duration
pub fn duration_since_epoch(&self) -> Duration
Returns the Bolt11Invoice
’s timestamp as a duration since the Unix epoch
sourcepub fn tagged_fields(
&self
) -> FilterMap<Iter<'_, RawTaggedField>, fn(_: &RawTaggedField) -> Option<&TaggedField>>
pub fn tagged_fields( &self ) -> FilterMap<Iter<'_, RawTaggedField>, fn(_: &RawTaggedField) -> Option<&TaggedField>>
Returns an iterator over all tagged fields of this Bolt11Invoice
.
This is not exported to bindings users as there is not yet a manual mapping for a FilterMap
sourcepub fn payment_hash(&self) -> &Hash
pub fn payment_hash(&self) -> &Hash
Returns the hash to which we will receive the preimage on completion of the payment
sourcepub fn description(&self) -> Bolt11InvoiceDescription<'_>
pub fn description(&self) -> Bolt11InvoiceDescription<'_>
Return the description or a hash of it for longer ones
This is not exported to bindings users because we don’t yet export Bolt11InvoiceDescription
sourcepub fn payee_pub_key(&self) -> Option<&PublicKey>
pub fn payee_pub_key(&self) -> Option<&PublicKey>
Get the payee’s public key if one was included in the invoice
sourcepub fn payment_secret(&self) -> &PaymentSecret
pub fn payment_secret(&self) -> &PaymentSecret
Get the payment secret if one was included in the invoice
sourcepub fn payment_metadata(&self) -> Option<&Vec<u8>>
pub fn payment_metadata(&self) -> Option<&Vec<u8>>
Get the payment metadata blob if one was included in the invoice
sourcepub fn features(&self) -> Option<&Bolt11InvoiceFeatures>
pub fn features(&self) -> Option<&Bolt11InvoiceFeatures>
Get the invoice features if they were included in the invoice
sourcepub fn recover_payee_pub_key(&self) -> PublicKey
pub fn recover_payee_pub_key(&self) -> PublicKey
Recover the payee’s public key (only to be used if none was included in the invoice)
sourcepub fn expires_at(&self) -> Option<Duration>
pub fn expires_at(&self) -> Option<Duration>
Returns the Duration since the Unix epoch at which the invoice expires. Returning None if overflow occurred.
sourcepub fn expiry_time(&self) -> Duration
pub fn expiry_time(&self) -> Duration
Returns the invoice’s expiry time, if present, otherwise DEFAULT_EXPIRY_TIME
.
sourcepub fn is_expired(&self) -> bool
Available on crate feature std
only.
pub fn is_expired(&self) -> bool
std
only.Returns whether the invoice has expired.
sourcepub fn duration_until_expiry(&self) -> Duration
Available on crate feature std
only.
pub fn duration_until_expiry(&self) -> Duration
std
only.Returns the Duration remaining until the invoice expires.
sourcepub fn expiration_remaining_from_epoch(&self, time: Duration) -> Duration
pub fn expiration_remaining_from_epoch(&self, time: Duration) -> Duration
Returns the Duration remaining until the invoice expires given the current time.
time
is the timestamp as a duration since the Unix epoch.
sourcepub fn would_expire(&self, at_time: Duration) -> bool
pub fn would_expire(&self, at_time: Duration) -> bool
Returns whether the expiry time would pass at the given point in time.
at_time
is the timestamp as a duration since the Unix epoch.
sourcepub fn min_final_cltv_expiry_delta(&self) -> u64
pub fn min_final_cltv_expiry_delta(&self) -> u64
Returns the invoice’s min_final_cltv_expiry_delta
time, if present, otherwise
DEFAULT_MIN_FINAL_CLTV_EXPIRY_DELTA
.
sourcepub fn fallbacks(&self) -> Vec<&Fallback>
pub fn fallbacks(&self) -> Vec<&Fallback>
Returns a list of all fallback addresses
This is not exported to bindings users as we don’t support Vec<&NonOpaqueType>
sourcepub fn fallback_addresses(&self) -> Vec<Address>
pub fn fallback_addresses(&self) -> Vec<Address>
Returns a list of all fallback addresses as Address
es
sourcepub fn private_routes(&self) -> Vec<&PrivateRoute>
pub fn private_routes(&self) -> Vec<&PrivateRoute>
Returns a list of all routes included in the invoice
sourcepub fn route_hints(&self) -> Vec<RouteHint>
pub fn route_hints(&self) -> Vec<RouteHint>
Returns a list of all routes included in the invoice as the underlying hints
sourcepub fn network(&self) -> Network
pub fn network(&self) -> Network
Returns the network for which the invoice was issued
This is not exported to bindings users, see Self::currency
instead.
sourcepub fn amount_milli_satoshis(&self) -> Option<u64>
pub fn amount_milli_satoshis(&self) -> Option<u64>
Returns the amount if specified in the invoice as millisatoshis.
Trait Implementations§
source§impl Clone for Bolt11Invoice
impl Clone for Bolt11Invoice
source§fn clone(&self) -> Bolt11Invoice
fn clone(&self) -> Bolt11Invoice
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for Bolt11Invoice
impl Debug for Bolt11Invoice
source§impl<'de> Deserialize<'de> for Bolt11Invoice
Available on crate feature serde
only.
impl<'de> Deserialize<'de> for Bolt11Invoice
serde
only.source§fn deserialize<D>(deserializer: D) -> Result<Bolt11Invoice, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Bolt11Invoice, D::Error>where D: Deserializer<'de>,
source§impl Display for Bolt11Invoice
impl Display for Bolt11Invoice
source§impl FromStr for Bolt11Invoice
impl FromStr for Bolt11Invoice
use lightning_invoice::Bolt11Invoice;
let invoice = "lnbc100p1psj9jhxdqud3jxktt5w46x7unfv9kz6mn0v3jsnp4q0d3p2sfluzdx45tqcs\
h2pu5qc7lgq0xs578ngs6s0s68ua4h7cvspp5q6rmq35js88zp5dvwrv9m459tnk2zunwj5jalqtyxqulh0l\
5gflssp5nf55ny5gcrfl30xuhzj3nphgj27rstekmr9fw3ny5989s300gyus9qyysgqcqpcrzjqw2sxwe993\
h5pcm4dxzpvttgza8zhkqxpgffcrf5v25nwpr3cmfg7z54kuqq8rgqqqqqqqq2qqqqq9qq9qrzjqd0ylaqcl\
j9424x9m8h2vcukcgnm6s56xfgu3j78zyqzhgs4hlpzvznlugqq9vsqqqqqqqlgqqqqqeqq9qrzjqwldmj9d\
ha74df76zhx6l9we0vjdquygcdt3kssupehe64g6yyp5yz5rhuqqwccqqyqqqqlgqqqqjcqq9qrzjqf9e58a\
guqr0rcun0ajlvmzq3ek63cw2w282gv3z5uupmuwvgjtq2z55qsqqg6qqqyqqqrtnqqqzq3cqygrzjqvphms\
ywntrrhqjcraumvc4y6r8v4z5v593trte429v4hredj7ms5z52usqq9ngqqqqqqqlgqqqqqqgq9qrzjq2v0v\
p62g49p7569ev48cmulecsxe59lvaw3wlxm7r982zxa9zzj7z5l0cqqxusqqyqqqqlgqqqqqzsqygarl9fh3\
8s0gyuxjjgux34w75dnc6xp2l35j7es3jd4ugt3lu0xzre26yg5m7ke54n2d5sym4xcmxtl8238xxvw5h5h5\
j5r6drg6k6zcqj0fcwg";
assert!(invoice.parse::<Bolt11Invoice>().is_ok());
source§impl Hash for Bolt11Invoice
impl Hash for Bolt11Invoice
source§impl Ord for Bolt11Invoice
impl Ord for Bolt11Invoice
source§fn cmp(&self, other: &Bolt11Invoice) -> Ordering
fn cmp(&self, other: &Bolt11Invoice) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl PartialEq<Bolt11Invoice> for Bolt11Invoice
impl PartialEq<Bolt11Invoice> for Bolt11Invoice
source§fn eq(&self, other: &Bolt11Invoice) -> bool
fn eq(&self, other: &Bolt11Invoice) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd<Bolt11Invoice> for Bolt11Invoice
impl PartialOrd<Bolt11Invoice> for Bolt11Invoice
source§fn partial_cmp(&self, other: &Bolt11Invoice) -> Option<Ordering>
fn partial_cmp(&self, other: &Bolt11Invoice) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl Serialize for Bolt11Invoice
Available on crate feature serde
only.
impl Serialize for Bolt11Invoice
serde
only.