Glossario / Lightning e layer 2
Millisatoshi
Noto anche come msat.
- Che cos'è un millisatoshi?
- Un millisatoshi è un millesimo di satoshi, l'unità che Lightning usa per contare i saldi dei canali e le commissioni di routing, e un importo che la blockchain di bitcoin non può registrare.
Lightning tiene la sua contabilità un gradino più fine della blockchain, in millesimi di satoshi. BOLT 2 fissa la proporzione in modo esplicito: push_msat non può superare 1000 volte funding_satoshis, e l'applicazione on-chain è possibile solo per importi in satoshi interi. Qualsiasi resto in millisatoshi nel tuo saldo è reale dentro il canale e viene arrotondato via nel momento in cui quel canale si chiude.
Come funziona
Un millisatoshi è un'unità di conto dentro un canale Lightning, non un'unità di regolamento sulla blockchain.
Ogni importo di pagamento dentro un canale è scritto in millisatoshi e lo dichiara nel nome del suo campo. Il messaggio che aggiunge un pagamento a un canale, update_add_htlc, porta un amount_msat da 64 bit, e l'apertura di un canale negozia push_msat, htlc_minimum_msat e max_htlc_value_in_flight_msat nella stessa unità. BOLT 2 indica l'avvertenza accanto alla definizione: gli importi sono in millisatoshi, "though on-chain enforcement is only possible for whole satoshi amounts greater than the dust limit" (anche se l'applicazione on-chain è possibile solo per importi in satoshi interi superiori al dust limit), e la transazione di commitment li arrotonda per difetto.
Il fattore di conversione non è folclore. Un nodo che apre un canale deve impostare push_msat a non più di 1000 volte funding_satoshis, e il peer che riceve il messaggio deve far fallire il canale se push_msat è maggiore di funding_satoshis per 1000. Il rapporto di 1.000 a 1 è scritto nella negoziazione iniziale da entrambe le parti.
Le fatture ereditano lo stesso limite. Un importo BOLT 11 è espresso in bitcoin con una lettera moltiplicatrice, e la più piccola, p per pico, porta una regola che le altre non hanno: l'ultima cifra dell'importo deve essere zero. Un pico bitcoin è un decimo di millisatoshi, quindi lo zero finale costringe la richiesta su un numero intero di millisatoshi. La specifica ne dà la ragione in modo chiaro: gli importi inferiori al millisatoshi non possono essere trasferiti sulla rete perché gli HTLC sono denominati in millisatoshi, e i vettori di test includono una fattura rifiutata con l'intestazione "Invalid sub-millisatoshi precision".
I tre decimali in più si guadagnano il loro posto nell'aritmetica delle commissioni. Un nodo che inoltra addebita una tariffa proporzionale espressa in milionesimi di satoshi per satoshi inoltrato, quindi una tariffa di 1 su un pagamento di 1.000 satoshi arriva a un solo millisatoshi. Arrotondala a un satoshi intero e hai o moltiplicato la commissione per mille o l'hai buttata via.
Dove lo vedi
Le cifre in millisatoshi emergono ovunque uno strumento Lightning mostri i suoi numeri reali invece di una visualizzazione arrotondata.
Decodifica una fattura BOLT 11 e i route hint compaiono in questa unità. L'esempio pratico della specifica elenca due hop che addebitano una commissione base di 1 millisatoshi e 2 millisatoshi, e la sua fattura di esempio per un ordine del negozio Blockstream porta un route hint la cui commissione base è 1000, un satoshi intero. L'aggiornamento gossip di un canale pubblica htlc_minimum_msat e fee_base_msat nella stessa unità, quindi un pannello che legge quei campi mostra un numero mille volte più grande della cifra in satoshi che gli sta accanto.
I wallet per il pubblico nascondono l'unità ma non l'aritmetica. Phoenix pubblica una tabella delle commissioni invece di scoprirle al momento del pagamento, e il suo invio Lightning costa 0,4 per cento più 4 satoshi; su un pagamento di 137 satoshi la parte percentuale ammonta a 548 millisatoshi, una quantità senza alcuna rappresentazione on-chain. Muun presenta on-chain e Lightning come un unico saldo, il che nasconde del tutto il confine senza eliminarlo.
Millisatoshi vs satoshi
Un satoshi è il più piccolo importo che la blockchain di bitcoin può registrare, mentre un millisatoshi è un millesimo di quello ed esiste solo nei messaggi di Lightning e nei libri contabili che i suoi due peer tengono.
La differenza si fa sentire al momento della chiusura. Un saldo di canale di 1.234.567 millisatoshi è esigibile come 1.234 satoshi e non oltre, perché la transazione di commitment che regola il canale on-chain paga satoshi interi; il resto di 567 millisatoshi non ha alcun output on-chain in cui esistere, ed è spendibile solo finché il canale resta aperto. Quel divario vale una frazione di centesimo, ed è comunque il motivo per cui le due unità non possono essere scambiate l'una con l'altra in nulla che tocchi la blockchain.