LN.capital Profile picture
Nov 6 23 tweets 5 min read
BOLT 12 is a sleeping giant.

But 99% of Bitcoiners don’t understand it yet.

In this thread, we’ll break it down as simply as possible:
Firstly, what is a BOLT?

BOLT stands for Basis of Lightning Technology

It’s a type of draft specification, similar to a BIP.
BOLT 12 is being developed on @blockstream’s c-lightning by @rusty_russel

When finalized, it will need to be implemented by either eclair @acinq or lnd @lightning to be considered ‘activated’
So what problems does BOLT 12 solve?

To answer this question, let’s take a look at the current invoicing protocol on Lightning, BOLT 11

BOLT 11 Invoices have three main components:

1. A Destination(Node pubkey)
2. An amount(denominated in sats)
3. A payment secret(hash)
So what are the limitations of BOLT 11?
1. A BOLT 11 invoice can only be used once. As soon as the invoice is created, the payment secret can be leaked. If you were to create a new invoice with the same secret, someone could discover the secret and claim funds that aren’t theirs.
2. Because each invoice can only be used once, they must be generated in real-time. This means that BOLT 11 invoices aren’t ideal for donation pages, printed price tags, and other asynchronous payment scenarios.
For example, if you were selling apples in a grocery store and printed price tags on them denominated in sats, the USD value may increase before someone buys your apples. This leaves merchants exposed to BTC’s volatility until BTC is widely adopted as a unit of account.
3. BOLT 11 invoices can only be used to receive, not send. This prevents the use of credit invoices.

For example- a BOLT 11 Lightning ATM would not be able to send you sats in exchange for dollars, you would have to create an invoice and send it to the ATM(not ideal UX).
With BOLT 12, you would insert your fiat dollars, scan a QR code, and the ATM would pay you.
To summarize:

BOLT 11 invoices can only be used once(insecure)

They MUST be generated in real-time(bad for donations, price tags)

BOLT 11 invoices can only be used to receive, not send.
So what’s BOLT 12?

In short, BOLT 12 is a new specification for Lightning invoices.

It consists of a new type of invoice called an “offer”.

You can think of an offer as a ‘meta’ invoice- an invoice on top of an invoice.
You can scan a BOLT 12 offer and your wallet will prompt you to pay it, just like BOLT 11.

But it could also offer to send YOU money, like in the ATM example above.
Unlike a BOLT 11 invoice, you can reuse them to create static Lightning invoices on donation pages, billboards, or even a tattoo(although, tattoos aren’t recommended until the BOLT is fully ratified😂)
Now you’re probably thinking, “this sounds a lot like LNURL. Why not just use that?”

The main difference is that BOLT 12 offers are Lightning-native, i.e- they do not require a web server, TLS certificate, and a domain name.
BOLT 12 is a protocol layer solution to the invoice problem, while LNURL is an application layer solution.

This means BOLT 12 has better privacy, less centralization risk (DNS), and better UX for non-technical users.
What can we use BOLT 12 for?

1. Subscriptions.

BOLT 12 offers can ask users to pay an invoice every day, week, or month(denominated in USD or sats)

Wallets still need to build out this functionality, but the infrastructure will be in place.
2. Bitcoin Lightning ATMs

Offers can send you money in the form of a credit invoice.

This was previously impossible, and allows for better UX, which leads to adoption.
3. Private Refunds

Instead of a user creating an invoice and sending it to a merchant for them to pay, a user can scan a ‘refund’ offer and receive their sats without creating their own invoice.

This is more private for the receiver, and has better UX overall.
TLDR:

BOLT 12 is a draft specification for a new ‘meta’ invoice called an offer.

Offers are static, and allow users and merchants to both receive AND send.

Because offers are persistent, and can be denominated in USD, they remove BTC volatility for merchants.
BOLT 12 has many other features, including privacy enhancements, that were outside the scope of this thread.

Comment below if you want a part 2!

Thanks for reading, and follow us for more.
Additional Resources:

bolt11.org

bolt12.org

If you’re running a #LightningNetwork node you should take a look at Torq: github.com/lncapital/torq

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with LN.capital

LN.capital Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(