Glossario / Lightning e layer 2
Scadenza della fattura
- Che cos'è la scadenza della fattura?
- La scadenza della fattura è il campo x di una richiesta di pagamento BOLT11, un numero di secondi contati dal timestamp della fattura stessa, dopo il quale sia il pagatore sia il beneficiario dovrebbero rifiutarla.
Ogni fattura Lightning porta una scadenza, e il conto alla rovescia parte dal momento in cui la fattura è stata firmata, non dal momento in cui ti è arrivata. Se il campo x non è presente, il valore predefinito è 3600 secondi, un'ora. Quindi una fattura rimasta in una chat per gran parte di quell'ora può fallire pochi minuti dopo che ti è arrivata, senza una ragione visibile.
Come funziona
La scadenza della fattura viaggia come campo con tag di tipo 6, scritto con la lettera x, che porta un conteggio di secondi in big-endian.
Una stringa BOLT11 inizia con un timestamp di 35 bit che conta i secondi dal 1º gennaio 1970 UTC, poi i campi con tag, poi una firma. La scadenza è uno di questi campi ed è relativa: il termine è quel timestamp più la scadenza, quindi nulla nella fattura indica un orario leggibile. BOLT11 indica al pagatore di non tentare un pagamento una volta superata quella somma, e al beneficiario di non accettarne uno.
Entrambe le istruzioni sono uno SHOULD e non un MUST, quindi una fattura scaduta non è crittograficamente morta. L'hash di pagamento funziona ancora; ciò che ferma il pagamento è la policy dei due estremi, non un blocco. Il tuo wallet rifiuta di tentare, e un nodo che ha scartato la preimage non potrebbe comunque regolare il pagamento.
Il valore è impacchettato in gruppi di cinque bit e deve usare la lunghezza più corta che lo contenga, senza gruppi di zeri iniziali. Gli esempi della specifica mostrano l'intervallo: 60 secondi occupano due gruppi, scritti pu, e 604800 secondi ne occupano quattro, scritti jw5q. Un encoder che riempie il campo non è solo trascurato: ai lettori è detto di trattare come non valida una fattura con un campo x, c o 9 non minimale.
Nessuno può prolungare una fattura una volta emessa. La firma copre il prefisso leggibile e l'intera parte dati, quindi modificare un solo carattere della scadenza la rompe. Un esercente che vuole darti più tempo deve emettere una nuova richiesta e firmarla di nuovo.
Il valore predefinito di un'ora non è stato scelto a caso: la motivazione della specifica dice che lascia il tempo per pagare on-chain in alternativa, tramite l'indirizzo di riserva che il campo f può portare.
Dove la vedi
La scadenza della fattura compare come l'anello del conto alla rovescia attorno a un codice QR, come una riga etichettata expiry in qualsiasi decoder e come il rifiuto che un wallet dà quando incolli qualcosa di scaduto.
I vettori di test della specifica mostrano entrambi gli estremi dell'intervallo. Una fattura da 2500 micro-bitcoin descritta come 1 cup coffee imposta la scadenza a 60 secondi, perché fissa al bancone un prezzo di tre dollari. Una fattura del Blockstream Store, per 88,85 USD di merce che include un Ledger Nano S, la imposta a 604800 secondi, sette giorni, perché una conferma d'ordine è una fattura da pagare e non un bancone.
Dove viene creata la fattura decide chi ha scelto il numero. Phoenix, di cui questo sito ha la recensione, esegue un vero nodo Lightning sullo smartphone anziché un account su un server, quindi la scadenza in una richiesta di ricezione è l'impostazione del suo stesso nodo. Con un'app custodiale la cifra viene dall'operatore, e decodificare una delle sue fatture è di solito l'unico modo per conoscerla.
Scadenza della fattura vs delta di scadenza CLTV
La scadenza della fattura e il delta di scadenza CLTV sono entrambi orologi su un pagamento Lightning, e corrono in unità diverse su metà diverse del problema.
La scadenza della fattura è in secondi di tempo reale contati dal timestamp della fattura, e decide se il pagamento possa essere tentato. Un delta di scadenza CLTV si misura in blocchi, e il campo c della stessa fattura porta il minimo del destinatario per l'ultimo salto, che il pagatore deve considerare pari ad almeno 18 blocchi quando il campo è assente. Uno ti dice se iniziare; l'altro ti dice quanto a lungo i tuoi soldi possono restare bloccati in un HTLC dopo che hai iniziato.