Offers
Also covering BOLT12
Offers is a protocol for Lightning that allows nodes to request and receive invoices over LN.
An example of a common use of this protocol would be that a merchant generates a QR code, the customer scans the QR code, the customer’s LN node sends some of the details from the QR code (such as an order ID number) to the merchant’s node over LN, the merchant’s node returns an invoice (also over LN), the invoice is displayed to the user (who agrees to pay), and the payment is sent.
Although the above use case was previously addressed using BOLT11 invoices, the ability for the spending and receiving nodes to communicate directly before attempting payment provides much more flexibility. For example, the requested amount could be specified in the terms of a non-Bitcoin currency (e.g. USD); if the BTC-to-USD exchange rate changed too much since the invoice was received, the two nodes could automatically negotiate an update to the payable BTC amount to make it again consistent with the requested USD amount.
Interactive communication between the nodes also enables features that aren’t possible with BOLT11’s one-time-use hashlocks, such as recurring payments for subscriptions and donations.
Primary code and documentation
Optech newsletter and website mentions
2024
- LDK #3446 adds support for including a trampoline payment flag in a BOLT12 invoice
- BOLT12 update to allow optional inclusion of BIP353 human-readable Bitcoin payment instructions
- Core Lightning #7833 enables the offers protocol by default
- BOLTs #798 merges the offers protocol specification which introduces BOLT12
- LDK #3140 adds support for paying static BOLT12 invoices to send async payments
- Proposal to allow opt-in identification and authentication of LN payers when using offers
- LDK #3139 improves the security of BOLT12 offers by authenticating the use of blinded paths
- CLN #7474 updates the offers plugin to understand the newly defined experimental TLV ranges
- Core Lightning #7461 adds support for nodes to self-fetch and self-pay BOLT12 offers and invoices
- Discussion of fully implementing offers versus incremently adding features from it
- LDK #3082 adds an interface for building static reusable offers
- LDK #3078 adds support for inspection of BOLT12-returned invoices before payment
- Human readable payment instructions proposed that are compatible with offers
2023
- Ideas for creating a Lightning Address protocol compatible with offers
- Eclair #2752 allows an offer to reference a node using a short channel identifier (SCID)
- LDK #2371 adds support for managing payments using offers
- LDK #1977 allows serializing and deserializing offers
- Eclair #2479 adds support for paying offers
- Core Lightning #5892 updates CLN’s implementation of the offers protocol
- LDK #1738 and #1908 provide additional features for handling offers
2022
- Eclair #2499 allows specifying a blinded route to use when using a BOLT12 offer
- Core Lightning #5646 updates the implementation of offers to remove x-only public keys
- Eclair #2416 adds support for receiving payments requested using the offers protocol
- Eclair #2117 adds onion message replies in preparation for supporting offers
2021
- 2021 year-in-review: offers
- Summary of LN developer conference, including discussion of offers
- Spark Lightning Wallet adds partial support for offers
- C-Lightning 0.10.1 updates the experimental implementation of offers
- Offers specification updated to no longer require a signature
- Offers specification updated to partly address stuck payments
- C-Lightning 0.9.3 released with experimental offers support
2020
- 2020 year in review: LN offers
- C-Lightning #4255 is the first of a series of PRs for offers
- New direct messages protocol to be used for offers
2019
See also
Previous Topic:
MuSig
Next Topic:
Onion messages