Website-Icon BitcoinBlog.de – das Blog für Bitcoin und andere virtuelle Währungen

Die Lightning FAQ für Fortgeschrittene

Lightning Strikes. Bild von skyseeker via flickr.com. Lizenz: Creative Commons

Das Lightning Netzwerk bewegt derzeit die Bitcoin-Szene. Für die einen wird es das derzeitige Kapazitätsproblem von Bitcoin lösen und die Rampe für einen neuen Flug zum Mond sein, da es Transaktionen fast endlos skaliert. Mainstream, wir kommen! Für die anderen ist es dagegen nur ein schlechter Witz, der sowieso nicht funktionieren kann. Nun, da Lightning langsam echt wird, versuchen wir in einer FAQ für Fortgeschrittene ein wenig tiefer in die Materie einzusteigen.

Bevor wir anfangen, uns einigen speziellen Fragen zu Lightning zuzuwenden, solltet ihr zumindest in Grundzügen wissen, worum es geht. Hier findet ihr eine Einführung in die Payment Channels, dort die Erklärung, wie aus diesen ein Netzwerk wird. Wer einen Blick aufs „echte“ Lightning-Netzwerk werfen will, kann dies beim #recksplorer machen.

Bei der Beantwortung der Fragen hier hat mir teilweise Christian Decker geholfen. Christian wurde mit seiner Promotion an der ETH Zürich zum ersten „Doktor Bitcoin“ und arbeitet seitdem bei Blockstream. Dort entwickelt er Lightning-C. Wer ihn auf dem #recksplorer suchen möchte, sollte bei SLEEPYARK nachschauen.

Ist Lightning nun bereit für alle?

Nein, definitiv nicht. Ehrlich gesagt traue ich mich selbst nicht, einen Lightning-Node zu installieren. Alle Lightning-Clients verbinden derzeit noch standardmäßig mit dem Testnet, weil die Entwickler in keinster Weise der Ansicht sind, dass man Lightning schon jetzt für echte Zahlungen verwenden sollte.

Um Lightning zu benutzen braucht man derzeit noch einen Full Bitcoin Node, muss auf diesen den Lightning-Client aufpropfen, die Konfigurationsdatei verändern, um ins Mainnetz zu gehen, und den Client dann mit der Command Line bedienen. Wer sich das zutraut und bereit ist, zur Not auch Geld zu verlieren, kann sich mit den Clients Eclair, C-Lightning und Lightning Network Daemon (lnd) versuchen.

Weder die Software noch das Netzwerk sind bereit für den allgemeinen Zahlungsverkehr. Wann dies soweit sein wird, möchte Christian Decker nicht sagen. „Wir arbeiten so schnell wie wir koennen, aber wir wollen auch sicher sein dass die Gelder der User nicht verloren gehen, bevor wir es für alle einfach machen, es zu nutzen. Die Schwierigkeit, LN aufzusetzen, ist momentan durchaus absichtlich.“

Wie kommen die Bitcoins in die Channels – und wie wieder raus?

Eigentlich ist das extrem einfach. Man macht eine Bitcoin-Überweisung. Sie überweisen die Summe an Bitcoins, die Sie in einen Channel stecken wollen, an eine Adresse, die Ihnen Ihr Client errechnet. Das ist genauso leicht oder schwer wie eine normale Bitcoin-Transaktion, und die Bitcoins, die nun in diesem Channel stecken, sind dieselben Bitcoins wie bei normalen Transaktionen. Sie können sie jederzeit mit einer Transaktion wieder aus dem Channel heraus überweisen.

In den Beispielen, mit denen Payment Channels erklärt werden, geht man meist von beidseitigen Deposits in den Channel aus, also dass beide Partner eines Payment Channels zusammen den Channel mit Coins füllen. Tatsächlich aber unterstützt Lightning derzeit nur ein einseitiges Funding. „Im Moment ist es so, dass der Initiator die Coins liefert, die nachher auf dem Channel hin und her geschickt werden … Während der Lebenszeit eines Channels werden diese Gelder aber auf beide Endpunkte verteilt und es stellt sich ein Gleichgewicht ein.“ In Zukunft könnte es möglich sein, Channels auch durch beide Parteien zu füllen, aber dies ist auch von Seiten der Benutzbarkeit nicht eben einfach.

Wie kann man mit Lightning Geld empfangen?

Das einseitige Funding von Channels könnte hier ein Problem werden. Schauen wir uns nochmal die Nodes im #recksplorer an. Sehen Sie die zwanzig Knoten, die ausschließlich einen Channel mit Blockstreams SLEEPYARK haben? Diese haben einen einseitigen Channel mit Blockstream eröffnet und das gesamte Geld, das durch den Channel fließen kann, vorgeschossen. Wie können sie nun über Lightning etwas empfangen?

Der User könnte erstens die Balance des Channels ändern. Das heißt, er kauft noch mehr Sticker im Shop bei Blockstream, oder er nutzt Blockstream als Zwischenstopp, um etwa bei BitRefill Gutscheinkarten zu kaufen. Mit dem Channel kann er dann so viel Geld, wie er ausgeben hat, empfangen.

„Die einfachste Variante,“ erklärt Decker,  „in diesem Fall ist jedoch, dass der Sender einen neuen Channel zu einem aufbaut, und diesen für diese Zahlung und alle zukünftigen verwendet.“ Das hört sich für den Anfang aufwendig an, doch man sollte bedenken, dass das Lightning Netzwerk desto besser wird, je mehr Channels es gibt. Wer einen ein- und einen ausgehenden Channel hat, hat im besten Fall ausreichend Kapazitäten, um sowohl Geld zu empfangen als auch zu versenden.

Kann man nur bestimmte Beträge empfangen?

Ja. Spontane Zahlungen sind derzeit nicht möglich, man braucht eine Zahlungsanweisung, die auch den Betrag enthält. Der Grund ist, dass man „für die sichere Weiterleitung einen Hash benötigt, zu dem der Empfänger ein Preimage hat.“ Sie müssen es im Detail nicht verstehen. Stellen Sie es sich wie eine Quittung vor, die jeder Knoten, der an einer Zahlung beteiligt ist, braucht. „Wir arbeiten aber auch an einem System mit dem der Absender dieses Preimage erstellt und dem Empfänger sicher zukommen lässt. Damit sind dann auch solche Spontanen oder Wiederholten Zahlungen möglich, wie zum Beispiel für Spenden.“ Derzeit ist dies aber noch nicht möglich.

Wie viele Transaktionen werden derzeit durch Lightning prozessiert?

Tja, wir wissen es nicht, und wir werden es niemals wissen. Man kann zwar die ursprünglichen Transaktionen sehen, mit der ein Channel gebildet wurde. „Was den aktuellen Stand angeht, also wem der beiden Endpunkte wie viel gehört, das ist nicht einsehbar,“ erklärt Christian Decker. Die Gründe sind, das sich die Balance innerhalb eines Channels sehr schnell ändert, und dass dies auch nicht gewollt ist, da es ein Privacy Leak wäre: „Wenn ich nachverfolgen kann, welche Channels der Reihe nach 123 Satoshis verschieben, kann ich nachvollziehen, woher und wohin die Zahlung ging.“ Und genau dies soll nicht der Fall sein.

Gibt es nun einen Routing-Algorithmus oder nicht?

Einer der großen Kritikpunkte an Lightning ist, dass es angeblich noch keinen dezentralen Routing-Algorithmus gibt. Man kann Payment-Channels aufbauen, man kann sogar Zahlungen durch eine Kette von Payment-Channels schicken, aber es gibt noch kein Rezept, ohne Hilfe eines zentralen Super-Knotens eine Route durch die Channels zu finden. Oder?

„Das ist nicht korrekt,“ meint Decker. „Die heutigen Implementierungen haben einen funktionierenden Gossip Mechanismus, mit dem sich die Knoten im Netzwerk Informationen über Channels und andere Knoten zukommen lassen.“ Jeder Knoten fragt also im Netzwerk so lange herum, bis er ein möglichst vollständiges Bild aller Knoten und Channels hat. Dazu braucht er keine zentrale Instanz.

Dieses Modell hat jedoch zwei Probleme: Zum einen könnte es irgendwann zu Problemen mit der Skalierbarkeit führen. Je größer das Netzwerk, desto mehr Informationen müssen die Knoten austauschen und speichern, um Routen finden zu können. Zum anderen können die Knoten nur erfahren, ob es einen Channel gibt – aber nicht, wie dessen Balance ist. Das ist, wie wir eben gelernt haben, privat. Auf der „Landkarte“, die sich jeder Knoten bildet, geht er daher davon aus, dass die Channels ausbalanciert sind. „Sollte dies nicht der Fall sein, dann schlägt die Route fehl, aber der Sender wird automatisch eine andere Route ausprobieren, bis es klappt.“

Ist Lightning zentraler als Bitcoin?

Wenn man sich das Lightning-Netzwerk im #recksplorer anschaut, wird man nicht umhin kommen, gewisse zentralistische Tendenzen wahrzunehmen.

Es gibt 168 Knoten und insgesamt 400 Channels. Dieses geringe Verhältnis von Knoten (vertices) und Verbindungen (edges) ergibt ein extrem dürres (sparse) Netzwerk. Bei Bitcoin hingegen haben 168 Knoten mindestens 1400 und maximal etwa 10.000 Verbindungen (jeder Knoten hat mindestens 8 und maximal 125 Peers).

Eine kleine Handvoll von Knoten – derzeit fünf – hat mehr als zehn Channels, zum Teil sogar mehr als zwanzig, und eine weitere Gruppe hat 5-10 Channels. Der mit Abstand größte Teil der Knoten hat hingegen nur einen oder zwei Channels.

Dies macht das Netzwerk deutlich zentralisierter als Bitcoin. Wenn beispielsweise der von Blockstream betriebene Knoten SLEEPYARK wegbricht, werden etwa 20 andere Knoten jeglichen Zugang zum Netzwerk verlieren. Wenn zudem noch drei bis vier weitere Super-Hubs ausfallen, wird es für so gut wie alle Teilnehmer des Netzes kaum mehr möglich sein, überhaupt noch Transaktionen zu versenden. Bei Bitcoin hingegen wäre es gar nicht zu bemerken, wenn einzelne von 168 Knoten ausfallen. Damit erfüllt Lightning die Definition eines zentralen Systems.

Allerdings ist dies nicht weiter schlimm. Die Basis-Schicht von Bitcoin, das P2P Netzwerk, bleibt ja weiterhin vollkommen dezentral, und Lightning hilft ja dabei, dass dies so bleibt. Das Netzwerk aus Payment Channels ist lediglich eine aufgesetzte Schicht, die eine sehr große Anzahl fast kostenloser Transaktionen ermöglicht. Da Lightning zudem so gebaut ist, dass die großen Hubs weder überwachen noch Coins stehlen können, ist eine Zentralisierung in diesem Netzwerk an sich kein grundsätzliches Problem. Sie ist sogar zu begrüßen, da sie hilft, die Genese des Netzwerkes zu beschleunigen.

Muss ich immer online sein, wenn ich Lightning benutze?

Im Prinzip ja. Denn der Gegenpart könnte den Channel mit einem alten Zustand schließen und damit eine bereits getätigte Zahlung rückgängig machen. Nehmen Sie an, ich hätte Ihnen in einem Channel erst 100, dann 200, dann 300, dann 500 Satoshi gesendet. Theoretisch könnte ich nun einfach eine alte Transaktion veröffentlichen und den Channel nicht mit dem aktuellsten, sondern mit einem veralteten Stand schließen, als ich Ihnen noch weniger überweisen habe.

Glücklicherweise ist Lightning nun so konstruiert, dass derjenige, der den anderen beim Betrügen erwischt, die Möglichkeit hat, den gesamten Channel zu seinen Gunsten aufzulösen. Sprich: Wer beim Cheaten ertappt wird, verliert alles.

Der Grund, dass dies möglich ist, sind Smart Contracts, die dafür sorgen, dass die Bitcoins, die bei einer den Channel schließenden Transaktion überwiesen werden, erst nach einer bestimmten Anzahl von Blöcken wieder ausgegeben werden können, und dass es einen Mechanismus gibt, der es unter bestimmten Umständen dem anderen erlaubt, diese Bitcoin schon zuvor auszugeben. Wenn Sie die Details interessieren, sollten Sie sich den Artikel zum Aufbau der Channels durchlesen.

Wenn man die Transaktion nun etwa so einstellt, dass die Bitcoins erst nach 144 Blöcken ausgegeben werden können, reicht es, wenn Sie einmal am Tag online gehen, um jede Art von Betrug zu verhindern (und im Falle des Falles sogar davon zu profitieren). Wenn Sie wollen, können Sie die Schwelle auch auf eine Woche erhöhen. Dies hat allerdings den Nachteil, dass die Bitcoins, die Sie in einen Channel gesteckt haben, eben nicht ganz so flexibel auszugeben sind wie normale Bitcoins.

Wie lange diese Zeit ist, hängt von der Implementierung ab. „C-lightning hat einen Default von 6 Blöcken, also ungefähr 1 Stunde … Die Reaktion ist automatisch in allen Clients, und man muss nur den Client am laufen lassen, also nicht selber eingreifen.“ Christian Decker meint, dass das Risiko eher gering ist: „Der Timer startet erst ab dem Zeitpunkt, an dem er den alten Zustand ins Netzwerk schickt, und wenn man vor dem Timeout wieder online ist, verliert der Angreifer sein gesamtes Guthaben im Channel.“ Die Spieltheorie arbeitet also für einen und gegen den Angreifer.

Wird es eine Light-Wallet geben, oder braucht jeder einen Full Node?

Bislang gibt es noch keine Light-Wallet. Lightning funktioniert nur mit einem Full Node. Allerdings ist die Light-Wallet schon „stark in der Entwicklung“. Es ist geplant, dass „die kritischen Informationen, die on-chain passieren, auch über das overlay Netzwerk weiter“ geleitet werden. Außerdem sollte es möglich sein, die heute bestehenden SPV-Wallets (ist eine Form von Light-Wallets) kompatibel mit Lightning zu machen. Aber dies wird noch ein Stückchen dauern.

Die mobile Version verlassen