Wie funktioniert das Bitcoin Lightning Network?

Die Kapazitäten der Bitcoin Blockchain sind begrenzt. Abhilfe schafft eine Second-Layer-Lösung, das Lightning Network. In diesem Artikel erkläre ich die technische Funktionsweise des Bitcoin Lightning Network anhand von Payment Channels.

Mit der steigenden Nutzung der Bitcoin-Blockchain ergibt sich ein Problem: Die Erhöhung der Transaktionsanzahl im Netzwerk führt dazu, dass nicht mehr alle Transaktionen verarbeitet werden können, denn Blöcke speichern nur eine Datenmenge von 1 Mbit. Die Skalierungslösung SegWit, die Mitte 2017 eingeführt wurde, reduzierte die Größe der Transaktionen um 60 %, sodass mehr Transaktionen pro Block abgespeichert werden können. SegWit kann als technische Grundlage des Lightning Networks angesehen werden. Leider reicht diese Lösung noch nicht aus. Hier kommt das Ligtning Network zum tragen.

Wie funktioniert das Bitcoin Lightning Network?

Ein zentraler Bestandteil sind die Payment Channels, deren Funktionsweise im folgenden erklärt wird:

Die Bitcoin Blockchain ist ein Broadcast-Netzwerk, dies bedeutet, dass jeder Knoten jede Transaktion empfangen, validieren und speichern muss. Dies ist zwar sinnvoll, aber auch ineffektiv. Das Lightning Network behebt das Problem, das alle Knoten jeweils das Gleiche ausführen: es bildet eine Art Sub-Netzwerk von Zahlungs-Kanälen (Payment Channels).

Payment Channels sind Sub-Netzwerke aus Zahlungs-Kanälen, die Off-chain existieren.

Diese Channels existieren off-chain, das heißt, dass das, was in ihnen geschieht, nicht auf der Blockchain gespeichert wird. Nur die Eröffnungs-Transaktion (als Funding Transaction bezeichnet) und die Schließungs-Transaktion (Commitment Transaction) werden in die Blockchain geschrieben.

Was sind die Vorteile von Payment Channels?

  • Privatsphäre: In der Bitcoin-Blockchain ist einsehbar, was die Nutzer machen. Werden jedoch Transaktionen off-chain durchgeführt, können einzelne Werte nicht von anderen Blockchain-Nutzern gesehen werden.
  • Skalierbarkeit: Das Broadcast-Netzwerk von Bitcoin selbst kann nicht skalieren. Mehr Teilnehmer machen das Netzwerk zwar sicherer, aber nicht effektiver, sondern erhöhen die Datenlast. Ein Transaktionsvolumen, wie das von Zahlungsdienstleister VISA ist nicht möglich, mit dem Lightning Netzwerk wird das möglich sein.
  • Geschwindigkeit: Eine Bitcoin-Transaktion wird im Durchschnitt erst nach 10 min (sicher erst bis hin zu einer Stunde) bestätigt. Durch das Lightning Netzwerk werden Transaktion sofort gültig.

Wie funktionieren Payment Channels?

Um einen Payment Channel zu eröffnen, müssen zwei Parteien, hier Anna und Bert, gemeinsame eine 2-von-2-Multisignature-Wallet erstellen. Eine 2-von-2-Multisig bedeutet, das beide Parteien Zugriff auf die Wallet besitzen, und nur, wenn beide Parteien eine Transaktion signieren, der Wert ausgezahlt werden kann; ähnlich dem Kautionskonto.

Beide Parteien senden eine UTXO (Unspent Transaction Output) an die Adresse des Wallets und signieren diese. Sie hinterlegen auf der Wallet einen gewissen Betrag als Pfand und schicken jeweils z.B. 0.5 BTC an die Wallet. Damit ist die Funding Transaction erstellt. Diese wird noch nicht publiziert, sondern als Commitment Transaction ausgeben und dient als Pfandschein. Diese existiert zweifach und hält die Werte der Eingangs-Transaktion fest: 0.25 BTC von Anna, 0.25 BTC von Bert. Diese Commitment Transaction muss von beiden signiert werden.

Commitment Transaction als Pfandschein

Die Commitment Transaction funktioniert wie ein Überweisungsschein, der (erst mal) nicht bei der Bank abgegeben wird. Stattdessen wird mit jeder Transaktion eine neue Commitment Transaction erstellt, die den jeweiligen Saldo der Parteien festhält. Um einen Payment Channel zu schließen, wird die Commitment Transaction in die Blockchain übertragen. Beide Parteien haben zu jedem Zeitpunkt unabhängig voneinander das Recht dazu. 

Was passiert wenn die Commitment Transaction nicht publiziert wird?

Angenommen Bert möchte 0.1 BTC an Anna schicken und gibt die Funding-Transaktion mit den Werten 0.035 BTC an Anna, 0.015 BTC an Bert, in einer zweiten Commitment-Transaktion aus. Beide signieren diese, sie wird aber nicht publiziert. Damit wird die erste Commitment Transaction (jeweils 0,25 BTC an Anna und Bert) zerstört. Das Update geschah, ohne dass dies in der Blockchain registriert wurde. 

Was passiert mit alten Commitment Transactions?

Wird im Payment Channel eine Transaktion getätigt, wird eine neue Commitment Transaktion erstellt, die vorherige aber nicht gelöscht. Es existieren also mehrere gleichzeitig, die alle theoretisch auf die Blockchain übertragen werden können. Wie stellt man sicher, dass nur die aktuellste Transaktion übertragen wird?

Hier soll das Beispiel vom Anfang dienen: es wird eine erste Commitment Transaction ausgegeben (0.25 BTC gehören Ana, 0.25 BTC Bert). Die Beiden tätigen eine beliebige Anzahl an Transaktionen und das Guthaben verschiebt sich zugunsten Anna. Angenommen Bert hat kriminelle Absichten und möchte die erste Commitment Transaction an die Blockchain übertragen um die 0.25 BTC einzustreichen.

Wie kann Anna das verhindern?
In jeder Commitment Transaction ist ein Time Lock von ca. 144 Blöcken enthalten, d.h., das in dieser Zeit die Transaktion nicht auf die Blockchain publiziert werden kann. Anna hat in dieser Zeit die Möglichkeit zu prüfen, ob Bert eine falsche Transaktion publizieren will. Erwischt Anna Bert beim Betrügen, kann sie den gesamten Channel zu ihrem Gunsten auflösen und den ganzen Betrag für sich verbuchen. Dazu verwendet sie den Revocation Key. Mit ihm ist es möglich, eine Transaktion vor Ende der 144-Block-Wartezeit zu publizieren. Dieser Revocation Key wird mittels einem Hash in der Commitment Transaction bereitstellt. Dieser Revocation Key kann von beiden zusammen gefunden werden.

Vereinfacht gesagt, funktioniert das kryptografische Konzept so, dass Anna und Bert sich zusammen auf eine geheime Folge von Keys verständigen, sie aber den aktuellsten Key nicht kennen. Dafür ist aber der Hash des aktuellsten Key bekannt, der anzeigt, der wievielte Key er in der Folge ist und mit dem sich vorherigen Keys errechnen lassen. Ziel des Revocation Keys ist es alte Commitment Transaktionen (als digitales Gut) zu erhalten.

Versucht Bert die alte Commitment Transaction zu publizieren, kann Anna den Revocation Key verwenden und Bitcoins der Funding Transaction (0.25 und 0.25) selbst einstreichen.  

Payment Channel als Netzwerk

Interessant wird es, wenn zwei oder mehr Zahlungskanäle zusammenarbeiten, um ein Netzwerk zu bilden. Dadurch wird es möglich, dass sich Personen Transaktionen senden können, ohne miteinander verbunden zu sein – dem Routing. Dazu braucht es einen Netzwerk-Knoten, der zwischengeschaltet ist. Wenn Bert einen Payment Channel mit Charlie hat, kann Anna, wenn sie eine Transaktion an Charlie schicken möchte, dies über Bert tun. Bert ist bei der Transaktion nur zwischengeschaltet. Transaktionen können auch über mehrere Kanäle hinweg gesendet werden. Verhält sich ein Node nicht protokollkonform, können alle Transaktionen rückgängig gemacht werden.

Vorteile der Payment Channels im Bitcoin Lightning Network

  • Sofortige Transaktionen
  • Geringe Gebühren
  • Skalierbarkeit
  • stellt Interoperalität zwischen Blockchains her (mittels Atomic Swaps)
  • Niedrige Kosten: Durch die Abwicklung und Abrechnung außerhalb der Blockchain ermöglicht das Lightning Network niedrige Gebühren        

Nachteile der Payment Channels im Bitcoin Lightning Network

  • Zwar ist das Lightning Network schon in der Anwendung, allerdings mit nur kleiner Nutzerzahl


Quellen:
Poon, Dryja: The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments [Offizielles Paper]
Github: Lightning Release v0.6.3

Bild: Milindri by Getty Images/Canva