Zum Inhalt springen
buybitcoinsmart

Glossar / Lightning und Layer 2

Shutdown-Skript

Was ist ein Shutdown-Skript?
Ein Shutdown-Skript ist die On-Chain-Adresse, an die Ihr Lightning-Guthaben ausgezahlt wird, wenn ein Kanal kooperativ geschlossen wird, benannt in der Shutdown-Nachricht von BOLT 2 als roher scriptpubkey.

Jede Seite eines schließenden Kanals benennt ihr eigenes Ziel, und die Schließungstransaktion zahlt beide dort aus. BOLT 2 gibt diesem Nachrichtentyp die Nummer 38 und akzeptiert nur Skripte der Witness-Version 0, es sei denn, die Peers haben die Funktionsbits 26 und 27 ausgehandelt. Wer Lightning-Guthaben zurück in die Cold Storage bewegt, sollte dieses Ziel vor dem Schließen prüfen, nicht danach.

So funktioniert es

Ein Shutdown-Skript wird in einer BOLT-2-Nachricht des Typs 38 übertragen, die die Kanal-ID, eine Länge von zwei Bytes und dann die Skript-Bytes selbst enthält.

Jeder der beiden Peers kann diese Nachricht senden, und sobald keine Aktualisierungen mehr ausstehen, muss der andere mit einem eigenen Shutdown antworten. Ab diesem Punkt läuft der Kanal aus: Auf ein Shutdown darf kein update_add_htlc mehr folgen, und ein Node sollte sich weigern, ein danach eintreffendes HTLC weiterzuleiten. Die Nachricht kann vor channel_ready gesendet werden, sodass ein Kanal, dessen Finanzierungstransaktion noch bestätigt wird, früh aufgegeben werden kann.

Die Spezifikation ist eng darin, was das Skript sein darf. Zwei Formen sind immer zulässig: OP_0 und ein Push von 20 Bytes, eine pay to witness public key hash-Ausgabe, oder OP_0 und ein Push von 32 Bytes, pay to witness script hash. Witness-Versionen 1 bis 16, gefolgt von einem Push von 2 bis 40 Bytes, sind nur zulässig, wenn option_shutdown_anysegwit ausgehandelt wurde, die Funktionsbits 26 und 27, eine Taproot-Auszahlung hängt also davon ab, dass Ihr Peer sie unterstützt. Eine dritte Form kam mit option_simple_close, den Bits 60 und 61: OP_RETURN plus ein Push von 6 bis 75 Bytes, oder die Variante OP_PUSHDATA1 für 76 bis 80 Bytes, wobei die Obergrenze darin liegt, dass ein Skript OP_RETURN auf Bitcoin nur bis 83 Bytes standardkonform ist. Sie existiert, wenn Ihr Anteil zu klein ist, um eine Ausgabe zu rechtfertigen, und der Betrag muss dann null sein, er geht also als Gebühr an die Miner.

Ein Node kann sein Ziel auch beim Öffnen des Kanals festlegen, im TLV-Datensatz upfront_shutdown_script, Typ 0, von open_channel und accept_channel, Funktionsbits 4 und 5. Wenn beide Peers dies angekündigt haben und ein Skript mit einer Länge ungleich null angegeben wurde, muss ein späteres Shutdown, das etwas anderes nennt, die Verbindung scheitern lassen. BOLT 2 ist offen darüber, was das bringt: Die Spezifikation nennt die Vorabfestlegung "a weak commitment (a malevolent implementation tends to ignore specifications like this one!)" (eine schwache Festlegung: eine böswillige Implementierung neigt dazu, Spezifikationen wie diese zu ignorieren) und hält sie für eine inkrementelle Verbesserung, weil eine spätere Änderung des Ziels die Mitarbeit Ihres Peers erfordert.

Wo es auftaucht

Shutdown-Skripte gehören demjenigen, dem der Kanal gehört, und das sind nicht immer Sie.

Unter den 41 hier bewerteten Wallets vergleichen Sie Phoenix, bewertet mit 4,0, die einen echten eigenständigen Lightning-Node auf dem Smartphone betreibt, mit Wallet of Satoshi, bewertet mit 2,7 und mit einer Warnung wegen ihres verwahrenden Modus versehen. Bei Phoenix gehören die Kanäle Ihnen, ein kooperativer Abschluss setzt also eine Adresse, die Sie kontrollieren, in die Shutdown-Nachricht. Im verwahrenden Modus von Wallet of Satoshi, zurückgezogen aus den USA und der Europäischen Union, gehören die Kanäle dem Unternehmen, die Skripte nennen dessen Adressen, und was Sie halten, ist ein Anspruch und kein Schlüssel.

Der zweite Ort, an dem es auftaucht, ist ein Abschluss, der still scheitert. Alte Nodes können noch Nicht-SegWit-Shutdown-Skripte senden, und BOLT 2 merkt an, dass eine Schließungstransaktion, deren Nicht-SegWit-Ausgabe unter 546 Satoshis liegt, was möglich ist, wenn dust_limit_satoshis niedriger gesetzt wurde, die Miner wahrscheinlich nie erreichen wird. Es sind keine Guthaben gefährdet, aber der Kanal muss zwangsgeschlossen werden, statt abgerechnet zu werden. Unter option_simple_close ersetzt ein frisches closing_complete das vorherige, Gebühr und Ausgabe-Skript können also beide überarbeitet werden, es sei denn, die Vorab-Variante hat das Ziel beim Öffnen des Kanals eingefroren.

Shutdown-Skript vs. Zwangsschließung

Ein Shutdown-Skript entscheidet nur bei einem kooperativen Abschluss, wo das Geld landet.

Eine Zwangsschließung überspringt die Verhandlung: Sie veröffentlichen die neueste Commitment-Transaktion, und ihre Ausgaben zahlen an Schlüssel, die aus den beim Öffnen des Kanals ausgetauschten Basepoints abgeleitet sind, nicht an eine von Ihnen benannte Adresse. Das sorgfältig gesetzte Skript hat auf den einen Ausgang, der keine Zustimmung Ihres Peers benötigt, keine Wirkung. Legen Sie es für den Abschluss fest, den Sie beabsichtigen, und bewahren Sie ein Kanal-Backup für den auf, den Sie nicht beabsichtigen.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Kann ich eine Taproot-Adresse als mein Shutdown-Skript festlegen?

Nur wenn Sie und Ihr Peer beide option_shutdown_anysegwit ausgehandelt haben, die Funktionsbits 26 und 27. Ohne sie erlaubt BOLT 2 nur zwei Formen, einen Push von 20 Bytes oder einen von 32 Bytes nach OP_0, das sind die beiden Skripttypen der Witness-Version 0.

Gilt das Shutdown-Skript bei einer Zwangsschließung?

Nein. Eine Zwangsschließung überträgt die neueste Commitment-Transaktion, deren Ausgaben an Schlüssel zahlen, die aus den Basepoints abgeleitet sind, die beide Seiten beim Öffnen des Kanals ausgetauscht haben, die von Ihnen in einer Shutdown-Nachricht benannte Adresse spielt darin also keine Rolle.

Warum würde eine Schließungstransaktion meiner Seite gar nichts zahlen?

Weil option_simple_close dem Schließenden, dessen Guthaben zu klein ist, um eine Ausgabe zu rechtfertigen, erlaubt, stattdessen ein OP_RETURN-Skript zu benennen, und die Spezifikation verlangt, dass der Betrag dieser Ausgabe null ist, das Guthaben geht also als Gebühr an die Miner.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Lightning und Layer 2

Diese Seite auf Englisch lesen