Module invoice_request
Expand description
Data structures and encoding for invoice_request messages.
An InvoiceRequest can be built from a parsed Offer as an “offer to be paid”. It is
typically constructed by a customer and sent to the merchant who had published the corresponding
offer. The recipient of the request responds with a Bolt12Invoice.
For an “offer for money” (e.g., refund, ATM withdrawal), where an offer doesn’t exist as a
precursor, see Refund.
extern crate bitcoin;
extern crate lightning;
use bitcoin::network::constants::Network;
use bitcoin::secp256k1::{KeyPair, PublicKey, Secp256k1, SecretKey};
use lightning::ln::features::OfferFeatures;
use lightning::offers::invoice_request::UnsignedInvoiceRequest;
use lightning::offers::offer::Offer;
use lightning::util::ser::Writeable;
let secp_ctx = Secp256k1::new();
let keys = KeyPair::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32])?);
let pubkey = PublicKey::from(keys);
let mut buffer = Vec::new();
"lno1qcp4256ypq"
    .parse::<Offer>()?
    .request_invoice(vec![42; 64], pubkey)?
    .chain(Network::Testnet)?
    .amount_msats(1000)?
    .quantity(5)?
    .payer_note("foo".to_string())
    .build()?
    .sign(|message: &UnsignedInvoiceRequest|
        Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &keys))
    )
    .expect("failed verifying signature")
    .write(&mut buffer)
    .unwrap();Structs§
- DerivedPayer Id 
- InvoiceRequest::payer_idwill be derived.
- ExplicitPayer Id 
- InvoiceRequest::payer_idwill be explicitly set.
- InvoiceRequest 
- An InvoiceRequestis a request for aBolt12Invoiceformulated from anOffer.
- InvoiceRequest Builder 
- Builds an InvoiceRequestfrom anOfferfor the “offer to be paid” flow.
- InvoiceRequest Fields 
- Fields sent in an InvoiceRequestmessage to include inPaymentContext::Bolt12Offer.
- UnsignedInvoice Request 
- A semantically valid InvoiceRequestthat hasn’t been signed.
- VerifiedInvoice Request 
- An InvoiceRequestthat has been verified byInvoiceRequest::verifyand exposes different ways to respond depending on whether the signing keys were derived.
Constants§
- PAYER_NOTE_ LIMIT 
- The maximum number of characters included in InvoiceRequestFields::payer_note_truncated.
- SIGNATURE_TAG 
- Tag for the hash function used when signing an InvoiceRequest’s merkle root.
Traits§
- PayerIdStrategy 
- Indicates how InvoiceRequest::payer_idwill be set.
- SignInvoice Request Fn 
- A function for signing an UnsignedInvoiceRequest.