name: Theoretische Einführung in das Lightning-Netzwerk goal: Entdecken Sie das Lightning-Netzwerk aus technischer Perspektive objectives:


Eine Reise zur zweiten Schicht von Bitcoin

Tauchen Sie ein in das Herz des Lightning-Netzwerks, einem wesentlichen System für die Zukunft von Bitcoin-Transaktionen. LNP201 ist ein theoretischer Kurs über die technischen Abläufe von Lightning. Er enthüllt die Grundlagen und Mechanismen dieses Second-Layer-Netzwerks, das darauf ausgelegt ist, Bitcoin-Zahlungen schnell, kostengünstig und skalierbar zu machen.

Dank seines Netzwerks von Zahlungskanälen ermöglicht Lightning schnelle und sichere Transaktionen, ohne jede Austauschaktion auf der Bitcoin-Blockchain aufzeichnen zu müssen. Im Verlauf der Kapitel lernen Sie, wie das Öffnen, Verwalten und Schließen von Kanälen funktioniert, wie Zahlungen sicher über Zwischenknoten geroutet werden, während das Vertrauen minimiert wird, und wie Sie die Liquidität verwalten. Sie werden entdecken, was Commitment-Transaktionen, HTLCs, Widerrufsschlüssel, Bestrafungsmechanismen, Onion-Routing und Rechnungen sind.

Ob Sie ein Bitcoin-Anfänger oder ein erfahrener Benutzer sind, dieser Kurs wird wertvolle Informationen liefern, um das Lightning-Netzwerk zu verstehen und zu nutzen. Obwohl wir einige Grundlagen der Funktionsweise von Bitcoin in den ersten Teilen behandeln werden, ist es wesentlich, die Grundlagen von Satoshis Erfindung zu beherrschen, bevor Sie in LNP201 eintauchen.

Viel Spaß bei Ihrer Entdeckung!

Einführung

Kursübersicht

Willkommen im Kurs LNP201!

Dieser Kurs soll Ihnen ein tiefgehendes technisches Verständnis des Lightning Network vermitteln, einem Overlay-Netzwerk, das entwickelt wurde, um Bitcoin-Transaktionen schnell und oft kostengünstig abzuwickeln. Sie werden nach und nach die grundlegenden Konzepte entdecken, die dieses System steuern, von der Eröffnung von Zahlungskanälen bis hin zu Routing-Techniken und Liquiditätsmanagement.

Abschnitt 1: Die Grundlagen
Wir beginnen mit einer allgemeinen Einführung in das Lightning Network, indem wir die grundlegenden Konzepte von Bitcoin, seinen Adressen, UTXOs und der Funktionsweise von Transaktionen behandeln. Dieses Basiswissen ist unerlässlich, um zu verstehen, wie das Lightning Network auf den Mechanismen der Bitcoin-Blockchain aufbaut, um sicher zu funktionieren.

Abschnitt 2: Eröffnung und Schließung von Kanälen
In diesem Abschnitt werden wir den Prozess der Kanaleröffnung untersuchen, der das Fundament des Lightning Network bildet. Sie lernen, wie Commitment-Transaktionen erstellt werden, welche Rolle Widerrufsschlüssel für die Sicherheit spielen und wie Kanäle auf kooperative oder einseitige Weise geschlossen werden können. Jeder Schritt wird präzise und technisch erklärt, damit Sie alle Feinheiten verstehen können.

Abschnitt 3: Ein Liquiditätsnetzwerk
Das Lightning Network beschränkt sich nicht nur auf einzelne Kanäle; es ist ein echtes Zahlungsnetzwerk. Wir werden sehen, wie Transaktionen durch Zwischenknoten mithilfe von HTLCs weitergeleitet werden können. Dieser Teil führt Sie auch in die Herausforderungen der eingehenden und ausgehenden Liquidität ein.

Abschnitt 4: Werkzeuge des Lightning Network
Dieser Abschnitt stellt die praktischen Werkzeuge des Lightning Network vor, wie Invoices, LNURL und Keysend. Sie werden auch lernen, wie Sie die Liquidität Ihrer Kanäle verwalten können, ein wichtiger Aspekt, um die Zahlungsflüssigkeit zu gewährleisten und die Effizienz Ihrer Transaktionen im Lightning Network zu maximieren.

Abschnitt 5: Gehen Sie weiter
Abschließend fassen wir die behandelten Konzepte zusammen und eröffnen den Weg zu fortgeschritteneren Themen für diejenigen, die ihr Wissen über das Lightning Network weiter vertiefen möchten.

Bereit, die technischen Mechanismen des Lightning Network zu entdecken? Auf geht’s!

Die Grundlagen

Das Lightning-Netzwerk verstehen

df6230ae-ff35-56ea-8651-8e65580730a8 :::video id=ba99951f-81d2-418f-b5e7-4b8c9f8b8cc8:::

Das Lightning-Netzwerk ist ein Netzwerk von Zahlungskanälen, das auf dem Bitcoin-Protokoll aufbaut und darauf abzielt, schnelle und kostengünstige Transaktionen zu ermöglichen. Es erlaubt die Erstellung von Zahlungskanälen zwischen Teilnehmern, innerhalb derer Transaktionen fast augenblicklich und mit minimalen Gebühren durchgeführt werden können, ohne jede Transaktion einzeln auf der Blockchain aufzeichnen zu müssen. Somit versucht das Lightning-Netzwerk, die Skalierbarkeit von Bitcoin zu verbessern und es für Zahlungen mit geringem Wert nutzbar zu machen.

Bevor wir den "Netzwerk"-Aspekt erkunden, ist es wichtig, das Konzept eines Zahlungskanals bei Lightning zu verstehen, wie er funktioniert und seine Besonderheiten. Dies ist das Thema dieses ersten Kapitels.

Das Konzept des Zahlungskanals

Ein Zahlungskanal ermöglicht es zwei Parteien, hier Alice und Bob, Gelder über das Lightning-Netzwerk auszutauschen. Jeder Protagonist hat einen Knoten, symbolisiert durch einen Kreis, und der Kanal zwischen ihnen wird durch ein Liniensegment dargestellt.

LNP201

In unserem Beispiel hat Alice 100.000 Satoshis auf ihrer Seite des Kanals und Bob hat 30.000, was eine Gesamtsumme von 130.000 Satoshis ergibt, die die Kapazität des Kanals darstellt.

Aber was ist ein Satoshi?

Der Satoshi (oder „Sat“) ist die kleinste Recheneinheit bei Bitcoin. Ähnlich wie der Cent beim Euro ist ein Satoshi einfach ein Bruchteil von Bitcoin. Ein Satoshi entspricht 0,00000001 Bitcoin, also einem Hundertmillionstel eines Bitcoin. Die Verwendung des Satoshi wird zunehmend praktisch, da der Wert von Bitcoin steigt.

Die Zuweisung von Geldern im Kanal

Lassen Sie uns zum Zahlungskanal zurückkehren. Das Schlüsselkonzept hier ist die "Seite des Kanals". Jeder Teilnehmer hat Mittel auf seiner Seite des Kanals: Alice 100.000 Satoshis und Bob 30.000. Wie wir gesehen haben, repräsentiert die Summe dieser Mittel die Gesamtkapazität des Kanals, eine Zahl, die festgelegt wird, wenn er geöffnet wird.

LNP201

Nehmen wir ein Beispiel für eine Lightning-Transaktion. Wenn Alice 40.000 Satoshis an Bob senden möchte, ist dies möglich, weil sie genügend Mittel hat (100.000 Satoshis). Nach dieser Transaktion wird Alice 60.000 Satoshis auf ihrer Seite haben und Bob 70.000.

LNP201

Die Kanalkapazität, bei 130.000 Satoshis, bleibt konstant. Was sich ändert, ist die Zuordnung der Mittel. Dieses System erlaubt es nicht, mehr Mittel zu senden, als man besitzt. Zum Beispiel könnte Bob nicht 80.000 Satoshis an Alice zurücksenden, weil er nur 70.000 hat.

Eine andere Art, sich die Zuordnung der Mittel vorzustellen, ist, an einen Schieberegler zu denken, der anzeigt, wo die Mittel im Kanal sind. Anfangs, mit 100.000 Satoshis für Alice und 30.000 für Bob, liegt der Schieberegler logischerweise auf Alices Seite. Nach der Transaktion von 40.000 Satoshis wird der Schieberegler sich leicht in Richtung Bobs Seite bewegen, der nun 70.000 Satoshis hat.

LNP201

Diese Darstellung kann nützlich sein, um sich das Gleichgewicht der Mittel in einem Kanal vorzustellen.

Die grundlegenden Regeln eines Zahlungskanals

Der erste Punkt, den man sich merken sollte, ist, dass die Kanalkapazität festgelegt ist. Es ist etwas wie der Durchmesser eines Rohres: Es bestimmt die maximale Menge an Mitteln, die auf einmal durch den Kanal gesendet werden können. Nehmen wir ein Beispiel: Wenn Alice 130.000 Satoshis auf ihrer Seite hat, kann sie maximal 130.000 Satoshis in einer einzigen Transaktion an Bob senden. Bob kann diese Mittel jedoch an Alice zurücksenden, entweder teilweise oder vollständig.

Wichtig zu verstehen ist, dass die feste Kapazität des Kanals die maximale Menge einer einzelnen Transaktion begrenzt, aber nicht die Gesamtzahl möglicher Transaktionen, noch das Gesamtvolumen der innerhalb des Kanals ausgetauschten Mittel.

Was sollten Sie aus diesem Kapitel mitnehmen?

Dies ist das Ende dieses ersten Kapitels, in dem wir die Grundlagen für das Lightning-Netzwerk gelegt haben. In den kommenden Kapiteln werden wir sehen, wie man einen Kanal öffnet und tiefer in die hier besprochenen Konzepte eintaucht.

Bitcoin, Adressen, UTXO und Transaktionen

0cfb7e6b-96f0-508b-9210-90bc1e28649d :::video id=75323eef-ea03-45ac-9a6e-46d73ca255de:::

Dieses Kapitel ist ein wenig besonders, da es nicht direkt dem Lightning-Netzwerk gewidmet ist, sondern Bitcoin. Tatsächlich ist das Lightning-Netzwerk eine Schicht auf Bitcoin. Es ist daher wesentlich, bestimmte grundlegende Konzepte von Bitcoin zu verstehen, um die Funktionsweise von Lightning in den nachfolgenden Kapiteln richtig zu erfassen. In diesem Kapitel werden wir die Grundlagen von Bitcoin-Empfangsadressen, UTXOs sowie die Funktionsweise von Bitcoin-Transaktionen überprüfen.

Bitcoin-Adressen, Private Schlüssel und Öffentliche Schlüssel

Eine Bitcoin-Adresse ist eine Zeichenfolge, die aus einem öffentlichen Schlüssel abgeleitet wird, welcher wiederum aus einem privaten Schlüssel berechnet wird. Wie Sie sicherlich wissen, dient sie dazu, Bitcoin zu empfangen – technisch gesprochen: um Bitcoin zu sperren.

Der private Schlüssel ist ein geheimes Element, das niemals geteilt werden sollte, während der öffentliche Schlüssel und die Adresse ohne Sicherheitsrisiko geteilt werden können (ihre Offenlegung stellt nur ein Risiko für Ihre Privatsphäre dar). Hier ist eine gängige Darstellung, die wir während dieser Schulung übernehmen werden:

Bitcoin-Transaktionen: Gelder senden und Skripte

Bei Bitcoin beinhaltet eine Transaktion das Senden von Geldern von einer Adresse an eine andere. Nehmen wir das Beispiel von Alice, die 0,002 Bitcoin an Bob sendet. Alice verwendet den privaten Schlüssel, der mit ihrer Adresse verbunden ist, um die Transaktion zu signieren, und beweist damit, dass sie tatsächlich in der Lage ist, diese Gelder auszugeben. Aber was passiert genau hinter dieser Transaktion? Die Gelder auf einer Bitcoin-Adresse werden durch ein Skript gesperrt, eine Art Mini-Programm, das bestimmte Bedingungen für das Ausgeben der Gelder vorschreibt.

Das häufigste Skript erfordert eine Signatur mit dem privaten Schlüssel, der der Adresse zugeordnet ist. Wenn Alice eine Transaktion mit ihrem privaten Schlüssel signiert, entsperrt sie das Skript, das die Gelder blockiert, und sie können dann übertragen werden. Die Übertragung von Geldern beinhaltet das Hinzufügen eines neuen Skripts zu diesen Geldern, das besagt, dass dieses Mal die Signatur des privaten Schlüssels von Bob erforderlich sein wird.

LNP201

UTXOs: Unverbrauchte Transaktionsausgänge

Bei Bitcoin tauschen wir tatsächlich nicht direkt Bitcoins, sondern UTXOs (Unspent Transaction Outputs), was "unverbrauchte Transaktionsausgänge" bedeutet.

Ein UTXO ist ein Stück Bitcoin, das jeden beliebigen Wert haben kann, zum Beispiel 2.000 Bitcoins, 8 Bitcoins oder sogar 8.000 Sats. Jeder UTXO wird durch ein Skript gesperrt, und um ihn auszugeben, muss man die Bedingungen des Skripts erfüllen, oft eine Signatur mit dem privaten Schlüssel, der einer bestimmten Empfangsadresse entspricht.

UTXOs können nicht geteilt werden. Jedes Mal, wenn sie verwendet werden, um den Betrag in Bitcoins, den sie repräsentieren, auszugeben, muss dies in seiner Gesamtheit geschehen. Es ist ein bisschen wie bei einem Geldschein: Wenn Sie einen 10-Euro-Schein haben und dem Bäcker 5 Euro schulden, können Sie den Schein nicht einfach halbieren. Sie müssen ihm den 10-Euro-Schein geben, und er wird Ihnen 5 Euro Wechselgeld geben. Dies ist genau das gleiche Prinzip für UTXOs bei Bitcoin! Zum Beispiel, wenn Alice ein Skript mit ihrem privaten Schlüssel entsperrt, entsperrt sie den gesamten UTXO. Wenn sie nur einen Teil der Gelder, die dieser UTXO repräsentiert, an Bob senden möchte, kann sie ihn in mehrere kleinere "fragmentieren". Sie wird dann 0,0015 BTC an Bob senden und den Rest, 0,0005 BTC, an eine Wechseladresse senden.

Hier ist ein Beispiel für eine Transaktion mit 2 Ausgängen:

LNP201

Multi-Signatur-Adressen

Neben einfachen Adressen, die aus einem einzigen öffentlichen Schlüssel generiert werden, ist es möglich, Multi-Signatur-Adressen aus mehreren öffentlichen Schlüsseln zu erstellen. Ein besonders interessanter Fall für das Lightning-Netzwerk ist die 2/2 Multi-Signatur-Adresse, die aus zwei öffentlichen Schlüsseln generiert wird:

LNP201

Um die mit dieser 2/2 Multi-Signatur-Adresse gesperrten Mittel auszugeben, ist es notwendig, mit den beiden privaten Schlüsseln zu signieren, die den öffentlichen Schlüsseln zugeordnet sind.

LNP201

Dieser Adresstyp ist genau die Darstellung auf der Bitcoin-Blockchain von Zahlungskanälen im Lightning-Netzwerk.

Was sollten Sie aus diesem Kapitel mitnehmen?

Dieses Kapitel über Bitcoin hat es uns ermöglicht, einige wesentliche Begriffe für das Folgende zu überprüfen. Im nächsten Kapitel werden wir speziell entdecken, wie die Eröffnung von Kanälen im Lightning-Netzwerk funktioniert.

Öffnen und Schließen von Kanälen

Kanaleröffnung

96243eb0-f6b5-5b68-af1f-fffa0cc16bfe :::video id=6098fee1-735e-4d8d-9f57-0faf5fef6d76:::

In diesem Kapitel werden wir genauer sehen, wie man einen Zahlungskanal im Lightning-Netzwerk öffnet und den Zusammenhang zwischen dieser Operation und dem zugrundeliegenden Bitcoin-System verstehen.

Lightning-Kanäle

Wie wir im ersten Kapitel gesehen haben, kann ein Zahlungskanal auf Lightning mit einem "Rohr" verglichen werden, um Mittel zwischen zwei Teilnehmern auszutauschen (Alice und Bob in unseren Beispielen). Die Kapazität dieses Kanals entspricht der Summe der verfügbaren Mittel auf jeder Seite. In unserem Beispiel hat Alice 100.000 Satoshis und Bob hat 30.000 Satoshis, was eine Gesamtkapazität von 130.000 Satoshis ergibt.

LNP201

Ebenen des Informationsaustauschs

Es ist entscheidend, die verschiedenen Ebenen des Austauschs im Lightning-Netzwerk klar zu unterscheiden:

LNP201 Es ist erwähnenswert, dass ein Lightning-Knoten über das P2P-Protokoll kommunizieren kann, ohne einen Kanal zu öffnen, aber um Gelder auszutauschen, ist ein Kanal notwendig.

Schritte zum Öffnen eines Lightning-Kanals

LNP201 LNP201 LNP201 LNP201 LNP201 LNP201

Wann ist der Kanal geöffnet?

Der Kanal gilt als geöffnet, sobald die Einzahlungstransaktion in einem Bitcoin-Block enthalten ist und eine bestimmte Tiefe von Bestätigungen erreicht hat (Anzahl der nachfolgenden Blöcke).

Was sollten Sie aus diesem Kapitel mitnehmen?

Im nächsten Kapitel werden wir die technische Funktionsweise einer Transaktion innerhalb eines Kanals im Lightning-Netzwerk erkunden.

Commitment-Transaktion

7d3fd135-129d-5c5a-b306-d5f2f1e63340 :::video id=c17454f3-14c5-47a0-8c9c-42ee12932bd3:::

In diesem Kapitel werden wir die technische Funktionsweise einer Transaktion innerhalb eines Kanals im Lightning-Netzwerk entdecken, das heißt, wenn Gelder von einer Seite des Kanals zur anderen bewegt werden.

Erinnerung an den Lebenszyklus des Kanals

Wie zuvor gesehen, beginnt ein Lightning-Kanal mit einer Eröffnung durch eine Bitcoin-Transaktion. Der Kanal kann jederzeit auch über eine Bitcoin-Transaktion geschlossen werden. Zwischen diesen beiden Momenten können innerhalb des Kanals nahezu unendlich viele Transaktionen durchgeführt werden, ohne die Bitcoin-Blockchain zu durchlaufen. Sehen wir uns an, was während einer Transaktion im Kanal passiert. LNP201

Der anfängliche Zustand des Kanals

Zum Zeitpunkt der Eröffnung des Kanals hat Alice 130.000 Satoshis auf die Multisignatur-Adresse des Kanals eingezahlt. Somit befinden sich im anfänglichen Zustand alle Mittel auf Alices Seite. Bevor sie den Kanal eröffnete, ließ Alice auch Bob eine Auszahlungstransaktion unterschreiben, die es ihr ermöglichen würde, ihre Mittel zurückzuerhalten, falls sie den Kanal schließen möchte.

LNP201

Unveröffentlichte Transaktionen: Die Commitment-Transaktionen

Wenn Alice eine Transaktion im Kanal durchführt, um Mittel an Bob zu senden, wird eine neue Bitcoin-Transaktion erstellt, um diese Änderung in der Verteilung der Mittel widerzuspiegeln. Diese Transaktion, genannt Commitment-Transaktion, wird nicht auf der Blockchain veröffentlicht, repräsentiert aber den neuen Zustand des Kanals nach der Lightning-Transaktion.

Nehmen wir ein Beispiel, bei dem Alice 30.000 Satoshis an Bob sendet:

Übertragungsprozess: Die Rechnung

Wenn Bob Mittel erhalten möchte, sendet er Alice eine Rechnung über 30.000 Satoshis. Alice führt dann diese Rechnung aus, indem sie die Übertragung innerhalb des Kanals startet. Wie wir gesehen haben, stützt sich dieser Prozess auf die Erstellung und Unterzeichnung einer neuen Commitment-Transaktion.

Jede Commitment-Transaktion repräsentiert die neue Verteilung der Mittel im Kanal nach der Übertragung. In diesem Beispiel hat Bob nach der Transaktion 30.000 Satoshis und Alice 100.000 Satoshis. Wenn einer der beiden Teilnehmer entscheiden würde, diese Commitment-Transaktion auf der Blockchain zu veröffentlichen, würde dies zum Schließen des Kanals führen und die Mittel würden gemäß dieser letzten Verteilung verteilt.

LNP201

Neuer Zustand nach einer zweiten Transaktion

Nehmen wir ein weiteres Beispiel: Nach der ersten Transaktion, bei der Alice 30.000 Satoshis an Bob gesendet hat, entscheidet Bob, 10.000 Satoshis an Alice zurückzusenden. Dies schafft einen neuen Zustand des Kanals. Die neue Commitment-Transaktion wird diese aktualisierte Verteilung darstellen:

LNP201

Auch diese Transaktion wird nicht auf der Blockchain veröffentlicht, kann aber jederzeit veröffentlicht werden, falls der Kanal geschlossen wird.

Zusammenfassend, wenn Mittel innerhalb eines Lightning-Kanals übertragen werden:

Allerdings hat dieses System einen potenziellen Fehler, den wir im nächsten Kapitel ansprechen werden. Wir werden sehen, wie sich jeder Teilnehmer gegen einen Betrugsversuch der anderen Partei schützen kann.

Widerrufsschlüssel

f2f61e5b-badb-5947-9a81-7aa530b44e59 :::video id=1d850f23-eff1-4725-b284-ce12456a2c26::: In diesem Kapitel werden wir tiefer in die Funktionsweise von Transaktionen im Lightning-Netzwerk eintauchen, indem wir die Mechanismen diskutieren, die zum Schutz vor Betrug eingerichtet sind, um sicherzustellen, dass jede Partei die Regeln innerhalb eines Kanals einhält.

Erinnerung: Commitment-Transaktionen

Wie zuvor gesehen, basieren Transaktionen im Lightning-Netzwerk auf unveröffentlichten Commitment-Transaktionen. Diese zeigen die aktuelle Verteilung der Gelder im Kanal. Wird eine neue Lightning-Transaktion durchgeführt, entsteht eine neue Commitment-Transaktion, die von beiden Parteien signiert wird, um den neuen Zustand des Kanals widerzuspiegeln.

Nehmen wir ein einfaches Beispiel:

LNP201

Zu jeder Zeit können beide Parteien die letzte Commitment-Transaktion, die unterschrieben wurde, veröffentlichen, um den Kanal zu schließen und ihre Gelder zurückzuerhalten.

Das Problem: Betrug durch Veröffentlichung einer alten Transaktion

Ein potenzielles Problem entsteht, wenn eine der Parteien beschließt zu betrügen, indem sie eine alte Commitment-Transaktion veröffentlicht. Zum Beispiel könnte Alice eine ältere Commitment-Transaktion veröffentlichen, in der sie 100.000 Satoshis hatte, obwohl sie jetzt in Wirklichkeit nur 60.000 hat. Dies würde es ihr ermöglichen, 40.000 Satoshis von Bob zu stehlen.

LNP201

Noch schlimmer, Alice könnte die allererste Auszahlungstransaktion veröffentlichen, die vor der Eröffnung des Kanals stattfand, wo sie 130.000 Satoshis hatte, und somit die gesamten Gelder des Kanals stehlen.

LNP201

Lösung: Widerrufsschlüssel und Zeitverriegelung

Um diese Art von Betrug durch Alice zu verhindern, werden im Lightning-Netzwerk Sicherheitsmechanismen zu den Commitment-Transaktionen hinzugefügt:

Lassen Sie uns die Funktionsweise dieses Mechanismus gemeinsam detaillieren.

Transaktionsaktualisierungsprozess

Wenn Alice und Bob den Zustand des Kanals mit einer neuen Lightning-Transaktion aktualisieren, tauschen sie im Voraus ihre jeweiligen Geheimnisse für die vorherige Commitment-Transaktion aus (diejenige, die veraltet wird und es einem von ihnen ermöglichen könnte zu betrügen). Das bedeutet, dass im neuen Zustand des Kanals:

Lassen Sie uns ein Beispiel nehmen, um diesen Prozess gut zu verstehen:

LNP201 LNP201 LNP201

Selbst wenn Bob in diesem Fall kein wirtschaftliches Interesse daran hat zu betrügen, wenn er es dennoch tut, profitiert auch Alice von einem symmetrischen Schutz, der ihr dieselben Garantien bietet.

Was sollten Sie aus diesem Kapitel mitnehmen?

Die Commitment-Transaktionen im Lightning-Netzwerk beinhalten Sicherheitsmechanismen, die sowohl das Risiko des Betrugs als auch die Anreize dazu verringern. Bevor sie eine neue Commitment-Transaktion unterschreiben, tauschen Alice und Bob ihre jeweiligen Geheimnisse für die vorherigen Commitment-Transaktionen aus. Wenn Alice versucht, eine alte Commitment-Transaktion zu veröffentlichen, kann Bob den Widerrufsschlüssel verwenden, um alle Gelder zurückzuholen, bevor Alice es kann (weil sie durch den Timelock blockiert ist), was sie für den Versuch zu betrügen bestraft.

Dieses Sicherheitssystem stellt sicher, dass die Teilnehmer die Regeln des Lightning-Netzwerks einhalten, und sie können nicht davon profitieren, alte Commitment-Transaktionen zu veröffentlichen. Zu diesem Zeitpunkt im Training wissen Sie nun, wie Lightning-Kanäle geöffnet werden und wie Transaktionen innerhalb dieser Kanäle funktionieren. Im nächsten Kapitel werden wir die verschiedenen Möglichkeiten entdecken, einen Kanal zu schließen und Ihre Bitcoins auf der Haupt-Blockchain wiederherzustellen.

Kanalschließung

29a72223-2249-5400-96f0-3756b1629bc2 :::video id=4d8ad4e6-32ff-46d3-bd17-343929aa863b:::

In diesem Kapitel werden wir das Schließen eines Kanals im Lightning-Netzwerk besprechen, was durch eine Bitcoin-Transaktion erfolgt, genau wie das Öffnen eines Kanals. Nachdem wir gesehen haben, wie Transaktionen innerhalb eines Kanals funktionieren, ist es nun an der Zeit zu sehen, wie man einen Kanal schließt und die Mittel auf der Bitcoin-Blockchain wiederherstellt.

Erinnerung an den Lebenszyklus des Kanals

Der Lebenszyklus eines Kanals beginnt mit seiner Eröffnung, über eine Bitcoin-Transaktion, dann werden Lightning-Transaktionen innerhalb desselben durchgeführt, und schließlich, wenn die Parteien ihre Mittel zurückgewinnen möchten, wird der Kanal durch eine zweite Bitcoin-Transaktion geschlossen. Die Zwischentransaktionen, die auf Lightning gemacht werden, werden durch unveröffentlichte Commitment-Transaktionen dargestellt.

LNP201

Die drei Arten der Kanalschließung

Es gibt drei Hauptwege, diesen Kanal zu schließen, die als der Gute, der Grobe und der Faulenzer bezeichnet werden können (inspiriert von Andreas Antonopoulos in Mastering the Lightning Network):

Nehmen wir ein Beispiel:

LNP201

Der Gute: die kooperative Schließung

Bei einer kooperativen Schließung einigen sich Alice und Bob darauf, den Kanal zu schließen. So läuft es ab:

LNP201

Die kooperative Schließung ist die bevorzugte Methode des Schließens, weil sie schnell ist (keine Zeitbeschränkung) und die Transaktionsgebühren entsprechend den aktuellen Bitcoin-Marktbedingungen angepasst werden. Dies vermeidet, zu wenig zu zahlen, was das Blockieren der Transaktion in den Mempools riskieren könnte, oder unnötig zu viel zu zahlen, was zu unnötigem finanziellen Verlust für die Teilnehmer führt.

Das Schlechte: die erzwungene Schließung

Wenn Alices Knoten eine Nachricht an Bobs sendet, die um eine kooperative Schließung bittet, und er nicht antwortet (zum Beispiel wegen eines Internet-Ausfalls oder eines technischen Problems), kann Alice mit einer erzwungenen Schließung fortfahren, indem sie die letzte signierte Verpflichtungstransaktion veröffentlicht. In diesem Fall wird Alice einfach die letzte Verpflichtungstransaktion veröffentlichen, die den Zustand des Kanals zum Zeitpunkt der letzten Lightning-Transaktion mit der korrekten Verteilung der Mittel widerspiegelt.

LNP201

Diese Transaktion beinhaltet eine Zeitbeschränkung für Alices Mittel, was die Schließung langsamer macht.

LNP201

Außerdem können die Gebühren der Verpflichtungstransaktion zum Zeitpunkt der Schließung unangemessen sein, da sie festgelegt wurden, als die Transaktion erstellt wurde, manchmal mehrere Monate zuvor. Allgemein überschätzen Lightning-Clients die Gebühren, um zukünftige Probleme zu vermeiden, aber das kann zu überhöhten Gebühren führen oder umgekehrt zu niedrig.

Zusammenfassend ist die erzwungene Schließung eine letzte Option, wenn der Peer nicht mehr antwortet. Sie ist langsamer und weniger wirtschaftlich als eine kooperative Schließung. Daher sollte sie so weit wie möglich vermieden werden.

Der Betrug: Schummeln

Schließlich tritt eine Schließung mit Betrug auf, wenn eine der Parteien versucht, eine alte Verpflichtungstransaktion zu veröffentlichen, oft, wo sie mehr Mittel besaß, als sie sollte. Zum Beispiel könnte Alice eine alte Transaktion veröffentlichen, in der sie 120.000 Satoshis besaß, während sie tatsächlich jetzt nur 100.000 besitzt.

LNP201

Bob überwacht die Bitcoin-Blockchain und den Mempool, um sicherzustellen, dass Alice keine alte Transaktion veröffentlicht und somit keinen Betrug versucht. Entdeckt Bob einen solchen Betrugsversuch, kann er den Revokationsschlüssel verwenden, um Alices Mittel zurückzuholen und sie zu bestrafen, indem er den gesamten Betrag des Kanals auf sich überträgt.

Da Alice durch eine Zeitbeschränkung auf ihrem Ausgang blockiert ist, hat Bob genug Zeit, um – ohne zeitliche Einschränkung – die gesamten Mittel auf eine Adresse zu übertragen, die er kontrolliert. LNP201

Offensichtlich kann der Betrug potenziell erfolgreich sein, wenn Bob nicht innerhalb der Zeit handelt, die durch die Zeitbeschränkung auf Alices Ausgang vorgegeben ist. In diesem Fall wird Alices Ausgang entsperrt, was ihr erlaubt, ihn zu verbrauchen, um einen neuen Ausgang zu einer Adresse zu erstellen, die sie kontrolliert.

Was sollten Sie aus diesem Kapitel mitnehmen?

Es gibt drei Wege, einen Kanal zu schließen:

Ein Liquiditätsnetzwerk

Lightning-Netzwerk

45a7252c-fa4f-554b-b8bb-47449532918e :::video id=38419c23-5592-4573-b0a7-84824a5bfb77:::

In diesem Kapitel werden wir erkunden, wie Zahlungen im Lightning-Netzwerk einen Empfänger erreichen können, auch wenn sie nicht direkt durch einen Zahlungskanal verbunden sind. Lightning ist tatsächlich ein Netzwerk von Zahlungskanälen, das es ermöglicht, Gelder über die Kanäle anderer Teilnehmer an einen entfernten Knoten zu senden. Wir werden entdecken, wie Zahlungen durch das Netzwerk geleitet werden, wie Liquidität zwischen Kanälen fließt und wie Transaktionsgebühren berechnet werden.

Das Netzwerk der Zahlungskanäle

Im Lightning-Netzwerk entspricht eine Transaktion einer Überweisung von Geldern zwischen zwei Knoten. Wie in den vorherigen Kapiteln gesehen, ist es notwendig, einen Kanal mit jemandem zu öffnen, um Lightning-Transaktionen durchzuführen. Dieser Kanal ermöglicht eine nahezu unendliche Anzahl von Off-Chain-Transaktionen, bevor er geschlossen wird, um das On-Chain-Guthaben zurückzufordern. Diese Methode hat jedoch den Nachteil, dass ein direkter Kanal mit der anderen Person erforderlich ist, um Gelder zu empfangen oder zu senden, was eine Eröffnungstransaktion und eine Abschlusstransaktion für jeden Kanal impliziert. Wenn ich vorhabe, eine große Anzahl von Zahlungen mit dieser Person zu tätigen, wird das Öffnen und Schließen eines Kanals kosteneffektiv. Im Gegensatz dazu, wenn ich nur wenige Lightning-Transaktionen durchführen muss, ist das Öffnen eines direkten Kanals nicht vorteilhaft, da es mich 2 On-Chain-Transaktionen für eine begrenzte Anzahl von Off-Chain-Transaktionen kosten würde. Dieser Fall könnte beispielsweise auftreten, wenn man mit Lightning bei einem Händler bezahlen möchte, ohne vorzuhaben, zurückzukehren.

Um dieses Problem zu lösen, ermöglicht das Lightning-Netzwerk die Weiterleitung einer Zahlung durch mehrere Kanäle und Zwischenknoten, wodurch eine Transaktion ohne direkten Kanal mit der anderen Person ermöglicht wird.

Stellen Sie sich zum Beispiel vor:

LNP201

Wenn Alice Gelder an Bob senden möchte, ohne einen direkten Kanal mit ihm zu öffnen, muss sie durch Suzie gehen, und jeder Kanal muss die Liquidität auf jeder Seite anpassen. Die gesendeten Satoshis bleiben innerhalb ihrer jeweiligen Kanäle; sie "überqueren" die Kanäle nicht wirklich, sondern die Übertragung erfolgt durch eine Anpassung der internen Liquidität in jedem Kanal.

Angenommen, Alice möchte 50.000 Satoshis an Bob senden:

LNP201 Daher wird die Zahlung an Bob über eine Bewegung der Liquidität in jedem Kanal weitergeleitet. Am Ende der Operation hat Alice 50.000 Sats. Sie hat tatsächlich 50.000 Sats übertragen, da sie anfangs 100.000 hatte. Bob erhält auf seiner Seite zusätzliche 50.000 Sats. Für Suzie (den Zwischenknoten) ist diese Operation neutral: anfangs hatte sie 30.000 Sats in ihrem Kanal mit Alice und 250.000 Sats in ihrem Kanal mit Bob, insgesamt also 280.000 Sats. Nach der Operation hält sie 80.000 Sats in ihrem Kanal mit Alice und 200.000 Sats in ihrem Kanal mit Bob, was derselben Summe wie zu Beginn entspricht. Diese Übertragung ist also durch die verfügbare Liquidität in Richtung der Übertragung begrenzt.

Berechnung der Route und Liquiditätsgrenzen

Nehmen wir ein theoretisches Beispiel eines anderen Netzwerks mit:

LNP201

Das Maximum, das Alice an Bob in dieser Konfiguration senden kann, beträgt 90.000 Satoshis, da sie durch die kleinste verfügbare Liquidität im Kanal von Suzie zu Carol begrenzt ist. In der entgegengesetzten Richtung (von Bob zu Alice) ist keine Zahlung möglich, da Suzies Seite im Kanal mit Alice keine Satoshis enthält. Daher gibt es keine nutzbare Route für eine Übertragung in dieser Richtung. Alice sendet 40.000 Satoshis an Bob durch die Kanäle:

LNP201

Die gesendeten Satoshis in jedem Kanal bleiben im Kanal, sodass die von Carol an Bob gesendeten Satoshis nicht dieselben sind wie die von Alice an Suzie gesendeten. Die Übertragung erfolgt nur durch Anpassung der Liquidität innerhalb jedes Kanals. Außerdem bleibt die Gesamtkapazität der Kanäle unverändert.

LNP201

Wie im vorherigen Beispiel hat nach der Transaktion der Quellknoten (Alice) 40.000 Satoshis weniger. Die Zwischenknoten (Suzie und Carol) behalten denselben Gesamtbetrag, was die Operation für sie neutral macht. Schließlich erhält der Zielknoten (Bob) zusätzliche 40.000 Satoshis.

Die Rolle der Zwischenknoten ist daher sehr wichtig für das Funktionieren des Lightning-Netzwerks. Sie erleichtern Übertragungen, indem sie mehrere Pfade für Zahlungen anbieten. Um diese Knoten zur Bereitstellung ihrer Liquidität und zur Teilnahme am Routing von Zahlungen zu ermutigen, werden ihnen Routing-Gebühren gezahlt.

Routing-Gebühren

Die Zwischenknoten erheben Gebühren, um Zahlungen durch ihre Kanäle zu ermöglichen. Diese Gebühren werden von jedem Knoten für jeden Kanal festgelegt. Die Gebühren bestehen aus 2 Elementen:

Zum Beispiel könnten wir für einen Kanal zwischen Alice und Suzie haben:

LNP201

Um besser zu verstehen, wie Gebühren funktionieren, betrachten wir dasselbe Lightning-Netzwerk wie zuvor, aber jetzt mit den folgenden Routing-Gebühren:

Für dieselbe Zahlung von 40.000 Satoshis an Bob muss Alice ein wenig mehr senden, da jeder Zwischenknoten seine Gebühren abzieht:

Die Gesamtgebühren für diese Zahlung auf diesem Weg betragen daher 9,04 Satoshis. Somit muss Alice 40.009,04 Satoshis senden, damit Bob genau 40.000 Satoshis erhält.

LNP201

Die Liquidität wird daher aktualisiert:

LNP201

Onion Routing

Um eine Zahlung vom Sender zum Empfänger zu leiten, verwendet das Lightning-Netzwerk eine Methode namens "Onion Routing". Im Gegensatz zum Routing klassischer Daten, bei dem jeder Router die Richtung der Daten basierend auf ihrem Ziel bestimmt, funktioniert das Onion Routing anders:

In diesem Kapitel haben wir das Routing von Zahlungen im Lightning-Netzwerk erkundet. Aber es stellt sich eine Frage: Was verhindert, dass Zwischenknoten eine eingehende Zahlung akzeptieren, ohne sie an das nächste Ziel weiterzuleiten, mit dem Ziel, die Transaktion abzufangen? Dies ist genau die Rolle von HTLCs, die wir im folgenden Kapitel untersuchen werden.

HTLC – Hashed Time Locked Contract

4369b85a-1365-55d8-99e1-509088210116 :::video id=6f204b92-55a5-4939-9440-7c5b96a297bf:::

In diesem Kapitel werden wir entdecken, wie Lightning Zahlungen durch Zwischenknoten ermöglicht, ohne dass diesen vertraut werden muss, dank HTLC (Hashed Time-Locked Contracts). Diese Smart Contracts stellen sicher, dass jeder Zwischenknoten die Gelder aus seinem Kanal nur dann erhält, wenn er die Zahlung an den endgültigen Empfänger weiterleitet, andernfalls wird die Zahlung nicht validiert.

Das Problem, das sich für das Routing von Zahlungen ergibt, ist daher das notwendige Vertrauen in Zwischenknoten und unter den Zwischenknoten selbst. Um dies zu veranschaulichen, lassen Sie uns unser vereinfachtes Lightning-Netzwerk-Beispiel mit 3 Knoten und 2 Kanälen erneut besuchen:

Alice möchte 40.000 Sats an Bob senden, hat aber keinen direkten Kanal zu ihm und möchte keinen eröffnen. Sie sucht nach einer Route und entscheidet sich, durch Suzies Knoten zu gehen.

LNP201

Wenn Alice naiv 40.000 Satoshis an Suzie sendet in der Hoffnung, dass Suzie diese Summe an Bob weiterleitet, könnte Suzie die Gelder für sich behalten und nichts an Bob übermitteln.

LNP201 Um diese Situation zu vermeiden, verwenden wir bei Lightning HTLCs (Hashed Time-Locked Contracts), die die Zahlung an den Zwischenknoten bedingt machen, was bedeutet, dass Suzie bestimmte Bedingungen erfüllen muss, um auf Alices Gelder zugreifen und sie an Bob weiterleiten zu können.

Wie HTLCs funktionieren

Ein HTLC ist ein spezieller Vertrag, der auf zwei Prinzipien basiert:

So funktioniert dieser Prozess in unserem Beispiel mit Alice, Suzie und Bob:

LNP201 Erstellen des Geheimnisses: Bob erzeugt ein zufälliges Geheimnis, bezeichnet als s (das Preimage), und berechnet dessen Hashwert, bezeichnet als r, mit der Hashfunktion, bezeichnet als h. Wir haben:

r = h(s)

Die Verwendung einer Hashfunktion macht es unmöglich, s nur mit h(s) zu finden, aber wenn s bereitgestellt wird, ist es einfach zu überprüfen, dass es h(s) entspricht.

LNP201

Senden der Zahlungsanforderung: Bob sendet Alice eine Rechnung mit der Bitte um eine Zahlung. Diese Rechnung beinhaltet insbesondere den Hash r.

LNP201

Senden der bedingten Zahlung: Alice sendet eine HTLC von 40.000 Satoshis an Suzie. Die Bedingung für Suzie, diese Mittel zu erhalten, ist, dass sie Alice ein Geheimnis s' liefert, das die folgende Gleichung erfüllt:

h(s') = r
LNP201

Übertragen der HTLC an den endgültigen Empfänger: Suzie muss, um die 40.000 Satoshis von Alice zu erhalten, eine ähnliche HTLC von 40.000 Satoshis an Bob übertragen, der dieselbe Bedingung hat, nämlich dass er Suzie ein Geheimnis s' liefern muss, das die Gleichung erfüllt:

h(s') = r
LNP201

Validierung durch das Geheimnis s: Bob liefert s an Suzie, um die versprochenen 40.000 Satoshis in der HTLC zu erhalten. Mit diesem Geheimnis kann Suzie dann Alices HTLC entsperren und die 40.000 Satoshis von Alice erhalten. Die Zahlung wird dann korrekt an Bob weitergeleitet.

LNP201 Dieser Prozess verhindert, dass Suzie Alices Mittel behält, ohne die Überweisung an Bob abzuschließen, da sie die Zahlung an Bob senden muss, um das Geheimnis s zu erhalten und somit Alices HTLC zu entsperren. Der Vorgang bleibt derselbe, auch wenn die Route mehrere Zwischenknoten umfasst: Es geht einfach darum, Suzies Schritte für jeden Zwischenknoten zu wiederholen. Jeder Knoten ist durch die Bedingungen der HTLCs geschützt, denn das Entsperren des letzten HTLC durch den Empfänger löst automatisch das Entsperren aller anderen HTLCs in einer Kaskade aus.

Ablauf und Verwaltung von HTLCs bei Problemen

Wenn während des Zahlungsprozesses einer der Zwischenknoten oder der Empfängerknoten nicht mehr reagiert, insbesondere im Falle eines Internet- oder Stromausfalls, dann kann die Zahlung nicht abgeschlossen werden, weil das Geheimnis, das benötigt wird, um die HTLCs zu entsperren, nicht übermittelt wird. In unserem Beispiel mit Alice, Suzie und Bob tritt dieses Problem auf, zum Beispiel, wenn Bob das Geheimnis s nicht an Suzie übermittelt. In diesem Fall sind alle HTLCs stromaufwärts des Pfades blockiert, und ebenso die Mittel, die sie sichern.

LNP201

Um dies zu vermeiden, haben HTLCs auf Lightning ein Ablaufdatum, das die Entfernung des HTLC ermöglicht, wenn es nach einer bestimmten Zeit nicht abgeschlossen ist. Das Ablaufdatum folgt einer spezifischen Reihenfolge, da es zuerst mit dem HTLC beginnt, das dem Empfänger am nächsten ist, und sich dann schrittweise bis zum Aussteller der Transaktion nach oben bewegt. In unserem Beispiel, wenn Bob nie das Geheimnis s an Suzie gibt, würde dies zuerst dazu führen, dass Suzies HTLC in Richtung Bob abläuft.

LNP201

Dann das HTLC von Alice an Suzie.

LNP201

Wenn die Reihenfolge des Ablaufs umgekehrt wäre, könnte Alice ihre Zahlung zurückerhalten, bevor Suzie sich vor möglichem Betrug schützen könnte. Tatsächlich, wenn Bob zurückkommt, um seine HTLC zu beanspruchen, während Alice ihre bereits entfernt hat, wäre Suzie im Nachteil. Diese kaskadierende Reihenfolge des HTLC-Ablaufs stellt daher sicher, dass kein Zwischenknoten ungerechte Verluste erleidet.

Darstellung von HTLCs in Commitment-Transaktionen

Commitment-Transaktionen stellen HTLCs so dar, dass die Bedingungen, die sie für Lightning auferlegen, auf Bitcoin übertragen werden können, falls es während der Lebensdauer einer HTLC zu einer erzwungenen Kanalschließung kommt. Zur Erinnerung: Commitment-Transaktionen repräsentieren den aktuellen Zustand des Kanals zwischen den beiden Nutzern und ermöglichen eine einseitige erzwungene Schließung im Falle von Problemen. Mit jedem neuen Zustand des Kanals werden 2 Commitment-Transaktionen erstellt: eine für jede Partei. Lassen Sie uns unser Beispiel mit Alice, Suzie und Bob erneut betrachten, aber genauer darauf eingehen, was auf Kanalebene zwischen Alice und Suzie geschieht, wenn die HTLC erstellt wird. LNP201

Vor dem Start der 40.000 Sats-Zahlung zwischen Alice und Bob hat Alice 100.000 Sats in ihrem Kanal mit Suzie, während Suzie 30.000 hält. Ihre Commitment-Transaktionen sind wie folgt:

LNP201

Alice hat gerade Bobs Rechnung erhalten, die insbesondere r, den Hash des Geheimnisses, enthält. Sie kann also eine HTLC von 40.000 Satoshis mit Suzie konstruieren. Diese HTLC wird in den neuesten Commitment-Transaktionen als Ausgabe namens "HTLC Out" auf Alices Seite dargestellt, da die Mittel ausgehend sind, und "HTLC In" auf Suzies Seite, da die Mittel eingehend sind.

LNP201

Diese mit der HTLC verbundenen Ausgaben teilen genau die gleichen Bedingungen, nämlich:

Diese Bedingungen gelten nur, wenn der Kanal geschlossen wird (d.h., eine Commitment-Transaktion wird on-chain veröffentlicht), während die HTLC noch auf Lightning aktiv ist, was bedeutet, dass die Zahlung zwischen Alice und Bob noch nicht abgeschlossen ist und die HTLCs noch nicht abgelaufen sind. Dank dieser Bedingungen kann Suzie die 40.000 Satoshis der HTLC, die ihr geschuldet werden, durch Bereitstellung von s zurückgewinnen. Andernfalls erhält Alice die Mittel nach dem Ablauf des Zeitraums zurück, denn wenn Suzie s nicht kennt, bedeutet das, dass sie die 40.000 Satoshis nicht an Bob übertragen hat, und daher sind Alices Mittel ihr nicht geschuldet.

Darüber hinaus, wenn der Kanal geschlossen wird, während mehrere HTLCs ausstehend sind, wird es so viele zusätzliche Ausgaben geben, wie es laufende HTLCs gibt. Wenn der Kanal nicht geschlossen wird, dann werden nach dem Ablauf oder Erfolg der Lightning-Zahlung neue Commitment-Transaktionen erstellt, um den neuen, nun stabilen Zustand des Kanals zu reflektieren, das heißt, ohne ausstehende HTLCs. Die mit den HTLCs verbundenen Ausgaben können daher aus den Commitment-Transaktionen entfernt werden. LNP201

Schließlich, im Falle einer kooperativen Kanalschließung, während ein HTLC aktiv ist, hören Alice und Suzie auf, neue Zahlungen zu akzeptieren und warten auf die Auflösung oder das Ablaufen der laufenden HTLCs. Dies ermöglicht es ihnen, eine leichtere Abschlusstransaktion zu veröffentlichen, ohne die Ausgaben, die mit den HTLCs verbunden sind, wodurch Gebühren reduziert werden und das Warten auf eine mögliche Zeitverriegelung vermieden wird. Was sollten Sie aus diesem Kapitel mitnehmen?

HTLCs ermöglichen das Routing von Lightning-Zahlungen durch mehrere Knoten, ohne ihnen vertrauen zu müssen. Hier sind die Schlüsselpunkte, die Sie sich merken sollten:

Im nächsten Kapitel werden wir entdecken, wie ein Knoten, der eine Lightning-Transaktion ausstellt, Routen findet und auswählt, damit seine Zahlung den Empfängerknoten erreicht.

Ihren Weg finden

7e2ae959-c2a1-512e-b5d6-8fd962e819da :::video id=e5baa834-111d-46f5-a28b-3538bed2bbb0:::

In den vorherigen Kapiteln haben wir gesehen, wie man die Kanäle anderer Knoten nutzen kann, um Zahlungen zu routen und einen Knoten zu erreichen, ohne direkt über einen Kanal mit ihm verbunden zu sein. Wir haben auch besprochen, wie man die Sicherheit der Übertragung ohne Vertrauen in die Zwischenknoten gewährleistet. In diesem Kapitel werden wir uns darauf konzentrieren, die bestmögliche Route zu finden, um einen Zielknoten zu erreichen.

Das Problem des Routings im Lightning

Wie wir gesehen haben, ist es im Lightning-Netzwerk der zahlungssendende Knoten, der die komplette Route zum Empfänger berechnen muss – denn es wird ein Onion-Routing-System verwendet. Die Zwischenknoten kennen weder den Ursprung noch das endgültige Ziel der Zahlung. Sie wissen nur, woher die Zahlung kommt und an welchen Knoten sie als Nächstes weitergeleitet werden muss.

Das bedeutet, dass der sendende Knoten eine dynamische lokale Topologie des Netzwerks aufrechterhalten muss – mit allen bekannten Lightning-Knoten und den Kanälen dazwischen, unter Berücksichtigung von Öffnungen, Schließungen und Statusaktualisierungen.

LNP201 Selbst mit dieser Topologie des Lightning-Netzwerks gibt es wesentliche Informationen für das Routing, die dem sendenden Knoten nicht zugänglich sind, nämlich die genaue Verteilung der Liquidität in den Kanälen zu einem bestimmten Zeitpunkt. Tatsächlich zeigt jeder Kanal nur seine gesamte Kapazität an, aber die interne Verteilung der Mittel ist nur den beiden teilnehmenden Knoten bekannt. Dies stellt Herausforderungen für ein effizientes Routing dar, da der Erfolg der Zahlung insbesondere davon abhängt, ob ihr Betrag geringer ist als die niedrigste Liquidität auf der gewählten Route. Die Liquiditäten sind jedoch nicht alle für das sendende Knoten sichtbar. LNP201

Aktualisierung der Netzwerkkarte

Um ihre Netzwerkkarte aktuell zu halten, tauschen Knoten regelmäßig Nachrichten durch einen Algorithmus namens "gossip" aus. Dies ist ein verteilter Algorithmus, der verwendet wird, um Informationen auf epidemische Weise an alle Knoten im Netzwerk zu verbreiten, was den Austausch und die Synchronisierung des globalen Zustands der Kanäle in wenigen Kommunikationszyklen ermöglicht. Jeder Knoten verbreitet Informationen an einen oder mehrere zufällig oder nicht zufällig gewählte Nachbarn, diese wiederum verbreiten die Informationen an andere Nachbarn und so weiter, bis ein global synchronisierter Zustand erreicht ist.

Die 2 Hauptnachrichten, die zwischen Lightning-Knoten ausgetauscht werden, sind wie folgt:

Eine Zahlung routen

Nehmen wir das Beispiel eines kleinen Lightning-Netzwerks mit 7 Knoten: Alice, Bob, 1, 2, 3, 4 und 5. Stellen Sie sich vor, Alice möchte eine Zahlung an Bob senden, muss aber über Zwischenknoten gehen.

LNP201

Hier ist die tatsächliche Verteilung der Mittel in diesen Kanälen:

LNP201

Um eine Zahlung von 100.000 Sats von Alice an Bob zu machen, sind die Routing-Optionen durch die verfügbare Liquidität in jedem Kanal begrenzt. Die optimale Route für Alice, basierend auf den bekannten Liquiditätsverteilungen, könnte die Sequenz Alice → 1 → 2 → 4 → 5 → Bob sein:

LNP201

Da Alice jedoch die genaue Verteilung der Mittel in jedem Kanal nicht kennt, muss sie die optimale Route probabilistisch schätzen, wobei sie die folgenden Kriterien berücksichtigt:

Zahlungsausführung

Alice entscheidet sich, ihre erste Route (Alice → 1 → 2 → 5 → Bob) zu testen. Sie sendet daher ein HTLC von 100.000 Sats an Knoten 1. Dieser Knoten prüft, ob er genügend Liquidität mit Knoten 2 hat, und setzt die Übertragung fort. Knoten 2 erhält dann das HTLC von Knoten 1, stellt jedoch fest, dass er nicht genügend Liquidität in seinem Kanal mit Knoten 5 hat, um eine Zahlung von 100.000 Sats zu routen. Er sendet dann eine Fehlermeldung zurück an Knoten 1, der sie an Alice übermittelt. Diese Route ist gescheitert.

LNP201

Alice versucht dann, ihre Zahlung mit ihrer zweiten Route (Alice → 1 → 2 → 4 → 5 → Bob) zu routen. Sie sendet ein HTLC von 100.000 Sats an Knoten 1, der es an Knoten 2, dann an Knoten 4, an Knoten 5 und schließlich an Bob übermittelt. Dieses Mal ist die Liquidität ausreichend, und die Route funktioniert. Jeder Knoten entsperrt sein HTLC kaskadenartig mit dem von Bob bereitgestellten Preimage (dem Geheimnis s), was die erfolgreiche Finalisierung von Alices Zahlung an Bob ermöglicht.

LNP201

Die Suche nach einer Route erfolgt wie folgt: Der sendende Knoten beginnt mit der Identifizierung der bestmöglichen Routen und versucht dann Zahlungen nacheinander, bis eine funktionierende Route gefunden wird.

Es ist erwähnenswert, dass Bob Alice Informationen in der Rechnung zur Verfügung stellen kann, um das Routing zu erleichtern. Zum Beispiel kann er nahegelegene Kanäle mit ausreichender Liquidität angeben oder die Existenz von privaten Kanälen offenbaren. Diese Hinweise ermöglichen es Alice, Routen mit geringer Erfolgschance zu vermeiden und zuerst die von Bob empfohlenen Pfade zu versuchen.

Was sollten Sie aus diesem Kapitel mitnehmen?

Im folgenden Kapitel werden wir speziell die Funktionsweise von Rechnungen studieren, zusätzlich zu einigen anderen Tools, die im Lightning-Netzwerk verwendet werden.

Die Werkzeuge des Lightning-Netzwerks

Rechnung, LNURL und Keysend

e34c7ecd-2327-52e3-b61e-c837d9e5e8b0 :::video id=309c3412-506e-4189-ad46-5e5088c55008::: In diesem Kapitel werden wir uns genauer mit der Funktionsweise von Lightning Rechnungen befassen, also Zahlungsanforderungen, die vom Empfängerknoten an den Senderknoten gesendet werden. Ziel ist es zu verstehen, wie man auf Lightning bezahlt und Zahlungen empfängt. Wir werden auch 2 Alternativen zu klassischen Rechnungen besprechen: LNURL und Keysend. LNP201

Die Struktur von Lightning-Rechnungen

Wie im Kapitel über HTLCs erklärt, beginnt jede Zahlung mit der Erstellung einer Rechnung durch den Empfänger. Diese Rechnung wird dann an den Zahler übermittelt (über einen QR-Code oder durch Kopieren und Einfügen), um die Zahlung einzuleiten. Eine Rechnung besteht aus zwei Hauptteilen:

Die typische Struktur einer Rechnung beginnt mit einem Identifikator ln für "Lightning", gefolgt von bc für Bitcoin, dann der Betrag der Rechnung. Ein Separator 1 unterscheidet den für Menschen lesbaren Teil vom Daten- (Payload-)Teil.

Nehmen wir die folgende Rechnung als Beispiel:

lnbc100u1p0x7x7dpp5l7r9y50wrzz0lwnsqgxdks50lxtwkl0mhd9lslr4rcgdtt2n6lssp5l3pkhdx0cmc9gfsqvw5xjhph84my2frzjqxqyz5vq9qsp5k4mkzv5jd8u5n89d2yc50x7ptkl0zprx0dfjh3km7g0x98g70hsqq7sqqqgqqyqqqqlgqqvnv2k5ehwnylq3rhpd9g2y0sq9ujyxsqqypjqqyqqqqqqqqqqqsqqqqq9qsq3vql5f6e45xztgj7y6xw6ghrcz3vmh8msrz8myvhsarxg42ce9yyn53lgnryx0m6qqld8fql

Wir können sie bereits in 2 Teile unterteilen. Zuerst gibt es den für Menschen lesbaren Teil:

lnbc100u

Dann der Teil, der für den Payload bestimmt ist:


p0x7x7dpp5l7r9y50wrzz0lwnsqgxdks50lxtwkl0mhd9lslr4rcgdtt2n6lssp5l3pkhdx0cmc9gfsqvw5xjhph84my2frzjqxqyz5vq9qsp5k4mkzv5jd8u5n89d2yc50x7ptkl0zprx0dfjh3km7g0x98g70hsqq7sqqqgqqyqqqqlgqqvnv2k5ehwnylq3rhpd9g2y0sq9ujyxsqqypjqqyqqqqqqqqqqqsqqqqq9qsq3vql5f6e45xztgj7y6xw6ghrcz3vmh8msrz8myvhsarxg42ce9yyn53lgnryx0m6qqld8fql

Die beiden Teile sind durch eine 1 getrennt. Dieser Separator wurde anstelle eines Sonderzeichens gewählt, um das einfache Kopieren und Einfügen der gesamten Rechnung durch Doppelklicken zu ermöglichen. Im ersten Teil können wir sehen, dass:

Um den Zahlungsbetrag zu bezeichnen, wird er in Untereinheiten von Bitcoin ausgedrückt. Hier sind die verwendeten Einheiten:

Der Inhalt einer Rechnung

Der Inhalt einer Rechnung umfasst mehrere Informationen, die für die Verarbeitung der Zahlung notwendig sind:

Die Rechnungen werden dann in bech32 kodiert, dem gleichen Format wie für Bitcoin SegWit-Adressen (Format beginnend mit bc1).

LNURL-Abhebung

Bei einer traditionellen Transaktion, wie einem Kauf im Geschäft, wird die Rechnung für den zu zahlenden Gesamtbetrag erstellt. Sobald die Rechnung (in Form eines QR-Codes oder einer Zeichenfolge) vorgelegt wird, kann der Kunde sie scannen und die Transaktion abschließen. Die Zahlung folgt dann dem traditionellen Prozess, den wir im vorherigen Abschnitt studiert haben. Dieser Prozess kann jedoch manchmal sehr umständlich für das Benutzererlebnis sein, da er vom Empfänger verlangt, Informationen über die Rechnung an den Sender zu senden. Für bestimmte Situationen, wie das Abheben von Bitcoins von einem Online-Dienst, ist der traditionelle Prozess zu umständlich. In solchen Fällen vereinfacht die LNURL-Abhebungslösung diesen Prozess, indem ein QR-Code angezeigt wird, den die Wallet des Empfängers scannt, um automatisch die Rechnung zu erstellen. Der Dienst bezahlt dann die Rechnung, und der Benutzer sieht einfach eine sofortige Abhebung.

LNP201

LNURL ist ein Kommunikationsprotokoll, das eine Reihe von Funktionalitäten spezifiziert, die darauf ausgelegt sind, Interaktionen zwischen Lightning-Knoten und Clients sowie Drittanbieteranwendungen zu vereinfachen. Die LNURL-Abhebung, wie wir gerade gesehen haben, ist also nur ein Beispiel unter anderen Funktionalitäten. Dieses Protokoll basiert auf HTTP und ermöglicht die Erstellung von Links für verschiedene Operationen, wie eine Zahlungsanforderung, eine Abhebungsanforderung oder andere Funktionalitäten, die das Benutzererlebnis verbessern. Jede LNURL ist eine in bech32 kodierte URL mit dem lnurl-Präfix, die, einmal gescannt, eine Reihe von automatischen Aktionen in der Lightning-Wallet auslöst. Zum Beispiel ermöglicht die Funktion LNURL-withdraw (LUD-03) das Abheben von Geldern von einem Dienst durch Scannen eines QR-Codes, ohne dass manuell eine Rechnung generiert werden muss. Ebenso ermöglicht LNURL-auth (LUD-04) das Einloggen in Online-Dienste mit einem privaten Schlüssel in der eigenen Lightning-Wallet anstelle eines Passworts.

Eine Lightning-Zahlung ohne Rechnung senden: Keysend

Ein weiterer interessanter Fall ist die Überweisung von Geldern, ohne zuvor eine Rechnung erhalten zu haben, bekannt als "Keysend". Dieses Protokoll ermöglicht das Senden von Geldern, indem ein Preimage in den verschlüsselten Zahlungsdaten hinzugefügt wird, auf das nur der Empfänger zugreifen kann. Dieses Preimage ermöglicht es dem Empfänger, das HTLC zu entsperren und somit die Gelder abzurufen, ohne zuvor eine Rechnung generiert zu haben.

Einfach ausgedrückt, ist es in diesem Protokoll der Sender, der das Geheimnis generiert, das in den HTLCs verwendet wird, anstatt des Empfängers. Praktisch ermöglicht dies dem Sender, eine Zahlung zu leisten, ohne zuvor mit dem Empfänger interagiert zu haben.

LNP201

Was sollten Sie aus diesem Kapitel mitnehmen?

Im folgenden Kapitel werden wir sehen, wie ein Knotenbetreiber die Liquidität in seinen Kanälen verwalten kann, um nie blockiert zu sein und immer in der Lage zu sein, Zahlungen im Lightning-Netzwerk zu senden und zu empfangen.

Ihre Liquidität verwalten

cc76d0c4-d958-57f5-84bf-177e21393f48 :::video id=96096aef-e4ce-4c44-a022-57e27082232a:::

In diesem Kapitel werden wir Strategien zur effektiven Verwaltung der Liquidität im Lightning-Netzwerk erkunden. Die Verwaltung der Liquidität variiert je nach Benutzertyp und Kontext. Wir werden uns die Hauptprinzipien und bestehenden Techniken ansehen, um besser zu verstehen, wie man diese Verwaltung optimieren kann.

Liquiditätsbedarf

Es gibt drei Hauptnutzerprofile auf Lightning, jedes mit spezifischen Liquiditätsbedürfnissen:

Diese Profile sind natürlich nicht festgelegt; ein Nutzer kann je nach den Transaktionen zwischen Zahler und Zahlungsempfänger wechseln. Zum Beispiel könnte Bob sein Gehalt auf Lightning von seinem Arbeitgeber erhalten, was ihn in die Position eines "Verkäufers" mit Bedarf an eingehender Liquidität versetzt. Anschließend, wenn er sein Gehalt verwenden möchte, um Lebensmittel zu kaufen, wird er zum "Zahler" und muss dann über ausgehende Liquidität verfügen.

Um besser zu verstehen, nehmen wir das Beispiel eines einfachen Netzwerks, bestehend aus drei Knoten: dem Käufer (Alice), dem Router (Suzie) und dem Verkäufer (Bob).

LNP201

Stellen Sie sich vor, der Käufer möchte 30.000 Sats an den Verkäufer senden und die Zahlung geht durch den Knoten des Routers. Jede Partei muss dann eine Mindestmenge an Liquidität in Richtung der Zahlung haben:

LNP201

Strategien für das Liquiditätsmanagement

Zahler müssen sicherstellen, dass sie ausreichend Liquidität auf ihrer Seite der Kanäle haben, um ausgehende Liquidität zu garantieren. Dies erweist sich als relativ einfach, da es ausreicht, neue Lightning-Kanäle zu eröffnen, um diese Liquidität zu haben. Tatsächlich sind die anfänglich im Multisig on-chain gesperrten Mittel vollständig auf der Seite des Zahlers im Lightning-Kanal zu Beginn. Die Zahlungskapazität ist somit gesichert, solange Kanäle mit genügend Mitteln eröffnet werden. Wenn die ausgehende Liquidität erschöpft ist, reicht es aus, neue Kanäle zu öffnen. Andererseits ist die Aufgabe für den Verkäufer komplexer. Um Zahlungen empfangen zu können, müssen sie Liquidität auf der gegenüberliegenden Seite ihrer Kanäle haben. Daher reicht es nicht aus, einen Kanal zu eröffnen: Sie müssen auch eine Zahlung in diesem Kanal tätigen, um die Liquidität auf die andere Seite zu verschieben, bevor sie selbst Zahlungen empfangen können. Für bestimmte Lightning-Nutzerprofile, wie Händler, gibt es eine klare Disproportion zwischen dem, was ihr Knoten sendet, und dem, was er empfängt, da das Ziel eines Geschäfts hauptsächlich darin besteht, mehr zu sammeln, als es ausgibt, um einen Gewinn zu erzielen. Glücklicherweise existieren für diese Nutzer mit spezifischen Bedürfnissen nach eingehender Liquidität mehrere Lösungen:

LNP201 LNP201

Schließlich müssen Router, deren Ziel es ist, die Anzahl der verarbeiteten Zahlungen und die gesammelten Gebühren zu maximieren:

Der Loop Out Service

Der Loop Out Service, angeboten von Lightning Labs, ermöglicht es, Liquidität auf die Gegenseite des Kanals zu bewegen und gleichzeitig die Gelder auf der Bitcoin-Blockchain zurückzufordern. Zum Beispiel sendet Alice 1 Million Satoshis über Lightning an einen Loop-Knoten, der diese Gelder dann in On-Chain-Bitcoins an sie zurückgibt. Dies balanciert ihren Kanal mit 1 Million Satoshis auf jeder Seite aus und optimiert ihre Kapazität, Zahlungen zu empfangen.

LNP201

Daher ermöglicht dieser Service eingehende Liquidität, während man seine Bitcoins On-Chain zurückfordert, was hilft, die Immobilisierung von Bargeld, das benötigt wird, um Zahlungen mit Lightning zu akzeptieren, zu begrenzen.

Was sollten Sie aus diesem Kapitel mitnehmen?

Im nächsten Kapitel schlage ich vor, die wichtigsten Konzepte dieser Schulung zu überprüfen.

Weiterführende Informationen

Zusammenfassung der Schulung

a65a571c-561b-5e1c-87bf-494644653c22 :::video id=5f4f4344-ef27-4765-8f09-8262e6833bde:::

In diesem abschließenden Kapitel, das das Ende des LNP201-Trainings markiert, schlage ich vor, die wichtigen Konzepte, die wir gemeinsam behandelt haben, noch einmal zu besuchen. Das Ziel dieses Trainings war es, Ihnen ein umfassendes und technisches Verständnis des Lightning-Netzwerks zu vermitteln. Wir haben entdeckt, wie das Lightning-Netzwerk auf der Bitcoin-Blockchain basiert, um Off-Chain-Transaktionen durchzuführen, während es die grundlegenden Eigenschaften von Bitcoin beibehält, insbesondere die Abwesenheit der Notwendigkeit, anderen Knoten zu vertrauen.

Zahlungskanäle

In den ersten Kapiteln haben wir erkundet, wie zwei Parteien durch das Öffnen eines Zahlungskanals Transaktionen außerhalb der Bitcoin-Blockchain durchführen können. Hier sind die abgedeckten Schritte:

LNP201 2. Transaktionen im Kanal: In diesem Kanal ist es dann möglich, zahlreiche Transaktionen durchzuführen, ohne sie auf der Blockchain veröffentlichen zu müssen. Jede Lightning-Transaktion erzeugt einen neuen Zustand des Kanals, der in einer Commitment-Transaktion widergespiegelt wird. LNP201

LNP201

Das Netzwerk der Kanäle

Nachdem wir isolierte Kanäle untersucht haben, haben wir unsere Analyse auf das Netzwerk der Kanäle ausgeweitet:

LNP201 LNP201 LNP201

Liquiditätsmanagement

Wir haben gesehen, dass das Liquiditätsmanagement im Lightning eine Herausforderung darstellt, um den reibungslosen Fluss von Zahlungen zu gewährleisten. Zahlungen zu senden ist relativ einfach: es erfordert lediglich das Öffnen eines Kanals. Das Empfangen von Zahlungen erfordert jedoch Liquidität auf der gegenüberliegenden Seite der eigenen Kanäle. Hier sind einige diskutierte Strategien:

LNP201 LNP201

Abschließender Abschnitt

Bewertungen & Noten

38814c99-eb7b-5772-af49-4386ee2ce9b0 true

Abschlussprüfung

7ed33400-aef7-5f3e-bfb1-7867e445d708 true

Fazit

afc0d72b-4fbc-5893-90b2-e27fb519ad02 true