Lightning Netzwerk
Lightning Network | |
---|---|
Visualisierung der Topologie des Lightning Netzwerkes im Mai 2018 | |
Basisdaten | |
Maintainer | Joseph Poon, Thaddeus Dryja |
Entwickler | Elements Project (Blockstream) Lightning Labs ACINQ MIT DCI |
Erscheinungsjahr | 2018 |
Programmiersprache | C, Go, Java |
Kategorie | Kryptowährung |
Lizenz | MIT |
https://lightning.network |
Das Lightning Netzwerk ist ein Protokoll zur Skalierung von Blockchain Technologien. Es wurde im Juli 2015 durch ein Whitepaper von Joseph Poon und Thaddeus Dryja vorgeschlagen.[1] Joseph Poon hatte diese Ideen zuvor auf Bitcoin Meetups und Konferenzen diskutiert.
Inhaltsverzeichnis
Entstehungsgeschichte
Gegen Ende 2013 als der Preis eines Bitcoins erstmalig 1000 US-Dollar überschritt, wurde deutlich, dass die Blockchain Technologie, welche dem Bitcoin Netzwerk zu Grunde liegt, und die nicht beliebig viele Transaktionen pro Sekunde zulässt, ein Problem mit der Skalierbarkeit bekommen würde. Die Anzahl der Transaktionen ist beschränkt durch die Blockgröße von 1 Megabyte, dem Speicherplatz, den eine Transaktion benötigt und der Blockzeit von statistisch ca. 10 Minuten. Daraus ergibt sich, dass auf der Bitcoin-Blockchain weltweit nur ca. 7 Finanztransaktionen pro Sekunde durchgeführt werden können. Kreditkartenanbieter verarbeiten mit ca. 40'000 Zahlungsvorgängen pro Sekunde deutlich mehr Transaktionen. Die Entwickler des Bitcoinprotokolls waren sich einig, dass das Problem der Skalierbarkeit gelöst werden musste, damit Bitcoin tatsächlich die Geldfunktion eines Tauschmittels erfüllt und eine realistische Chance besteht, dass Bitcoin als Währung von Menschen akzeptiert wird.
Innerhalb der Bitcoin Entwickler Community entstanden Diskussionen darüber wie man das Skalierbarkeitsproblem des Bitcoin Netzwerkes lösen könnte. Auf einem Bitcoin Meetup in San Francisco entwickelten sich in den Jahren 2013 bis 2015 mehr und mehr Ideen, die letztlich zum Vorschlag des Lightning Netzwerks führten. Um die Entwicklung und Implementierung des Lightning Netzwerks zu ermöglichen, benötigte man jedoch das SegWit Update des Bitcoin Protokolls. Dies war aufgrund der Dezentralität des Bitcoin-Netzwerks nur schwer zu erreichen, sodass sich die Community auf die Durchführung des Updates einigen musste.[2] Im August 2017 wurde durch einen Mechanismus im Bitcoin Protokoll zur Konsensfindung deutlich, dass über 90 % Bitcoin Miningpower im Netzwerk das Update unterstützen. Diese Mehrheit reichte aus um eine Softfork des Bitcoin Protokolls durchzuführen.[3]
Unabhängig von dem Ausgang der Abstimmung, entstanden bereits im Jahr 2016 mehrere Projekte die sich mit der Entwicklung des Lightning Netzwerks als Open Source Software beschäftigten. Zum Einen das Elements Projekt, das Bitcoin Core und dem Unternehmen Blockstream nahe steht und mit c-lightning eine Implementierung in C entwickelte. Erste erfolgreiche Tests dieses Projektes führten Christian Decker und Rusty Russell bereits im Oktober 2016 durch.[4] Zum Anderen die aktuell am weitesten fortgeschrittene Implementierung mit dem Namen lnd die von der Firma Lightning Labs kommt und in der Sprache Go implementiert ist. Das französische Unternehmen Acinq setzt mit eclair (französisch für Blitz) in der Sprache Java vor allem auf ein Android Mobile Wallet.
Eine zentrale Rolle in der Entwicklung des Protokolls nimmt der australische Entwickler Rusty Russell von der Firma Blockstream ein. Russell, der zuvor von Linus Torvalds öffentlich als einer der stärksten Linux Entwickler ausgezeichnet wurde, entwickelte auf Grundlage des Whitepapers einen Standard für das Lightning Netzwerk als so genanntes RFC.[5] Diesem Standard sollten sämtliche Implementierungen folgen.
Funktionsweise
Das Kernelement des Lightning Netzwerks ist der so genannte Zahlungskanal (Payment Channel). Mithilfe eines Kanals können sich 2 Knoten des Netzwerkes durch Benutzung eines 2-2 Multisignature Wallets gebührenfrei Geldbeträge zuschicken und hierdurch den Saldo des Kanals bis zu einer vorher definierten Obergrenze aktualisieren. Abgesehen von der initialen Transaktion werden die weiteren Transaktionen nicht in einem Block der Blockchain gespeichert, wodurch diese entlastet und die Skalierbarkeit verbessert wird. Die Idee entspricht damit dem Kontokorrent im klassischen Handelsrecht, wobei die Saldierung der Forderungen allerdings erst erfolgt, wenn der Zahlungskanal von einem der Teilnehmer mithilfe der Veröffentlichung der aktuellsten Commitment Transaktion, also des Saldos, wieder geschlossen wird. Anders als beim Kontokorrent müssen die beiden Parteien, die den Kanal bilden, aber einander nicht vertrauen. Dennoch finden die Transaktionen in dem Zahlungskanal nur mit dem Wissen der beiden Akteure statt. Der Durchsatz des Zahlungskanals ist nur limitiert durch die Zeit eines TCP-Sockets und ein wenig Protokoll Overhead. Laut Christian Decker sind somit aktuell circa 500 Transaktionen pro Sekunde in einem Zahlungskanal möglich.[6] Das Protokoll zur Verwaltung eines Kanals ist mithilfe von hashed time locked contracts so konstruiert, dass betrügerisches Verhalten innerhalb eines Zahlungskanals von der Gegenseite gemeldet werden kann. Das Bitcoin Netzwerk prüft den Betrugsversuch und sanktioniert betrügerisches Verhalten indem der Geldbetrag des Kanals an die Opferseite ausgezahlt wird.
Eine weitere Kernidee des Lightning Netzwerks ist das Routing von Zahlungen durch das Netzwerk. Sobald durch einzelne Zahlungskanäle zwischen den Teilnehmenden ein zusammenhängender Graph entsteht, lassen sich Zahlungen zwischen zwei beliebigen Knoten vornehmen. Knoten die auf dem Weg den Betrag weiterleiten können diesen nicht stehlen, da dieser erneut durch einen Hashed Time Locked Contract und ein Geheimnis - das so genannte Zahlungsurbild (Payment Preimage) - gesichert ist, welches nur der empfangende Knoten kennt. Das Routing ermöglicht somit Teilnehmern, nach dem Erstellen eines bilateralen Zahlungskanals Transaktionen mit beliebigen anderen Teilnehmern des Netzwerks durchzuführen und soll zudem die Privatsphäre der Teilnehmenden schützen, in dem das Onion Routing Protokoll des Tor Netzwerks verwendet wird. Insbesondere beim Finden von Routen und dem Verwalten von Routing Tabellen besteht zur Zeit noch der meiste Entwicklungsbedarf.
Verbreitung
Im Dezember 2017 wurde das erste Mal bekannt, dass die 3 Implementierungen alle 75 Integrationstests bestanden und damit tatsächlich kompatibel miteinander sind.[7] Im Januar 2017 veröffentlichte Blockstream mit lightning charge einen node.js server, der die lightning API via REST bereit stellt.[8] Es entstanden LAPPS (lightning apps), welche Services hauptsächlich aus dem Bereich Micropayments anbieten. Im März 2018 wurde das erste Mal eine Implementierung für das Bitcoin Netzwerk als Beta frei gegeben. Auch wurden von Blockstream mehrere Lightning Apps vorgestellt, die sich für Zahlungsdienste im Web einsetzen lassen.[9] Im April folgte das Eclair Lightning Wallet für Android. Die Anzahl der Knoten im Lightning Netzwerk ist am Wachsen und besteht aktuell aus über 1500 Knoten mit über 5000 Zahlungskanälen[10]. Das Netzwerk selbst befindet sich aus Sicht der Entwickler jedoch noch im Pionier und Teststadium und kann aufgrund einer festgesetzten Obergrenze für den Saldo von Zahlungskanälen bislang noch nicht für große Finanztransaktionen verwendet werden.
Eigenschaften
Das Lightning Netzwerk hat per Design mehrere wünschenswerte Eigenschaften, um das Problem der Skalierbarkeit von Bitcoin zu lösen. Zu diesen zählen geringe Gebühren, welche insbesondere Micro-Payments ermöglichen. Außerdem ist die Privatsphäre der Teilnehmenden im Netzwerk höher als im Bitcoin Netzwerk.
Marginale Transaktionsgebühren
Das Lightning Netzwerk ermöglicht es, innerhalb eines Zahlungskanals gebührenfrei Geld hin und her zu überweisen. Für das Routing können Knoten Gebühren verlangen. Diese sollen voraussichtlich nicht höher als ein Satoshi pro Hop sein. Daher lassen sich mit dem Lightning Netzwerk erstmalig weltweit Geldbeträge praktisch gebührenfrei in Echtzeit übertragen.
Micro-Payments
Da die Anzahl der möglichen, kostengünstigen Transaktionen im Netzwerk mit der Anzahl der Teilnehmenden und Zahlungskanäle stärker wächst als der Bedarf an möglichen Transaktionen durch neue Teilnehmende wächst bietet sich das Lightning Netzwerk insbesondere - aber nicht ausschließlich - für Micropayments an.
Privatsphäre
Das Lightning Netzwerk Protokoll funktioniert ohne die Veröffentlichung einzelner Transaktionen in einem Zahlungskanal. Somit ist die Privatsphäre deutlich höher als beim Bitcoin Netzwerk, bei dem sämtliche Transaktionen in der öffentlichen Datenbank gespeichert sind. Die Blockchain speichert nur, welche Zahlungskanäle geöffnet und geschlossen wurden.
Second Layer Protokoll
Das Lightning Netzwerk Protokoll kann als ein Abstraktionslayer oberhalb einer Blockchain gesehen werden. Somit ist es zu mindest theoretisch möglich, dass beim Routing von Bezahlungen durch das Netzwerk verschiedene Blockchain Technologien zu Grunde liegen, die alle das Lightning Netzwerk verwenden. Hierfür müssen jedoch Mechanismen für Atomic Swaps vorhanden sein.
Technik
Zahlungskanäle
Die zentrale Technologie des Lightning Netzwerkes ist, die des Zahlungskanals. Neben der im Folgenden beschriebenen Variante für das Lightning Netzwerk hat Christian Decker in seiner Dissertation an der ETH Zürich eine alternative Technologie vorgestellt, mit der man einen Zahlungskanal auf einer Blockchain Technologie betreiben kann.[11]
Zahlungskanäle öffnen
Um einen Zahlungskanal zu öffnen einigen sich 2 Knoten gemeinsam einen Betrag auf ein 2-2 Multisignature Wallet zu übertragen. Das geschieht in den sogenannten "Funding transactions". Bevor diese Transaktionen jedoch an das Bitcoin Netzwerk gebroadcasted werden, werden 2 Commitment Transaktionen (eine für jede Partei) erstellt, welche die Funding Transaktion ausgeben und den bereit gestellten Betrag jeder Partei wieder an die Partei zurück überweisen. Mit einer Art Diffie Hellman Schlüsselaustausch wird dabei ein sogenannter Revocation Key vereinbart, dessen Hash in der jeweiligen Commitment Transaktion steht. Erst wenn beide Seiten die von der anderen Seite signierte Commitment Transaktion besitzen, werden die Funding Transactions gebroadcasted und der Zahlungskanal ist erstellt. Die Commitment Transaktionen sind wichtig, damit jede Seite den Kanal - auch ohne das Zusätzliche Einverständnis der anderen Partei - schließen kann. Die Commitment Transaktionen werden - obwohl sie signiert sind - zunächst nicht an das Netzwerk gebroadcasted. Ihr Zweck ist es, sicherzustellen, dass beide Parteien die Möglichkeit haben, ohne Zustimmung der jeweils anderen Seite den Kanal wieder zu schließen.
Zahlungen vornehmen
Damit Zahlungen innerhalb eines Kanals vorgenommen werden können wird für jede Seite im Kanal eine neue Commitment Transaktion vereinbart. Diese gibt den Betrag auf dem Multisignature Wallet anders aus als bislang und führt damit zu neuen Eigentumsverhältnissen des Multisignatur Wallets. Um eine neue Commitment Transaktion zu erschaffen wird gemeinsam der Revocation Key der vorherigen Commitment Transaktion berechnet. Der Revocation Key ermöglicht es durch einen Hashed Time Locked Contract für ein Zeitfenster von standardmässig 60 Blöcken eine Commitment Transaktion rückgängig zu machen und alle Funds auf das eigene Bitcoin Wallet zu übertragen. Hiermit wird die Möglichkeit geschaffen alte Commitment Transaktionen ungültig zu machen und dafür zu sorgen, dass immer nur das aktuellste Paar von Commitment Transaktionen als autorative Quelle für die Bilanz des Kanals gilt. Wichtig ist es, alle alten Revocation Keys aufzubewahren, da man sonst nichts gegen potentiell betrügerisches Verhalten der anderen Partei unternehmen kann.
Zahlungskanal schließen
Kanäle können einseitig durch die Veröffentlichung der aktuellsten Commitment Transaktion auf der Blockchain geschlossen werden. Allerdings sind die Funds dann erst nach 60 Blöcken wirklich verfügbar. Der Grund ist, dass das Blockchain Netzwerk nicht wissen kann, ob wirklich die aktuellsten Commitment Transaktion ausgegeben wurde oder nicht etwa eine alte und noch ein Revocation Schlüssel der Gegenseite kommt. Aus diesem Grund wurde auch ein alternativer Mechanismus entwickelt, mit dem beide Parteien im Konsens schneller gemeinsam einen Channel schließen können.
Hashed Time Locked Contracts
Die wesentliche Technologie, die das Verwalten eines Zahlungskanals und das Routing der Transaktionen ohne Vertrauen der Teilnehmenden ermöglicht sind die Hashed Time Locked Contracts. Die Idee ist, dass in den öffentlich sichtbaren Daten (zum Beispiel der Funding Transaction auf der Blockchain) durch die Scriptsprache von Bitcoin ein Vertrag geschlossen wird, der nur akzeptiert wird, wenn man ein Geheimnis bereit stellen kann. Der kryptographische Hash des Geheimnisses ist in der öffentlichen Transaktion gespeichert. Somit kann von jedem Teilnehmer der Authentizität des Geheimnisses geprüft werden. Der Vertrag bekommt eine Zeitsperre (engl. Time Lock) von zum Beispiel 60 Blöcken. In dieser Zeit kann der Vertrag nicht ausgeführt werden, wenn das Geheimnis nicht bereit gestellt wird.
Onion Routing
Die Kernidee des Online Routing ist es, dass im Gegensatz zum IP Routing nicht ein Paket mit Sender und Empfänger Adressen erstellt wird, welches dann durch das Netzwerk geroutet wird. Viel mehr muss ein Sender zu erst einen Pfad durch das Netzwerk finden. Nun können für jeden Hop Transaktionen ineinander verschachtelt werden.
Kontroversen und Risiken
Es ist gefährlich ein Backup eines Zahlungskanals zu erstellen. Wenn Knoten ein altes Backup einspielen, könnten sie aus Versehen einen alten Channel State veröffentlichen. Dies könnte von der Gegenseite als Versuch von betrügerischem Verhalten gesehen werden und entsprechend zum Verlust der Bitcoins führen.[12]
Im Februar 2018 wurde auf der Entwicklermailingliste bekannt, dass das Lightning Netzwerk ein neue Form von 51% Attacken auf das Bitcoin Netzwerk ermöglicht. In dieser ist es nicht nur möglich die eigenen Bitcoins doppelt auszugeben, sondern man kann sich die Summe aller Bitcoins in den eigenen Zahlungskanälen erstehlen. Da eine 51% Attacke mit dem Wachstum des Netzwerkes jedoch immer unwahrscheinlicher ist und auch eine Gefahr für das Bitcoin Netzwerk darstellt, kann dieses Risiko aus Sicht der Entwickler vernachlässigt werden.[13] Der Bitcoin Developer Peter Todd warnte davor, dass das Lightning Netzwerk für DoS Attacken anfällig sei.[14]
Einzelnachweise
- ↑ Bitcoin Lightning Netzwerk. Abgerufen am 15. April 2018.
- ↑ heise online: Segregated Witness: Protokolländerung soll den Bitcoin leistungsfähiger machen. Abgerufen am 16. April 2018 (de-de).
- ↑ SegWit wurde erfolgreich auf der Bitcoin Blockchain aktiviert | BTC-ECHO. In: BTC-ECHO. 24. August 2017 (btc-echo.de [abgerufen am 16. April 2018]).
- ↑ Der erste Einschlag: Christian Decker und Rusty Russel von Blockstream testen Lightning-Prototyp. In: BitcoinBlog.de - das Blog für Bitcoin und andere virtuelle Währungen. 6. Oktober 2016 (bitcoinblog.de [abgerufen am 16. April 2018]).
- ↑ lightningnetwork/lightning-rfc. Abgerufen am 16. April 2018 (english).
- ↑ Scaling, Layer 2 And Cryptographic Innovations Discussed At Consensus 2018 - Coinjournal. Abgerufen am 18. Mai 2018 (en-us).
- ↑ Lightning Developers: Lightning Protocol 1.0: Compatibility Achieved ✅. In: Lightning Developers. 6. Dezember 2017, abgerufen am 16. April 2018.
- ↑ Lightning Charge Powers Developers & Blockstream Store. Abgerufen am 16. April 2018.
- ↑ Bitcoin Lightning App: Paypercall zeigt die volle Lightning Power. Abgerufen am 16. April 2018 (de-de).
- ↑ #recksplorer. Abgerufen am 16. April 2018 (english).
- ↑ Decker, Christian: On the Scalability and Security of Bitcoin. 2016, doi:10.3929/ethz-a-010619000 (handle.net [abgerufen am 16. April 2018]).
- ↑ Bitcoin Lightning Netzwerk: Fehler führte zum Verlust von Bitcoins. Abgerufen am 16. April 2018 (de-de).
- ↑ [Lightning-dev New form of 51% attack via lightning's revocation system possible?] Abgerufen am 16. April 2018.
- ↑ root: Bitcoin Entwickler warnt Lightning Network ist anfällig für DoS - Angriffe | Münze News Telegraph. Abgerufen am 16. April 2018 (deutsch).
Externe Links
- Projektwebseite: http://lightning.network/
- Whitepaper: https://lightning.network/lightning-network-paper.pdf
- Spezifikation: https://github.com/lightningnetwork/lightning-rfc
- Mailingliste: https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev
- C-Implementierung: https://github.com/ElementsProject/lightning
- Go-Implementierung: https://github.com/lightningnetwork/lnd
- Java-Implementierung: https://github.com/ACINQ/eclair
- Lightning FAQ: https://bitcoinblog.de/2018/01/24/die-lightning-faq-fuer-fortgeschrittene/comment-page-1/
Spenden-Adressen:
BTC: 1EoecgUZnAjamUYaKstqwbremQqbucTaoZ
ETH: 0x0D2Ab63dfe70a7fA12f9d66eCfEA9dDc8F5173A8
XEM: NBZPMU-XES6ST-ITEBR3-IHAPTR-APGI3Y-RAAMHV-VZFJ
XVG: DGYmzxoe3ryK6MnsR13GqR9r1NThpxPcKs