Zum Inhalt springen
buybitcoinsmart

Glossar / Lightning und Layer 2

Kooperativer Abschluss

Was ist ein kooperativer Abschluss?
Ein kooperativer Abschluss beendet einen Lightning-Kanal im Einvernehmen: Beide Peers signieren eine Transaktion, die jeder Seite ihren endgültigen Saldo auszahlt, ohne Verzögerung und ohne Risiko einer Strafzahlung.

Ein kooperativer Abschluss ist eine kurze Verhandlung über zwei Dinge: wohin jede Seite ausgezahlt werden möchte und wer die Miner-Gebühr zahlt. Der moderne Weg nutzt drei Nachrichtentypen: shutdown vom Typ 38, danach closing_complete vom Typ 40 und closing_sig vom Typ 41 nach den Regeln der Option option_simple_close. Ihr Saldo kommt als gewöhnlicher ausgebbarer Output an, sobald die Abschlusstransaktion bestätigt ist, ohne Wartezeit.

So funktioniert es

Ein kooperativer Abschluss läuft in zwei Phasen ab, und die erste Phase ist ein Versprechen, aufzuhören.

Jeder der beiden Peers eröffnet den Vorgang, indem er shutdown vom Typ 38 sendet und darin den scriptpubkey nennt, an den seine Auszahlung gehen soll. Danach darf der Absender kein neues HTLC mehr hinzufügen, und die andere Seite muss mit ihrem eigenen shutdown antworten, sobald nichts mehr aussteht. BOLT 2 beschränkt dieses Skript auf Formen, die das Netzwerk weiterleitet: einen Daten-Push von 20 oder 32 Bytes hinter OP_0 oder, sobald option_shutdown_anysegwit ausgehandelt ist, OP_1 bis OP_16 gefolgt von einem Push von 2 bis 40 Bytes.

Die zweite Phase beginnt, sobald in keiner der beiden Commitment-Transaktionen mehr ein HTLC aussteht. Unter option_simple_close, den Feature-Bits 60 und 61 in BOLT 9, baut jeder Peer seine eigene Version der Abschlusstransaktion, entnimmt die gesamte Gebühr seinem eigenen Saldo und sendet closing_complete vom Typ 40. Die andere Seite signiert das Erhaltene und schickt closing_sig vom Typ 41 zurück. Weil der Vorschlagende zahlt, hat der Streit über die Gebührenhöhe keinen Raum, was BOLT 2 als den Zweck des Entwurfs nennt. Ein erneutes Senden von closing_complete mit höherer Gebühr ist der Weg, die Gebühr des Abschlusses zu erhöhen, und BOLT 3 gibt dieser Transaktion eine Input-Sequenz von 0xFFFFFFFD, was die Spezifikation als RBF des vorherigen Versuchs bezeichnet.

Der Altweg (Legacy), closing_signed vom Typ 39, gilt weiterhin in der Spezifikation. Dort nennt der Finanzierer eine Gebühr samt fee_range mit min_fee_satoshis und max_fee_satoshis, und die nicht finanzierende Seite wählt eine Zahl innerhalb dieses Bereichs, was in zwei Nachrichten abgeschlossen ist, wenn sie denselben Wert wählt, und sonst in drei. Ohne Bereich muss jede Antwort streng zwischen den beiden letzten Angeboten liegen, sodass sich die Seiten Satoshi für Satoshi annähern.

Wo Sie das sehen

Ein kooperativer Abschluss ist das, was Ihre Wallet tut, wenn Sie auf Schließen drücken und der Peer antwortet: eine Transaktion, kein ausstehender Saldo dahinter.

BOLT 2 enthält eine eigene Schritt-für-Schritt-Darstellung. A und B tauschen shutdown-Skripte aus, die ausstehenden HTLCs werden abgeschlossen, und dann bietet A an, 1.000 Satoshis an Gebühr zu zahlen, während B unabhängig davon 750 bietet. Jede Seite signiert die Version der anderen. Später ändert A sein Auszahlungsskript und sendet erneut mit 1.100 Satoshis, und B erhöht seinen eigenen Versuch auf 850.

Bei kleinen Kanälen greifen die Regeln spürbar. Die Seite mit weniger Geld kann ihren eigenen Output weglassen und muss ihn weglassen, wenn der Betrag Dust wäre. Würden durch die Gebühren beide Outputs zu Dust, kann der Schließende ein OP_RETURN-Skript anstelle einer Adresse senden, und sein Output-Wert wird auf null gesetzt, sodass die Mittel dieser Seite in die Gebühren fließen und die Transaktion weiterhin weitergeleitet wird. Die Spezifikation warnt, dass ein Output unter 546 Satoshis an ein Nicht-SegWit-Skript einen Miner möglicherweise nie erreicht und ein solcher Kanal stattdessen zwangsweise geschlossen werden muss.

Kooperativer Abschluss vs. erzwungener Abschluss

Ein kooperativer Abschluss und ein erzwungener Abschluss beenden beide einen Kanal mit einer On-Chain-Transaktion, und der Unterschied ist, wer wartet.

Bei einem kooperativen Abschluss sind beide Outputs gewöhnliche Zahlungen, sodass jede Seite ab der ersten Bestätigung ausgeben kann und kein Strafzweig jemals ins Spiel kommt. Ein erzwungener Abschluss veröffentlicht stattdessen eine Commitment-Transaktion, lässt Ihren eigenen Saldo hinter einer beim Öffnen des Kanals vereinbarten Blockverzögerung und gibt jeder laufenden Zahlung ihre eigene Folgetransaktion. Unsere Bewertung von Phoenix beziffert diese Wartezeit auf rund 720 Blöcke, etwa fünf Tage, bevor zwangsweise geschlossene Mittel wieder verfügbar sind.

Ein kooperativer Abschluss erfordert, dass der andere Node wach ist und bereit ist, auf ein shutdown zu antworten. Deshalb gibt es den erzwungenen Abschluss, und deshalb ist ein Peer, den Sie nicht erreichen können, ein Peer, dessen Abschlussgebühr Sie nicht steuern.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Wer zahlt die Miner-Gebühr bei einem kooperativen Abschluss?

Wer die Transaktion vorschlägt, zahlt. Unter option_simple_close sendet jeder Peer sein eigenes closing_complete und entnimmt die Gebühr seinem eigenen Saldo, weshalb BOLT 2 sagt, dass der Entwurf die Gebührenuneinigkeit als Fehlerquelle beseitigt. Auf dem Altweg closing_signed zahlt der Finanzierer und nennt einen Gebührenbereich, aus dem die andere Seite wählt.

Kann ich einen Kanal kooperativ schließen, wenn mein Peer offline ist?

Nein. Ein kooperativer Abschluss erfordert, dass der andere Node auf Ihre shutdown-Nachricht antwortet und eine Signatur zurückschickt; bei einem nicht erreichbaren Peer bleibt Ihnen daher nur ein erzwungener Abschluss. Das ist der Unterschied, den Sie einplanen sollten, bevor Sie Geld in einem Kanal parken.

Wie lange dauert es nach einem kooperativen Abschluss, bis ich das Geld ausgeben kann?

Sobald die Abschlusstransaktion bestätigt ist. Beide Outputs sind gewöhnliche Zahlungen an die Auszahlungsskripte, die jede Seite gewählt hat, und keiner der beiden hat eine Zeitsperre. Ein erzwungener Abschluss führt dazu, dass Ihre eigene Seite eine Blockverzögerung hat.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Lightning und Layer 2

Diese Seite auf Englisch lesen