Glossar / Lightning und Layer 2
Penalty-Transaktion
- Was ist eine Penalty-Transaktion?
- Eine Penalty-Transaktion ist der On-Chain-Sweep, der alle Ausgaben eines Lightning-Kanals übernimmt, wenn Ihr Gegenüber eine widerrufene Commitment-Transaktion veröffentlicht, und der mit dem Widerrufsschlüssel signiert ist, den Sie bereits besitzen.
Lightning-Kanäle werden von ihren beiden Teilnehmern überwacht, und die Penalty-Transaktion ist die Durchsetzung. BOLT 5 gibt diesem Sweep einen 160-Byte-Witness für die Hauptsaldo-Ausgabe und sieht vor, ihn pro Ausgabe aufzuteilen, wenn er nicht 18 Blöcke vor Ablauf des Timelocks des Betrügers bestätigt ist. Wenn Sie Bitcoin in Kanälen halten, ist diese Transaktion das, was zwischen Ihnen und einem Peer steht, der Ihren Saldo zurückspult.
So funktioniert es
Eine Penalty-Transaktion gibt Ausgaben aus, deren Eigentümer Ihnen bereits das Recht eingeräumt hat, sie zu nehmen.
Jedes Mal, wenn sich der Saldo in einem Kanal bewegt, gibt jede Seite das Geheimnis hinter dem Zustand preis, den sie ersetzt. Halten Sie dieses Geheimnis, können Sie den privaten Widerrufsschlüssel für die alte Commitment-Transaktion Ihres Peers ableiten, also den Schlüssel, der dessen Seite davon entsperrt. BOLT 5 fasst die Folge in einer Zeile zusammen: Sobald ein Node eine Commitment-Transaktion entdeckt, für die er einen privaten Widerrufsschlüssel hat, ist die Ausgabe der Finanzierungstransaktion aufgelöst. Nichts bleibt zu verhandeln.
Was Sie sweepen, hängt davon ab, was das veraltete Commitment enthielt. Die Spezifikation verpflichtet Sie, die Hauptausgabe des Betrügers mit dem Widerrufsschlüssel aufzulösen, jede Zahlung, die er angeboten hat, auf eine von drei Arten aufzulösen (das Commitment mit dem Widerrufsschlüssel ausgeben, es mit der Zahlungs-Preimage ausgeben, wenn Sie sie kennen, oder seine HTLC-Timeout-Transaktion ausgeben, sobald er sie veröffentlicht) und auch seine HTLC-Success- und HTLC-Timeout-Transaktionen mit dem Widerrufsschlüssel aufzulösen. Sie sagt Ihnen außerdem, die Preimage aus dem Input-Witness zu ziehen, während Sie dabei sind, weil eine Zahlung, die Sie gerade verlieren würden, möglicherweise noch vom Hop vor Ihnen beansprucht werden kann.
Drei Witness-Formen decken all das ab, und BOLT 5 gibt die Größe jeder an: 160 Bytes für die Hauptsaldo-Ausgabe, 243 Bytes für eine angebotene Zahlung, 249 Bytes für eine angenommene. Addieren Sie die 164 Gewichtseinheiten des Inputs selbst, kostet jede beanspruchte Ausgabe 324, 407 oder 413. Der Rest der Transaktion sind 53 Bytes an Nicht-Witness-Daten plus ein 2-Byte-Witness-Header. Sie können auch Ihre eigene Hauptausgabe aus demselben Commitment einbeziehen, was 272 hinzufügt und vor allem dazu dient, die von Ihnen gezahlte Gebühr zu senken.
Zwei Dinge ist eine Penalty-Transaktion nicht. Sie ist nicht automatisch: Bitcoin bestraft niemanden, und der Sweep erfolgt nur, wenn Software, die Sie betreiben oder beauftragt haben, die veraltete Transaktion bestätigt sieht und reagiert, bevor der Timelock des Betrügers abläuft. Sie ist auch nicht kostenlos. Der Sweep zahlt den üblichen Satz wie jede andere Transaktion, sodass ein Kanal, der weniger enthält als das Leeren kostet, sich nicht zu verteidigen lohnt, was auch immer die Regeln erlauben.
Warum das beim Bitcoin-Kauf wichtig ist
Eine Penalty-Transaktion schützt Sie nur in einer Wallet, in der Sie eigene Commitment-Transaktionen halten, was die meisten einfachen Lightning-Apps ausschließt.
Die 41 Wallet-Bewertungen auf dieser Website teilen sich genau entlang dieser Linie. Phoenix betreibt auf dem Smartphone einen echten selbstverwahrenden Lightning-Node, sodass der Bestrafungsmechanismus Ihnen gehört und ebenso die Pflicht zum Beobachten: Der Wiederherstellungsweg von ACINQ lässt Sie einen Force Close erzwingen und etwa 720 Blöcke warten, rund fünf Tage, bevor die Kanalfonds On-Chain Ihnen gehören. BlueWallet ist nur auf Bitcoin ausgerichtet und On-Chain ungewöhnlich leistungsfähig, doch seine Lightning-Seite ist ein Konto auf einem LNDHub-Server, und wenn dieser Server nicht Ihrer ist, kann der Betreiber diese Bitcoin bewegen, sodass keine Commitment-Transaktion von Ihnen existiert, mit der sich jemand bestrafen ließe. Wallet of Satoshi ist in seinem Standardmodus ebenfalls verwahrend, was mit dazu beiträgt, dass es hier bei einer Bewertung von 2,7 steht statt in einer Empfehlung.
Lesen Sie das als Abwägung, nicht als Urteil. Verwahrung bei Lightning entfernt betrügerische Peers von Ihrer Bedrohungsliste und ersetzt sie durch ein einziges Unternehmen, das den Dienst einfrieren oder zurückziehen kann. Selbstverwahrung bei Lightning gibt Ihnen die Penalty-Transaktion und die Pflicht, wach zu sein. Der Fehler, der Menschen auf beiden Seiten erwischt, ist die Wiederverwendung eines alten Seed-Backups: Zwölf Wörter stellen On-Chain-Bitcoin wieder her und wissen nichts darüber, welcher Kanalzustand der aktuelle ist, sodass das von Ihnen veröffentlichte Commitment veraltet ist und die folgende Penalty-Transaktion auf Sie zielt.
Ein widerrufener Abschluss in einem Phoenix-Kanal
Stellen Sie sich einen Phoenix-Kanal mit drei noch laufenden Zahlungen vor, während der Node am anderen Ende ein Commitment von letzter Woche veröffentlicht.
Ihre Software erkennt die txid, leitet den Widerrufsschlüssel ab und baut einen einzigen Sweep. Sein Gewicht beträgt 324 für die Hauptausgabe des Betrügers, 413 für jede der drei angenommenen Zahlungsausgaben, 272 für das Einbeziehen Ihrer eigenen Hauptausgabe, viermal 53 Bytes Transaktionskörper und einen 2-Byte-Header: 2.049 Gewichtseinheiten oder etwa 512 virtuelle Bytes. Sein Geld liegt hinter dem relativen Timelock, den beide Seiten bei der Eröffnung des Kanals vereinbart haben, und solche Verzögerungen laufen in Tagen statt Minuten: Die Wiederherstellung nach einem Force Close in Phoenix dauert etwa 720 Blöcke, rund fünf Tage. Ihr Geld ist ausgebbar, sobald ein Miner Ihre Transaktion annimmt.
BOLT 5 ermittelt auch die Obergrenze. Gegenüber einem maximalen Standardgewicht von 400.000 und dem größten Input von 413 erreicht eine einzelne Penalty-Transaktion 966 Zahlungsausgaben, das Doppelte der 483 offenen Zahlungen pro Seite, die das Peer-Protokoll ohnehin erlaubt, sodass selbst ein vollständig gefüllter Kanal in einem Zug geleert werden kann.
Dann kommt der Grund, es nicht zu tun. Wo der Kanal Anchor-Ausgaben verwendet, sind die eigenen Zahlungstransaktionen des Betrügers mit SIGHASH_SINGLE und SIGHASH_ANYONECANPAY signiert, sodass er eigene Inputs anhängen und Ihren kombinierten Sweep im Mempool lange genug festhalten kann, bis der Timelock seiner Hauptausgabe abläuft. Wenn die Bestätigung nicht angekommen ist, wenn diese Ausgabe sich innerhalb der Sicherheitsverzögerung vor dem Ablauf befindet, ein Fenster, das BOLT 5 der Node-Richtlinie überlässt, aber 18 Blöcke empfiehlt, wird Ihnen gesagt, die Aufgabe aufzuteilen: eine Penalty-Transaktion pro widerrufener Ausgabe, die Gebühr erhöht, bis jede bestätigt ist. Bei Commitments ohne Gebühr muss jede davon außerdem innerhalb des Limits von 10.000 virtuellen Bytes bleiben, das Transaktionen der Version 3 haben, sonst erreicht sie die Miner möglicherweise nie.
Penalty-Transaktion vs. Force Close
Ein Force Close ist jeder einseitige Ausstieg aus einem Kanal, während eine Penalty-Transaktion die Antwort auf einen unehrlichen ist.
Die meisten Force Closes sind unspektakulär. Ein Peer ging offline, eine Zahlungsfrist nahte, der Node von jemandem veröffentlichte den aktuellen Zustand, und beide Seiten erhalten nach Ablauf der Verzögerung den Saldo, der ihnen zustand. Eine Penalty-Transaktion existiert nur im engen Fall, dass das veröffentlichte Commitment bereits widerrufen war, und sie nimmt den gesamten Kanal statt einen Anteil. Jede Penalty-Transaktion folgt auf einen Force Close, und fast kein Force Close erzeugt eine.
Penalty-Transaktion vs. Watchtower
Eine Penalty-Transaktion ist eine signierte Bitcoin-Transaktion, während ein Watchtower eine Maschine ist, die wartet, um eine in Ihrem Namen zu senden.
Der Tower speichert ein kurzes Präfix der widerrufenen txid und einen Datenblock, den er nicht entschlüsseln kann, bis diese Transaktion in einem Block auftaucht. Der darin enthaltene Sweep wurde von Ihrem eigenen Node gebaut und signiert und zahlt an eine Adresse aus, die gewählt wurde, bevor etwas schiefging, sodass Ihnen die Beauftragung eines Towers keine Schlüssel kostet. Die beiden zu verwechseln erzeugt die falsche Sorge. Keinen Tower zu betreiben schwächt die Penalty-Transaktion überhaupt nicht; es bedeutet, dass niemand wach ist, um sie zu senden, während Ihr Laptop geschlossen ist.