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 get_payee_pub_key(&self) -> PublicKey
pub fn get_payee_pub_key(&self) -> PublicKey
Recover the payee’s public key if one was included in the invoice, otherwise return the recovered public key from the signature
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 for Bolt11Invoice
impl PartialEq for Bolt11Invoice
source§impl PartialOrd for Bolt11Invoice
impl PartialOrd for Bolt11Invoice
source§impl Serialize for Bolt11Invoice
Available on crate feature serde
only.
impl Serialize for Bolt11Invoice
serde
only.impl Eq for Bolt11Invoice
impl StructuralPartialEq for Bolt11Invoice
Auto Trait Implementations§
impl Freeze for Bolt11Invoice
impl RefUnwindSafe for Bolt11Invoice
impl Send for Bolt11Invoice
impl Sync for Bolt11Invoice
impl Unpin for Bolt11Invoice
impl UnwindSafe for Bolt11Invoice
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)