Glossar / Lightning und Layer 2
Ablauf der Rechnung
- Was ist der Ablauf der Rechnung?
- Der Ablauf der Rechnung ist das Feld x einer BOLT11-Zahlungsanforderung, eine Anzahl von Sekunden ab dem eigenen Zeitstempel der Rechnung, nach der sowohl der Zahler als auch der Zahlungsempfänger sie ablehnen sollten.
Jede Lightning-Rechnung trägt eine Frist, und der Countdown beginnt in dem Moment, in dem die Rechnung signiert wurde, nicht in dem Moment, in dem sie bei Ihnen ankam. Fehlt das Feld x, beträgt der Standardwert 3600 Sekunden, also eine Stunde. Eine Rechnung, die den größten Teil dieser Stunde in einem Chat-Thread lag, kann daher Minuten nach dem Eintreffen bei Ihnen fehlschlagen, ohne sichtbaren Grund.
So funktioniert es
Der Ablauf der Rechnung wird als getaggtes Feld vom Typ 6 übertragen, geschrieben als der Buchstabe x, und enthält einen Big-Endian-Zähler in Sekunden.
Eine BOLT11-Zeichenkette beginnt mit einem 35-Bit-Zeitstempel, der die Sekunden seit dem 1. Januar 1970 UTC zählt, dann folgen die getaggten Felder, dann eine Signatur. Der Ablauf ist eines dieser Felder und er ist relativ: Die Frist ist dieser Zeitstempel plus der Ablauf, sodass nichts in der Rechnung eine lesbare Uhrzeit angibt. BOLT11 weist den Zahler an, keine Zahlung mehr zu versuchen, sobald diese Summe überschritten ist, und weist den Zahlungsempfänger an, ebenfalls keine mehr anzunehmen.
Beide Anweisungen sind ein SHOULD und kein MUST, eine abgelaufene Rechnung ist also nicht kryptografisch tot. Der Zahlungs-Hash funktioniert weiterhin; was die Zahlung stoppt, ist die Richtlinie an beiden Enden und keine Sperre. Ihre Wallet weigert sich, es zu versuchen, und ein Node, der die Preimage verworfen hat, könnte ohnehin nicht abrechnen.
Der Wert wird in Gruppen von fünf Bits gepackt und muss die kürzeste Länge verwenden, in die er passt, ohne führende Nullgruppen. Die Beispiele der Spezifikation zeigen den Bereich: 60 Sekunden belegen zwei Gruppen, geschrieben pu, und 604800 Sekunden belegen vier, geschrieben jw5q. Ein Encoder, der das Feld auffüllt, ist nicht bloß unordentlich: Leser werden angewiesen, eine Rechnung mit einem nicht minimalen Feld x, c oder 9 als ungültig zu behandeln.
Niemand kann eine Rechnung verlängern, nachdem sie ausgestellt wurde. Die Signatur deckt das für Menschen lesbare Präfix und den gesamten Datenteil ab, das Ändern eines einzigen Zeichens des Ablaufs macht sie also ungültig. Ein Händler, der Ihnen mehr Zeit geben möchte, muss eine neue Anforderung ausstellen und erneut signieren.
Der Standardwert von einer Stunde wurde nicht zufällig gewählt: Die Begründung der Spezifikation besagt, dass er Zeit lässt, stattdessen on-chain zu zahlen, über die Fallback-Adresse, die das Feld f tragen kann.
Wo Sie ihn sehen
Der Ablauf der Rechnung zeigt sich als der Countdown-Ring um einen QR-Code, als eine mit expiry beschriftete Zeile in jedem Decoder und als die Ablehnung, die eine Wallet ausgibt, wenn Sie etwas Veraltetes einfügen.
Die Testvektoren der Spezifikation zeigen beide Enden des Bereichs. Eine Rechnung über 2500 Mikro-Bitcoin, beschrieben als 1 Tasse Kaffee, setzt den Ablauf auf 60 Sekunden, weil sie einen Preis von drei Dollar am Tresen fixiert. Eine Rechnung aus dem Blockstream Store über 88,85 USD Waren, darunter ein Ledger Nano S, setzt ihn auf 604800 Sekunden, sieben Tage, weil eine Auftragsbestätigung eine Rechnung und kein Tresen ist.
Wo die Rechnung erstellt wird, entscheidet, wer die Zahl gewählt hat. Phoenix, das diese Website bewertet, betreibt einen echten Lightning-Node auf dem Mobiltelefon statt eines Kontos auf einem Server, der Ablauf in einer Empfangsanforderung ist also die Einstellung des eigenen Nodes. Bei einer verwahrenden App stammt die Zahl vom Betreiber, und eine ihrer Rechnungen zu dekodieren ist meist der einzige Weg, sie zu erfahren.
Ablauf der Rechnung vs. CLTV-Ablaufdelta
Der Ablauf der Rechnung und das CLTV-Ablaufdelta sind beides Uhren bei einer Lightning-Zahlung, und sie laufen in unterschiedlichen Einheiten über unterschiedliche Hälften des Problems.
Der Ablauf der Rechnung wird in Sekunden realer Zeit ab dem Zeitstempel der Rechnung gezählt und entscheidet, ob die Zahlung überhaupt versucht werden darf. Ein CLTV-Ablaufdelta wird in Blöcken gemessen, und das Feld c derselben Rechnung trägt das Minimum des Empfängers für den letzten Sprung, das ein Zahler als mindestens 18 Blöcke behandeln muss, wenn das Feld fehlt. Das eine sagt Ihnen, ob Sie anfangen sollen; das andere sagt Ihnen, wie lange Ihr Geld nach dem Start in einem HTLC gesperrt bleiben kann.