57 / 736TOWER

Lightning Watchtower

Watchtower — delegierte Kanalüberwachung

Ist dein Lightning-Knoten offline, muss trotzdem jemand darauf achten, dass die Gegenpartei den Kanal nicht mit einer bereits widerrufenen Geldverteilung schließt. Ein Lightning Watchtower kann das erkennen und mit den zuvor erhaltenen Daten eingreifen.

Ein Lightning Watchtower überwacht die Bitcoin-Blockchain für den Nutzer eines Zahlungskanals. Veröffentlicht die Gegenpartei einen widerrufenen Zustand, kann er eine vorbereitete Rückholungstransaktion senden. Das hilft bei einem Knotenausfall, setzt aber richtige Daten, eine funktionierende Verbindung und eine rechtzeitige Bestätigung voraus. Ein Knoten ist das Programm, das Kanäle verwaltet und Lightning-Zahlungen verarbeitet; ohne Verbindung kann es sich nicht mit den anderen Teilnehmern austauschen.

Anna und Pavel haben einen Zahlungskanal: Ihr Geld ist gemeinsam in Bitcoin gebunden, und Lightning-Zahlungen verändern dessen Aufteilung. Pavel bezahlt Anna, beide stimmen den neuen Guthaben zu und widerrufen den alten Zustand. Dann fällt Annas Internet aus. Würde Pavel den alten Zustand veröffentlichen, könnte er versuchen, bereits ausgegebenes Geld zurückzuholen. Für diesen Fall kann Anna einen Lightning Watchtower einsetzen. Ihr Knoten übermittelt ihm vorher verschlüsselte Daten zum Schutz widerrufener Zustände. Erkennt der Dienst die zugehörige Transaktion in der Blockchain, kann er eine Rückholungstransaktion senden, ohne dass Anna online ist. Er führt keine Zahlungen für sie aus und behebt auch nicht den Ausfall ihres Knotens. [1] [8]

Zu jeder vereinbarten Geldverteilung gehört eine Commitment Transaction: eine signierte Transaktion, mit der sich der Kanal auf der Bitcoin-Blockchain schließen lässt. Bei einer Aktualisierung tauschen die Teilnehmer Informationen aus, mit denen die Veröffentlichung des vorherigen, widerrufenen Zustands bestraft werden kann. Hier geht es um dieses Kanalmodell mit Strafmechanismus. Verwendet Pavel den aktuellen gültigen Zustand, darf er den Kanal auch während Annas Ausfall einseitig schließen. Der Watchtower soll das nicht verhindern. Er reagiert auf einen bestimmten widerrufenen Zustand, unabhängig davon, ob Pavel ihn absichtlich oder versehentlich aus einer alten Sicherung veröffentlicht. Entscheidend ist der Widerruf, nicht das Alter der Transaktion. [1] [8]

Eine Seed Phrase ist eine Sicherung in Form von Wörtern. Damit lassen sich die privaten Schlüssel wiederherstellen, die zum Signieren von Zahlungen nötig sind. LND ist eines der Programme zum Betrieb eines Lightning-Knotens. Anna gibt dem Dienst weder ihre Seed Phrase noch die privaten Schlüssel ihrer gesamten Wallet. Sie übermittelt begrenzte Unterlagen und Signaturen für einen bestimmten Eingriff; bei LND heißt dieses Paket JusticeKit. Die Rückholungstransaktion, genannt justice transaction, führt geschützte Mittel nach vorher festgelegten Bedingungen zurück. Der Watchtower erhält damit keine freie Verfügung über Annas andere Coins. Beim Modell ohne Vergütung für den Dienst wird die Bitcoin-Transaktionsgebühr vom geschützten Betrag abgezogen. Der Code kennt auch Typen mit einer Vergütung für den Tower. Das belegt allein jedoch nicht, dass ein bestimmter Betreiber einen kostenpflichtigen Dienst anbietet. [3] [4] [5]

Damit der Watchtower helfen kann, muss er die notwendigen Daten tatsächlich erhalten. Seine Adresse einzutragen oder einen Auftrag in der Versandwarteschlange zu sehen genügt nicht. Der Client, also der Teil von Annas Knoten, der mit dem Tower kommuniziert, braucht Empfangsbestätigungen für die Aktualisierungen. Die Verbindung kann ausfallen, eine als Session bezeichnete Speichervereinbarung kann ihre Kapazität ausschöpfen oder eine Sicherung abgelehnt werden. Anna muss deshalb auch nicht zugestellte Aktualisierungen und Fehler verfolgen. Selbst angenommene Daten garantieren keinen Erfolg: Der Tower muss die richtige Blockchain weiter beobachten und seinen Eingriff rechtzeitig in einem Block bestätigen lassen. [6] [8]

Verliert Anna ihr Gerät, stellt sie es nicht aus dem Watchtower wieder her. Der Dienst überwacht den Missbrauch widerrufener Zustände; er stellt keine Wallet wieder her und hilft nicht gegen gestohlene Schlüssel. LND verwendet zur Kanalwiederherstellung ein Static Channel Backup (SCB). Zusammen mit dem Wallet-Seed hilft es, Geld durch Kanalschließungen zurückzuholen, statt den Knoten exakt am letzten Stand fortzusetzen. Ein SCB ist weder eine Kopie jeder Aktualisierung noch das verschlüsselte Paket für den Tower. Besonders gefährlich ist es, eine alte channel.db ohne das richtige Wiederherstellungsverfahren zu starten: Der Knoten könnte seinen eigenen widerrufenen Zustand veröffentlichen. Befolge die Sicherungsanleitung für deine konkrete Wallet und Version. [7]

Ein Transaktionsausgang legt einen Betrag und die Bedingungen fest, unter denen er ausgegeben werden darf. Der Schutz beruht darauf, dass derjenige, der seinen Kanalzustand veröffentlicht, seinen verzögerten Ausgang nicht sofort ausgeben kann. BOLT 3 nennt diesen Ausgang to_local und die Wartezeit to_self_delay. CSV ist die Regel, die diese Verzögerung ab der Bestätigung des Ausgangs in Blöcken misst. Mit dem passenden Widerrufsschlüssel kann die andere Seite den Strafpfad ohne diese Wartezeit nutzen. So erhält der Watchtower einen zeitlichen Vorsprung. Nach Ablauf der Verzögerung verschwindet der Strafpfad nicht, doch nun kann auch die Gegenpartei das Geld ausgeben. Entscheidend ist, welche der widersprüchlichen Ausgaben gültig bestätigt wird. Das bloße Senden der Rückholungstransaktion reicht deshalb nicht, und eine Blockanzahl entspricht keiner exakten Stundenzahl. [1] [9]

Prüfe vor der Wahl des Dienstes, was er tatsächlich schützt. HTLCs sind bedingte Zahlungen, die im Kanal noch offen sein können; die Überwachung der Guthaben belegt ihre Absicherung nicht. Dust bezeichnet hier einen Ausgang, der für die Aufnahme in diese Transaktion zu klein ist. Der geprüfte backupTask in LND v0.21.3-beta bereitet die vorhandenen Outputs to_local und to_remote des widerrufenen Commitments vor, sofern sie nicht Dust sind. Er umfasst keinen allgemeinen Schutz sämtlicher HTLC-Outputs; die entsprechende Dokumentation nennt dies als künftige Erweiterung. Bitcoin Script ist die Sprache für die Ausgabebedingungen eines Transaktionsausgangs. Dass ein Ausgang über einen Strafpfad ausgegeben werden kann, bedeutet noch nicht, dass ein bestimmter Watchtower die nötigen Daten erhalten hat oder diesen Schutz ausführen kann. [3] [5]

Das verschlüsselte Paket setzt nicht voraus, dass der Tower laufend alle Guthaben von Anna lesen kann. Er sucht mit einer kurzen Kennung nach Treffern und nutzt Angaben aus der erkannten Transaktion zum Entschlüsseln. Es folgt eine technische Referenz für eine bestimmte LND-Version: txid bezeichnet die Transaktionskennung, Blob ein Datenpaket. In LND v0.21.3-beta besteht BreachHint aus den ersten 16 Byte des SHA-256-Hashes der binären txid. BreachKey entsteht durch SHA-256 der Verkettung derselben binären txid zweimal hintereinander. Gemeint sind weder die ersten 16 Zeichen der angezeigten txid noch einfach ihre erste Hälfte. Der Client verschlüsselt das JusticeKit; bei Kenntnis der passenden Transaktion lassen sich der Schlüssel ableiten und die Daten entschlüsseln. [2] [3]

Einen Tower für andere zu betreiben und eigene Kanäle überwachen zu lassen sind verschiedene Aufgaben. Diese Einstellungen richten sich an LND-Betreiber; RPC ist die Schnittstelle, über die das Programm Befehle empfängt. LND trennt watchtower.active für den Server von wtclient.active für den Client. Das bloße Aktivieren des Servers richtet keine Sicherung der eigenen Kanäle bei einem anderen Watchtower ein. lncli tower info zeigt pubkey, listeners und uris des Servers; lncli wtclient add registriert einen Watchtower für den Client. Der öffentliche Schlüssel des Watchtowers unterscheidet sich vom Schlüssel des Lightning-Knotens. Prüfe Netzwerk, Erreichbarkeit der Adresse und RPC-Unterstützung im verwendeten Build. [5]

Der Eingriff muss Platz in einem Bitcoin-Block bezahlen. Ein Satoshi ist die kleinste Einheit von Bitcoin. Ein virtuelles Byte misst die Transaktionsgröße und berücksichtigt dabei das unterschiedliche Gewicht ihrer Bestandteile. Der Gebührensatz wird in Satoshi pro virtuellem Byte Transaktionsgröße angegeben, nicht als Prozentsatz des geschützten Geldes. In LND v0.21.3-beta gibt das Feld sweep_sat_per_vbyte in Policy und Session den Gebührensatz in sat/vB an. Die Gebühr verringert den zurückgegebenen Betrag. backupTask kann einen Zustand mit zu geringem Wert oder ungeeigneten Session-Parametern ablehnen; nicht jeder vorbereitete Auftrag ist eine geeignete Sicherung. Eine spätere Einstellungsänderung beweist keine Änderung zuvor signierter Transaktionen, und ein unzureichender Gebührensatz kann den Eingriff verzögern. [3] [6]

Ein zweiter Tower hilft beim Ausfall des ersten nur, wenn er selbst die notwendigen Daten erhalten hat. Unabhängigkeit betrifft auch Verbindung und Betreiber, nicht bloß einen anderen Dienstnamen. Mehrere unabhängige Watchtowers und eigene Überwachung können die Folgen eines einzelnen Ausfalls begrenzen. Prüfe aber, welche konkreten Aktualisierungen jeder Watchtower angenommen hat; mehrere registrierte Adressen allein beweisen nicht, dass alle Zustände repliziert wurden. Getrennte Rechner, Netzwerke und Standorte reduzieren gemeinsame Ausfälle. Verschlüsselte Blobs und authentifizierte Verbindungen begrenzen die Sichtbarkeit von Guthaben, beseitigen jedoch weder Metadaten noch die Sichtbarkeit der Aktualisierungshäufigkeit oder das Korrelationsrisiko. [5] [8]

Unterscheide bei der Kontrolle vor allem zwischen einer gesendeten und einer tatsächlich empfangenen Aktualisierung. Die folgenden Befehle und Felder sind eine ausführlichere Hilfe für LND-Administratoren; eine Empfangsbestätigung des Towers ist keine Transaktionsbestätigung in einem Block. Verwende lncli wtclient towers, lncli wtclient tower, lncli wtclient stats und lncli wtclient policy. Unterscheide in LND v0.21.3-beta num_backups von num_pending_backups; das zweite Feld bezeichnet Sicherungen, die auf die Bestätigung des Watchtowers warten. num_failed_backups in der stats-Antwort zählt nicht bestätigte fehlgeschlagene Sicherungen. Die Statistiken gelten seit dem Start des Clients. active_session_candidate bezeichnet einen Kandidaten für Sessions, keinen Nachweis vollständigen Schutzes. [6]

Eine richtige Konfiguration ist der Anfang. Ein Test sollte den ganzen Ablauf von der Erkennung eines widerrufenen Zustands bis zur Rückholung der geschützten Mittel abdecken; verwende dafür nicht dein echtes Geld. Prüfe das konkrete Release von Client und Watchtower, den unterstützten Kanal- und Session-Typ, die Aktualität der Daten, Gebühren und Blockchain-Synchronisation. Teste die Reaktion in einer isolierten Testumgebung; eine gewöhnliche einseitige Schließung (force close) beweist keinen Eingriff gegen einen widerrufenen Zustand. Das Ergebnis wird durch die Veröffentlichung des widerrufenen Zustands (breach), die erstellte justice transaction und ihre bestätigten Outputs belegt. Eine erfolgreiche Demonstration garantiert weder künftige Verfügbarkeit noch die Beseitigung sämtlicher Lightning-Risiken. [1] [3] [6]

Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Lightning Network, Payment Channel, Selbstverwahrung. Auf diesen Eintrag verweisen außerdem Payment Channel.

DOC · 001BOLT 3 — Revocation and delayed outputsSpezifikation DOC · 002LND v0.21.3-beta — Breach hint and key derivationDokumentation DOC · 003LND v0.21.3-beta — Watchtower backup taskDokumentation DOC · 004LND v0.21.3-beta — Watchtower blob typesDokumentation DOC · 005LND v0.21.3-beta — Watchtower configurationDokumentation DOC · 006LND v0.21.3-beta — Watchtower client RPCDokumentation DOC · 007LND v0.21.3-beta — Recovery and static backupsDokumentation DOC · 008Lightning Labs — Watchtower operationDokumentation DOC · 009BIP 112 — CHECKSEQUENCEVERIFYSpezifikation
Überarbeitet: Quellenbasiert · Keine Anlageberatung