Glossar / Lightning und Layer 2
CLTV-Expiry-Delta
- Was ist ein CLTV-Expiry-Delta?
- Ein CLTV-Expiry-Delta ist die Anzahl der Blöcke, die ein Lightning-Node vom Timelock einer eingehenden Zahlung abzieht, bevor er sie weitergibt; es wird im Gossip pro Kanalrichtung angegeben.
Jeder weiterleitende Node auf einer Lightning-Route verlangt zwei Preise, eine Gebühr in Millisatoshi und eine Verzögerung in Blöcken, und das CLTV-Expiry-Delta ist die Verzögerung. BOLT 7 führt es als 16-Bit-Feld in der Nachricht channel_update neben fee_base_msat, und jede Seite eines Kanals veröffentlicht ihren eigenen Wert unabhängig. Wenn eine Zahlung hängen bleibt, ist dieser Stapel von Blöcken die Zeit, in der Ihr Geld eingefroren bleibt.
So funktioniert es
Ein CLTV-Expiry-Delta wird von dem Node gewählt, der die Weiterleitung übernimmt, und es gilt nur für die ausgehende Richtung dieses Nodes.
Der Wortlaut der Spezifikation ist eindeutig: Ein Node muss das Feld auf die Anzahl der Blöcke setzen, die er vom cltv_expiry eines eingehenden HTLC abzieht. Das Delta ist also keine Frist, sondern ein Abstand. Der Node nimmt eine Zahlung an, die bis zu einer absoluten Blockhöhe gesperrt ist, behält das Delta für sich und bietet dem nächsten Hop eine Zahlung an, die bis zu dieser Höhe minus dem Delta gesperrt ist. Dieser Abstand ist die Sicherheitsmarge des Nodes: Wenn der nachgelagerte Hop im letzten möglichen Moment abrechnet, bleiben ihm so viele Blöcke, um die Zahlung vorgelagert zu beanspruchen.
Jeder öffentliche Kanal trägt zwei dieser Zahlen, eine pro Richtung, jede von dem Node signiert, der sie festgelegt hat. Sie stehen in channel_update, Nachrichtentyp 258, neben htlc_minimum_msat und den beiden Gebührenfeldern. Nur die Aktualisierungen der Nodes, die weiterleiten werden, sind von Bedeutung: Auf einer Route A nach B nach C nach D verwendet der Zahler die Aktualisierung von B für B nach C und die von C für C nach D, und keine eigene.
Routen werden daher rückwärts gebaut. Der Zahler beginnt am Ziel mit der minimalen Endablaufzeit, die die Rechnung verlangt, geht zurück und addiert das angegebene Delta jedes Hops, und die laufende Summe wird zum Timelock des HTLC, das er seinem ersten Peer übergibt. Wenn ein Node seine Preise ändert, verlangt BOLT 7 von ihm, die vorherigen Parameter noch 10 Minuten lang weiter zu akzeptieren, weil der Gossip nicht alle Zahler gleichzeitig erreicht.
Wo Sie sie sehen
CLTV-Expiry-Deltas entscheiden, wie lange eine hängende Lightning-Zahlung Ihr Guthaben bindet, und das eigene Routing-Beispiel von BOLT 7 beziffert zwei ansonsten identische Routen.
Vier Nodes bilden ein Viereck: A, B, C und D, die 10, 20, 30 und 40 Blöcke angeben, wobei C ein finales Ablauf-Delta von 18 verlangt, das die Spezifikation als Standardwert bezeichnet. A sendet 4.999.999 Millisatoshi an C. Über B geleitet, übergibt A seinem Peer 5.010.198 Millisatoshi, davon 10.199 als Gebühr von B, und das erste HTLC läuft bei der aktuellen Blockhöhe plus 80 ab: 20 Blöcke für den Hop von B, 18 für C und 42 zusätzlich als Puffer. Über D geleitet kostet dieselbe Zahlung 5.020.398 Millisatoshi und läuft bei der aktuellen Höhe plus 100 ab. Gleicher Absender, gleicher Empfänger, gleicher Betrag, und 20 Blöcke mehr an Exposition.
Diese 42 sind kein willkürlicher Spielraum. BOLT 7 warnt davor, dass eine Route, die durch ehrliches Summieren der Deltas gebaut wird, einen Zwischen-Node seine eigene Position ermitteln lässt und von dort erraten lässt, wer bezahlt wird, weshalb dem Zahler empfohlen wird, einen zufälligen Versatz hinzuzufügen, der ermittelt wird, indem der Graph vom Empfänger nach außen durchlaufen und die angetroffenen Deltas summiert werden. Die Spezifikation nennt das Ergebnis eine Schattenrouten-Erweiterung.
Nichts davon können Sie festlegen, außer Sie betreiben den weiterleitenden Node. Phoenix, das unsere Bewertung als echten eigenständigen Lightning-Node auf dem Smartphone bezeichnet, veröffentlicht seinen Sendepreis als 0,4 % plus 4 Sat, und diese Tabelle bepreist das Geld, nicht die Blöcke.
CLTV-Expiry-Delta vs. OP_CHECKLOCKTIMEVERIFY
Ein CLTV-Expiry-Delta ist eine Routing-Richtlinienzahl, die im Gossip veröffentlicht wird, während OP_CHECKLOCKTIMEVERIFY der Bitcoin-Script-Opcode ist, der eine absolute Frist On-Chain erzwingt.
Sie teilen drei Buchstaben und wenig sonst. Ein Delta ist relativ und lebt vollständig Off-Chain: Es erscheint in keinem Script, kein Full Node validiert es, und der Node, der es festgelegt hat, ändert es mit einem neuen channel_update. OP_CHECKLOCKTIMEVERIFY ist in den Coin geschrieben, wird von jedem Full Node geprüft und kann nicht mehr geändert werden, sobald der Coin existiert.