Zum Inhalt springen
buybitcoinsmart

Glossar / Lightning und Layer 2

Widerrufsschlüssel

Was ist ein Widerrufsschlüssel?
Ein Widerrufsschlüssel ist der verblindete öffentliche Schlüssel, der die verzögerten Ausgaben und die HTLC-Ausgaben einer Lightning-Commitment-Transaktion sperrt, die Ihr Kanalpartner ausgeben kann, sobald Sie das Geheimnis preisgeben, das diesen Zustand zurückzieht.

Jede Lightning-Commitment-Transaktion trägt einen Widerrufszweig, den niemand signieren kann, bis eine Seite ein Geheimnis pro Commitment offenlegt. BOLT 3 nummeriert diese Geheimnisse von 281.474.976.710.655 abwärts, und der Empfänger kann jedes davon in einem Feld mit 49 Plätzen aufbewahren. Wenn Sie einen Zustand veröffentlichen, den Sie bereits widerrufen haben, kann Ihr Peer das gesamte Kanalguthaben an sich nehmen, weshalb eine Seed-Phrase Lightning nicht sichern kann.

Wie es funktioniert

Ein Widerrufsschlüssel ist bewusst so aufgebaut, dass keine der beiden Seiten eines Kanals ihre private Hälfte allein berechnen kann.

Wenn Ihr Node ein neues Commitment für Ihren Peer vorbereitet, nimmt er seinen eigenen revocation_basepoint und den per_commitment_point Ihres Peers, multipliziert jeden der beiden mit dem SHA256 des Paares, wobei dieser Punkt zuerst geschrieben wird, und addiert die Ergebnisse. BOLT 3 formuliert die Eigenschaft in einer Zeile: Die Konstruktion stellt sicher, dass weder der Node, der den Basepoint liefert, noch der Node, der den Punkt liefert, den privaten Schlüssel ohne das Geheimnis des anderen Nodes kennen kann. Der private Schlüssel existiert nirgends, bis die zweite Hälfte eintrifft.

Dieses Eintreffen ist eine Nachricht. Sobald Ihr Peer Ihre Signatur auf seinem neuen Commitment geprüft hat, antwortet er mit revoke_and_ack, Nachrichtentyp 133, die ein per_commitment_secret von 32 Byte für den gerade abgelösten Zustand sowie den Punkt für den nächsten enthält. Von da an können Sie den revocationprivkey für den alten Zustand berechnen, und Ihr Peer kann ihn nicht zurücknehmen.

Der Schlüssel erscheint in zwei Arten von Output. Ein to_local-Output ist ein P2WSH, dessen Witness-Skript OP_IF, den revocationpubkey, OP_ELSE, to_self_delay, OP_CHECKSEQUENCEVERIFY, OP_DROP, den local_delayedpubkey, OP_ENDIF, OP_CHECKSIG liest: Der Eigentümer muss to_self_delay Blöcke abwarten, während ein Inhaber des Revocation-Keys sofort mit dem Witness-Stack aus einer Signatur und einer 1 ausgibt. Jeder HTLC-Output trägt denselben Schlüssel, heruntergehasht auf 20 Byte mit RIPEMD160 über SHA256, und BOLT 5 verlangt, dass der bestrafende Node auch die HTLC-success- und HTLC-timeout-Transaktionen des Betrügers mit diesem Schlüssel abräumt.

Die Speicherung ist der Punkt, an dem das Design clever wird. Ein Kanal kann 281.474.976.710.655 Geheimnisse pro Commitment verbrauchen, eines pro Zustand, alle erzeugt aus einem einzigen nicht erratbaren Seed von 256 Bit durch Bitumlegen und Hashing, wobei der Index abwärts statt aufwärts zählt. Weil aus einem Geheimnis, dessen Index auf abschließende Nullen endet, jedes Geheimnis von dort bis zur nächsten Zweierpotenzgrenze abgeleitet wird, bewahrt der empfangende Node nur 49 Paare aus Wert und Index auf und rekonstruiert den Rest bei Bedarf. BOLT 3 lässt den Empfänger außerdem seine früheren Geheimnisse aus jedem neuen Eintreffen als Prüfung neu ableiten, sodass ein Peer, der heimlich den Seed gewechselt hat, sofort auffällt und nicht erst beim Schließen.

Warum das wichtig ist, wenn Sie Bitcoin kaufen

Widerrufsschlüssel sind der Grund, warum sich ein Lightning-Guthaben ganz anders verhält als die On-Chain-Bitcoin, die Ihnen eine Börse sendet.

Von den 41 Wallets, die diese Website bewertet, gehen die, die Ihnen Lightning zugänglich machen, sichtbar unterschiedlich mit dem Zustandsproblem um, und diese Aufteilung erklärt ihre Bewertungen. Phoenix betreibt auf dem Smartphone einen echten eigenständigen Node hinter einer standardmäßigen BIP39-Seed-Phrase auf einem BIP84-Pfad, und unsere Bewertung stellt ausdrücklich klar, dass die Seed-Phrase der On-Chain-Rückfall und nicht der Kanal ist: Wenn ACINQ verschwände, würden Sie ein erzwungenes Schließen auslösen, ungefähr 720 Blöcke abwarten, etwa fünf Tage, und on-chain mit Electrum wiederherstellen. Muun lehnt die Wortliste vollständig ab und übergibt Ihnen eine Emergency-Kit-Datei mit beiden Multisig-Schlüsseln plus den Output-Deskriptoren, mit der veröffentlichten Begründung, dass eine Mnemonic Schlüssel sichert, während ihre Bitcoin in Skripten liegen, über die eine Wallet ebenfalls informiert werden muss. Der standardmäßige verwahrende Modus von Wallet of Satoshi beseitigt das Problem, indem er Sie daraus entfernt: Das Unternehmen verwahrt jedes Geheimnis, weshalb es hier einen Warnstatus und eine Bewertung von 2,7 trägt und weshalb es am 23. November 2023 aufhören konnte, US-Kunden zu bedienen, und zum Jahreswechsel 2026 den Dienst in der gesamten Europäischen Union zurückziehen konnte, sodass EU-Inhabern nur der Modus der Selbstverwahrung bleibt. BlueWallet ist on-chain selbst verwahrend und dafür mit 4,2 bewertet, während ein Lightning-Guthaben dort in einem LNDHub-Konto liegt, das Ihre On-Chain-Wiederherstellungsphrase nicht abdeckt.

Das Protokoll gibt Ihnen ein Sicherheitsnetz, und es lohnt sich, es genau zu kennen. Wenn Sie sich mit einem veralteten Zustand neu verbinden, legt channel_reestablish ihn offen: Die Nachricht Ihres Peers nennt eine Widerrufsnummer, die höher ist als erwartet, und schickt das letzte per_commitment_secret zurück, das Sie gesendet haben, was beweist, dass die Behauptung ehrlich ist. BOLT 2 besagt dann, dass Sie Ihre eigene Commitment-Transaktion nicht verbreiten dürfen und stattdessen einen Fehler senden sollten, mit dem Sie Ihren Peer bitten, den Kanal fehlschlagen zu lassen. Das ist eine Regel, die ehrliche Software befolgt, keine Konsensgarantie, und sie schützt Sie nur, solange Sie davon absehen, den veralteten Zustand selbst zu veröffentlichen. BOLT 5 fasst die entsprechende Pflicht klar: Ein Node darf keine Commitment-Transaktion verbreiten, für die er das per_commitment_secret bereits offengelegt hat.

Praktisch liegt das Risiko in Ihrer empfangenden Wallet und nirgends sonst. Der Kauf bei einer der 63 Börsen, die diese Website führt, und die Auszahlung über Lightning setzen Sie ihm nicht aus, weil die Kanäle der Börse das Problem der Börse sind. Ihre Exposition beginnt in dem Moment, in dem die Bitcoin an einer Stelle eintreffen, an der Sie den Node betreiben sollen.

Der Testvektor von BOLT 3, Schlüssel für Schlüssel

BOLT 3 enthält in seinem Anhang eine ausgearbeitete Ableitung, und sie zu lesen ist der schnellste Weg zu erkennen, dass beide Hälften eines Revocation-Keys tragend sind.

Beginnen Sie mit einem revocation_basepoint von 036d6caac248af96f6afa7f904f550253a0f3ef3f5aa2fe6838a95b216691468e2 und einem per_commitment_point von 025f7117a78150fe2ef97db7cfc83bd57b2e2c0d0dd25eaf467a4a1c2a45ce1486. Wird der Basepoint zuerst gehasht, ergibt sich efbf7ba5a074276701798376950a64a90f698997cce0dff4d24a6d2785d20963, und wird der Punkt zuerst gehasht, ergibt sich cbcdd70fcfad15ea8e9e5c5a12365cf00912504f08ce01593689dd426bca9ff0. Multiplizieren Sie jeden Punkt mit dem Hash, der mit ihm beginnt, addieren Sie die beiden Ergebnisse, und heraus kommt der revocationpubkey 02916e326636d19c33f13e8c0c3a03dd157f332f3e99c317c141dd865eb01f8ff0.

Nichts an diesem öffentlichen Schlüssel verrät den privaten. Er erscheint erst, wenn der Peer das passende per_commitment_secret preisgibt, 1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100, woraufhin dieselben zwei Hashes mit diesem Geheimnis und dem Geheimnis des Basepoints kombiniert den revocationprivkey d09ffff62ddb2297ab000cc85bcb4283fdeb6aa052affbc9dddcf33b61078110 ergeben. Eine Kanalaktualisierung, eine Offenlegung, und ein öffentlicher Schlüssel, der einen Moment zuvor Dekoration war, wird zu einem Anspruch auf den gesamten Output.

Widerrufsschlüssel vs. Seed-Phrase

Ein Revocation-Key und eine Seed-Phrase sind beide Geheimnisse, von denen Ihr Geld abhängt, und nur eines davon lässt sich auf Papier schreiben.

Eine Seed-Phrase ist statisch. Zwölf oder vierundzwanzig Wörter legen jeden Schlüssel fest, den die Wallet jemals ableiten wird, zusätzliche Kopien machen Sie sicherer, und eine alte Kopie ist genau so gut wie eine frische. Revocation-Geheimnisse kehren alle drei Eigenschaften um. Sie treffen eines pro Kanalaktualisierung ein, innerhalb von revoke_and_ack, von der anderen Seite; die Kopien, auf die es ankommt, sind die Offenlegungen Ihres Peers, die Ihre eigene Seed-Phrase nicht neu erzeugen kann; und eine alte Kopie des Kanalzustands ist keine Sicherung, sondern eine Belastung, weil Handeln danach nicht von Betrug zu unterscheiden ist. Das Speicherschema mit 49 Plätzen existiert genau deshalb, weil sich diese Geheimnisse viel zu oft ändern, um sie aufzuschreiben.

Die praktische Folge ist die Warnung, die jede Lightning-Wallet wiederholt. Stellen Sie eine Lightning-Wallet allein aus Wörtern wieder her und beginnen Sie auszugeben, haben Sie einen Zustand erneut veröffentlicht, den Sie bereits widerrufen haben, und das ist das Einzige, was BOLT 5 ausdrücklich verbietet und worauf der Revocation-Key Ihres Kanalpartners gewartet hat.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Sichert meine Seed-Phrase meine Lightning-Kanäle?

Nein, eine Seed-Phrase stellt Schlüssel und Adressen wieder her, aber nicht die per-commitment-Geheimnisse, die Ihnen Ihr Kanalpartner gesendet hat; BOLT 3 sieht vor, dass der empfangende Node sie speichert, sobald sie eintreffen, sodass eine allein aus Wörtern wiederhergestellte Wallet einen veralteten Stand jedes Kanals hat. Muun umgeht diese Verwirrung, indem statt einer Wortliste eine Datei namens Emergency Kit gesichert wird, die sowohl die Schlüssel als auch die Output-Deskriptoren enthält.

Was passiert, wenn ich versehentlich einen alten Zustand eines Lightning-Kanals übertrage?

Ihr Kanalpartner kann das gesamte Guthaben des Kanals an sich nehmen, weil das per-commitment-Geheimnis, das Sie beim Außerkraftsetzen jenes Zustands herausgegeben haben, es ihm erlaubt, den Widerrufszweig jeder Ausgabe auf einmal zu signieren, ohne eine Wartezeit abwarten zu müssen.

Kann mein Kanalpartner einen Widerrufsschlüssel gegen mich einsetzen, wenn ich nichts falsch gemacht habe?

Nein, denn der private Widerrufsschlüssel für Ihren aktuellen Zustand existiert noch nicht. Er benötigt ein per-commitment-Geheimnis, das Sie nicht offengelegt haben, und BOLT 3 bildet den Schlüssel aus Material, das beide Seiten beitragen, sodass keine Seite ihn allein ableiten kann.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Lightning und Layer 2

Diese Seite auf Englisch lesen