Glossario / Lightning e layer 2
Fattura BOLT11
Noto anche come Fattura Lightning, BOLT 11.
- Che cos'è una fattura BOLT11?
- Una fattura BOLT11 è la lunga stringa che inizia con lnbc e che un wallet Lightning genera per richiedere un pagamento, codificando l'importo, un hash di pagamento, una scadenza e una firma.
Ogni pagamento Lightning parte da una di queste. La fattura è vincolata a un hash di pagamento da 256 bit che solo il destinatario può sbloccare, e scade dopo un'ora salvo che l'emittente indichi diversamente, ed è per questo che uno screenshot di un vecchio codice QR è inutile. Pagarne una è sicuro nel senso che il denaro o arriva al nodo indicato o torna a te.
Come funziona
Una fattura BOLT11 è una stringa bech32 con un prefisso che indica la rete e un corpo fatto di campi etichettati.
Il prefisso, chiamato parte leggibile dagli esseri umani, è lnbc sulla mainnet, lntb sulla testnet, lntbs sulla signet e lnbcrt sulla regtest. Subito dopo viene l'importo, scritto come un numero più una lettera moltiplicatrice: m per i millesimi di bitcoin, u per i milionesimi, n per i miliardesimi e p per i millesimi di miliardesimo. Quindi lnbc2500u chiede 0,0025 bitcoin. Omettere del tutto l'importo produce una fattura aperta che il pagatore compila.
Il corpo è una sequenza di campi etichettati, ciascuno con un tag di un solo carattere, una lunghezza e un valore. Due sono obbligatori: l'hash di pagamento, tag p, 256 bit scritti come 52 caratteri bech32, e il segreto di pagamento, tag s, altri 52 caratteri che il pagatore deve ripetere nel payload onion finale. Il BOLT 11 dice a chi scrive di includerne esattamente uno per ciascuno, e dice a chi legge di far fallire subito il pagamento quando non è presente alcun campo s valido. Poi vengono quelli facoltativi: una descrizione o, per le descrizioni lunghe, un hash della descrizione; una scadenza, predefinita a 3600 secondi; un delta di scadenza CLTV finale minimo, predefinito a 18 blocchi, che è il margine di sicurezza che il destinatario vuole sull'ultimo salto; un id del nodo del beneficiario; un indirizzo on-chain di riserva; e suggerimenti di instradamento che indicano al pagatore come raggiungere un nodo i cui canali non sono annunciati.
Il tutto è firmato. La firma è di 520 bit, un valore di 64 byte più un byte di recupero, ed è ciò che permette a un wallet di ricavare la destinazione del pagamento dalla fattura anche quando non è presente alcun campo con l'id del nodo. Alla fine c'è un checksum bech32 di sei caratteri, così un carattere digitato male viene individuato invece di inviare denaro nel nulla.
L'hash di pagamento è il meccanismo che rende una fattura più di un file di testo. Il destinatario genera una preimmagine casuale, ne calcola l'hash e mette l'hash nella fattura. Ogni salto lungo il percorso blocca l'importo inoltrato su quello stesso hash, e solo rivelando la preimmagine il denaro viene liberato. Un pagamento regolato lascia quindi al pagatore una preimmagine il cui hash corrisponde a quello della fattura, cioè una ricevuta crittografica che nessun esercente può plausibilmente negare.
Perché questo conta quando compri bitcoin
È sulla fattura che si commettono diversi errori evitabili quando prelevi da un exchange.
Il primo è la scadenza. I flussi di prelievo da un exchange possono richiedere minuti per essere elaborati, e una fattura generata all'inizio di un flusso lento può essere scaduta nel momento in cui viene pagata. Se un prelievo Lightning fallisce senza un motivo evidente, rigenera la fattura nel tuo wallet prima di supporre che l'exchange sia guasto. Il valore predefinito è un'ora, ma i wallet che si aspettano pagamenti rapidi spesso lo impostano a dieci o quindici minuti.
Il secondo è l'importo. Una fattura che contiene un importo può essere pagata solo per quell'importo, che è esattamente ciò che vuoi, perché elimina la possibilità di digitare uno zero in più. Una fattura senza importo, talvolta chiamata fattura aperta o a importo zero, è comoda per le donazioni e pericolosa in un flusso di prelievo. Preferisci la versione con la cifra già inclusa.
Il terzo è il riutilizzo. Una fattura BOLT11 è monouso per concezione. Pubblicarne una su una pagina di donazioni significa che il pagamento del secondo donatore o fallisce o, su un ricevente mal costruito, paga di nuovo l'hash del primo donatore. È proprio il problema che le offerte BOLT12 sono state concepite per risolvere, ed è per questo che quella specifica è stata integrata nello standard Lightning a settembre 2024, il primo nuovo BOLT dal 2017. Finché sia il tuo wallet sia la tua controparte non gestiscono le offerte, un indirizzo Lightning è il modo pratico per pubblicare una destinazione riutilizzabile.
Infine, verifica che l'exchange gestisca davvero Lightning prima di fare piani su questa base. Strike, recensito da questo sito, gestisce prelievi sia tramite Lightning sia on-chain. Molte delle piattaforme nel nostro confronto tra exchange non lo gestiscono, e su quelle il modo più economico di spostare importi piccoli è non spostarli spesso.
Leggere una fattura campo per campo
Se smonti una fattura breve, smette di sembrare rumore.
Una stringa che inizia con lnbc1500n ti dice due cose prima ancora di decodificare qualcosa: è una fattura della mainnet e chiede 1500 nanobitcoin, cioè 0,0000015 bitcoin, ovvero 150 satoshi. Quello che segue è un timestamp, poi i campi etichettati. Un campo d porta una descrizione breve come "table 4"; un campo x di 600 imposterebbe la scadenza a dieci minuti invece dell'ora predefinita; un campo c sostituirebbe il delta CLTV finale di 18 blocchi se il destinatario vuole un margine di sicurezza maggiore.
Se il nodo del destinatario non ha canali pubblici, un campo r porta un suggerimento di instradamento: l'id del nodo di un peer ben connesso, l'id breve del canale da usare, e la commissione e il delta di quel peer. Senza di esso, il tuo wallet guarderebbe il grafo pubblico, non vedrebbe alcun percorso e rinuncerebbe. È per questo che le fatture dei wallet mobili sono spesso sensibilmente più lunghe di quelle dei grandi nodi pubblici.
Fattura BOLT11 vs URI Bitcoin
Una fattura BOLT11 è una richiesta di pagamento Lightning; un URI Bitcoin è una richiesta di pagamento on-chain. La forma URI, bitcoin: seguita da un indirizzo e da parametri facoltativi, punta alla blockchain e può essere pagata da qualsiasi wallet, un numero qualsiasi di volte, per un importo qualsiasi. Una fattura punta a un nodo, scade ed è pensata per essere pagata una volta sola. I wallet mostrano sempre più spesso un codice QR unificato che porta entrambe, così il pagatore può scegliere, ma i due payload sono standard distinti con modi distinti di fallire.
Fattura BOLT11 vs indirizzo Lightning
Una fattura BOLT11 è la richiesta di pagamento in sé; un indirizzo Lightning è un modo per andarne a prendere una. Digitare in un wallet un indirizzo come you@example.com attiva una richiesta HTTPS a quel dominio, che risponde con una fattura BOLT11 appena generata per l'importo che hai scelto. L'indirizzo è riutilizzabile e leggibile dagli esseri umani perché non è affatto una richiesta di pagamento: è un puntatore a un server che ne conierà una su richiesta.