Glossar / Lightning und Layer 2
Maximaler HTLC-Wert in Flight
- Was ist der maximale HTLC-Wert in Flight?
- Der maximale HTLC-Wert in Flight ist das Limit, das jeder Lightning-Peer für den Gesamtwert der Zahlungen setzt, die die Gegenseite gleichzeitig ausstehend haben darf.
Das Limit ist ein einzelnes Feld, max_htlc_value_in_flight_msat, das bei der Eröffnung eines Kanals vereinbart und danach bei jeder Zahlung durchgesetzt wird. Eclair liefert einen Standardwert von 5.000.000.000 Millisatoshi oder 45 Prozent der Kanalkapazität, je nachdem, welcher Wert kleiner ist, sodass ein Kanal mit 60 mBTC 27 mBTC erhält. Ihre große Lightning-Zahlung kann an einem Kanal scheitern, der sichtbar genug Geld enthält, und dies ist oft der Grund.
So funktioniert es
Der maximale HTLC-Wert in Flight wird ausgehandelt, nicht auferlegt: jede Seite erklärt die Obergrenze, die die andere einhalten soll.
Das Feld reist in open_channel (Nachrichtentyp 32) und kommt in accept_channel (Typ 33) zurück; dual finanzierte Kanäle führen es in open_channel2 (64) und accept_channel2 (65). BOLT 2 beschreibt es als "a cap on total value of outstanding HTLCs offered by the remote node, which allows the local node to limit its exposure to HTLCs". Beachten Sie die Richtung: Die Zahl, die Sie senden, beschränkt Ihren Peer, nicht Sie, sodass ein Kanal zwei Obergrenzen führt, die nicht übereinstimmen müssen.
Die Durchsetzung ist an beiden Enden unnachgiebig. Ein sendender Node darf keine Zahlung hinzufügen, wenn der Gesamtwert, den er bereits angeboten hat, dadurch die Obergrenze des entfernten Nodes überschreiten würde, und ein empfangender Node, dessen Peer die Regel bricht, wird angewiesen, eine Warnung auszugeben und die Verbindung zu trennen oder den Kanal direkt scheitern zu lassen. Das verwandte Feld max_accepted_htlcs zählt ausstehende Zahlungen, statt sie zu messen, und die Spezifikation begrenzt dieses hart auf 483, sinkend auf 114, wenn der Kanal Nullgebühren-Commitments verwendet. Die Wertobergrenze hat keine entsprechende Obergrenze: Sie ist reine Node-Richtlinie, und die einzige Absicherung der Spezifikation ist, dass ein empfangender Node einen Kanal ablehnen darf, dessen Zahl zu klein erscheint.
Geld, das stillliegt, bleibt unberührt. Ein Kanal kann ein Vielfaches der Obergrenze an abgewickeltem Guthaben halten, weil das Limit nur Zahlungen in Bewegung zählt, also diejenigen, die on-chain entwirrt werden müssten, wenn der Kanal schlecht geschlossen würde.
Wo Sie es sehen
Der maximale HTLC-Wert in Flight erscheint nie im öffentlichen Lightning-Graphen, sodass kein Kanal-Explorer ihn Ihnen zeigt.
Er wird auf eine bestimmte Weise preisgegeben. BOLT 7 verlangt, dass ein Node, der eine channel_update veröffentlicht, htlc_maximum_msat, die größte einzelne Zahlung, die er weiterleitet, auf höchstens den max_htlc_value_in_flight_msat setzt, den er von seinem Peer erhalten hat. Eine private Zahl setzt damit einer öffentlichen eine harte Obergrenze: Ein vorsichtiger Peer zwingt die angekündigte Zahl nach unten, obwohl es einem Node freisteht, weniger anzukündigen, als sein Peer erlaubt.
Die Standardwerte unterscheiden sich zwischen den Implementierungen stark genug, um relevant zu sein. Eclairs Referenzkonfiguration setzt max-htlc-value-in-flight-msat auf 5.000.000.000 und max-htlc-value-in-flight-percent auf 45, wendet den kleineren Wert an und merkt an, dass die Einstellung pro Richtung gilt, sodass beide zusammen das Doppelte der Zahl erreichen können. Eclair setzt außerdem max-accepted-htlcs auf 30, während die LND-Beispielkonfiguration default-remote-max-htlcs mit 483 ausliefert, dem Maximum der Spezifikation. Zwei Betreiber mit unveränderten Standardwerten können allein bei der Anzahl um den Faktor sechzehn voneinander abweichen.
Für einen Käufer ist das Symptom eine Zahlung, die ohne Erklärung scheitert. Den Betrag in Teile aufzuteilen rettet sie nicht, wenn die Teile denselben Kanal nehmen, weil die Obergrenze sie addiert. ACINQ, die diese Eclair-Standardwerte veröffentlicht, liefert außerdem Phoenix aus, die hier bewertete Smartphone-Wallet; jede Wallet, die für Sie Kanäle öffnet, wählt diese Zahlen in Ihrem Namen.
Maximaler HTLC-Wert in Flight vs. Kanalkapazität
Die Kanalkapazität ist der Betrag, der in einem Finanzierungs-Output eines Kanals gesperrt ist, während der maximale HTLC-Wert in Flight regelt, wie viel dieses Betrags sich zu einem beliebigen Zeitpunkt mitten in einer Zahlung befinden darf.
Die Kapazität ist eine öffentliche Tatsache, festgelegt durch die Finanzierungstransaktion und dem gesamten Netzwerk bekannt gegeben. Die Obergrenze für in Flight befindliche Zahlungen ist privat, wird nur zwischen den beiden Peers ausgetauscht, für jede Richtung separat festgelegt und nach Richtlinie statt nach Arithmetik gewählt. Eclairs prozentualer Standardwert macht die Lücke konkret: Die 45 Prozent gelten für jede Richtung für sich, sodass mehr als die Hälfte der Kapazität daran gehindert wird, sich auf einmal in eine Richtung zu bewegen. Ein Kanal, der auf Ihrer Seite viel Platz zeigt, kann eine Zahlung trotzdem ablehnen, und die Zahl, die sie abgelehnt hat, können Sie nicht nachschlagen.