Vai al contenuto
buybitcoinsmart

Glossario / Lightning e layer 2

Valore massimo HTLC in transito

Che cos'è il valore massimo HTLC in transito?
Il valore massimo HTLC in transito è il tetto che ogni peer Lightning fissa sul valore totale dei pagamenti che la controparte può avere in sospeso contemporaneamente.

Il tetto è un unico campo, max_htlc_value_in_flight_msat, concordato all'apertura di un canale e applicato a ogni pagamento successivo. Eclair prevede un valore predefinito di 5.000.000.000 millisatoshi o del 45 per cento della capacità del canale, se è minore, quindi un canale da 60 mBTC ne ottiene 27 mBTC. Un tuo pagamento Lightning di importo elevato può fallire su un canale che visibilmente contiene denaro sufficiente, e spesso questa è la ragione.

Come funziona

Il valore massimo HTLC in transito si negozia, non si impone: ogni lato dichiara il tetto che vuole che l'altro rispetti.

Il campo viaggia in open_channel (messaggio di tipo 32) e torna in accept_channel (tipo 33); i canali a finanziamento duale lo portano in open_channel2 (64) e accept_channel2 (65). BOLT 2 lo descrive come "a cap on total value of outstanding HTLCs offered by the remote node, which allows the local node to limit its exposure to HTLCs". Nota la direzione: il numero che invii vincola il tuo peer, non te, quindi un canale porta due tetti che non devono necessariamente coincidere.

L'applicazione è netta a entrambe le estremità. Un nodo che invia non deve aggiungere un pagamento se il valore totale già offerto viene così a superare il tetto del nodo remoto, e a un nodo che riceve, se il peer infrange la regola, viene indicato di emettere un avviso e chiudere la connessione, oppure di far fallire il canale direttamente. Il suo campo gemello max_accepted_htlcs conta i pagamenti in sospeso invece di misurarli, e la specifica gli impone un tetto rigido di 483, che scende a 114 quando il canale usa commitment senza commissione. Il tetto di valore non ha un limite equivalente: è pura politica del nodo, e l'unica salvaguardia della specifica è che un nodo che riceve può rifiutare un canale la cui cifra sembra troppo piccola.

Il denaro fermo non è toccato. Un canale può detenere molte volte il tetto in saldo regolato, perché il limite conta solo i pagamenti in movimento, quelli che andrebbero districati on-chain se il canale si chiudesse male.

Dove lo vedi

Il valore massimo HTLC in transito non appare mai nel grafo pubblico di Lightning, quindi nessun explorer di canali te lo mostrerà.

Trapela in un modo specifico. BOLT 7 richiede che un nodo che pubblica un channel_update imposti htlc_maximum_msat, il singolo pagamento più grande che inoltrerà, a non più del max_htlc_value_in_flight_msat ricevuto dal suo peer. Un numero privato pone quindi un tetto rigido a uno pubblico: un peer prudente costringe ad abbassare la cifra annunciata, anche se un nodo è libero di annunciare meno di quanto il suo peer consente.

I valori predefiniti differiscono abbastanza tra le implementazioni da contare. La configurazione di riferimento di Eclair imposta max-htlc-value-in-flight-msat a 5.000.000.000 e max-htlc-value-in-flight-percent a 45, applica il minore dei due e precisa che l'impostazione è per direzione, quindi insieme possono raggiungere il doppio della cifra. Eclair imposta anche max-accepted-htlcs a 30, mentre la configurazione di esempio di LND prevede default-remote-max-htlcs a 483, il massimo della specifica. Due operatori con i valori predefiniti intatti possono divergere di un fattore sedici solo sul conteggio.

Per chi compra il sintomo è un pagamento che fallisce senza spiegazione. Dividere l'importo in parti non lo salva quando le parti prendono lo stesso canale, perché il tetto le somma. ACINQ, che pubblica quei valori predefiniti di eclair, distribuisce anche Phoenix, il wallet per smartphone recensito qui; qualsiasi wallet che apre canali per te sceglie questi numeri al tuo posto.

Valore massimo HTLC in transito vs capacità del canale

La capacità del canale è l'importo bloccato nell'output di finanziamento di un canale, mentre il valore massimo HTLC in transito governa quanta parte di quell'importo può essere a metà di un pagamento in un dato momento.

La capacità è un dato pubblico, fissato dalla transazione di finanziamento e annunciato a tutta la rete. Il tetto in transito è privato, scambiato solo tra i due peer, impostato separatamente per ogni direzione e scelto per politica, non per aritmetica. Il valore predefinito percentuale di Eclair rende concreta la differenza: il 45 per cento si applica a ciascuna direzione per conto suo, quindi più della metà della capacità non può muoversi in una sola direzione alla volta. Un canale che mostra molto spazio dalla tua parte può comunque rifiutare un pagamento, e la cifra che lo ha rifiutato è una che non puoi consultare.

Da non confondere con

Domande frequenti

Perché il mio pagamento Lightning è fallito quando il canale aveva saldo sufficiente?

Spesso perché i pagamenti già in sospeso su quel canale più quello nuovo supererebbero max_htlc_value_in_flight_msat, il tetto che il tuo peer ha fissato all'apertura del canale. Il tetto limita il denaro in movimento, non il denaro fermo, quindi un canale può sembrare ben finanziato e rifiutarti comunque.

Il valore massimo HTLC in transito è lo stesso di max_accepted_htlcs?

No, uno limita il valore e l'altro il numero. BOLT 2 limita max_accepted_htlcs a 483, oppure a 114 per i canali che usano commitment senza commissione, mentre il tetto di valore non ha un massimo nella specifica ed è fissato solo dalla politica del nodo.

Dividere un pagamento in parti aggira il tetto?

Non quando le parti viaggiano attraverso lo stesso canale, perché il limite somma insieme tutti i pagamenti in sospeso in quella direzione. Distribuire le parti su canali diversi può aiutare, dato che ogni canale ha il proprio limite negoziato separatamente.

Leggi anche

Termini correlati

Altro in Lightning e layer 2

Leggi questa pagina in inglese