Bitcoin

Blitz: wie zahlungskanäle ein netzwerk aufbauen

Bitcoin Blitz: wie zahlungskanäle ein netzwerk aufbauen

Eclair Wallet | ⚡ BTC-Lightning-Wallet | Testnet-Version (November 2018).

Anonim

Der zweite Teil der Blitzsaga; Wie können Zahlungskanäle ein Netzwerk aufbauen? Wie ist es möglich, Bitcoins an jemand anderen zu senden, ohne einen Kanal mit ihnen zu unterhalten? Warum braucht kein Vertrauen in Dritte? Und wie können Lightning Nodes einen Weg durch das Netzwerk finden? Nachdem Sie unsere Erklärung gelesen haben, werden Sie mehr wissen.

Das Wichtigste, was man über Lightning sagen kann, ist, dass die Erklärung nicht zu einfach sein wird. Wenn Sie in der Lage waren, Ihr Gehirn darüber zu informieren, wie Bitcoin funktioniert, werden Sie die nächste Herausforderung beim Verständnis von Lightning finden.

Bevor wir zum Thema dieses Teils unserer Serie kommen, wiederholen wir die wichtigsten Grundlagen; Lightning ist ein Netzwerk von Off-Chain-Transaktionen, das heißt Transaktionen, die nicht auf der Bitcoin-Blockchain laufen, aber dennoch gültig und vertrauenslos sind. Der Vorteil ist, dass Sie nicht warten müssen, bis ein Bergmann bestätigt, dass Sie wissen, dass Sie bezahlt wurden, und vielleicht am wichtigsten; Sie speichern Ihre Transaktion nicht in der öffentlichen Blockchain, die von jedem Knoten des Netzwerks dupliziert wird. Mit dieser Architektur löst Lightning grundlegende Aspekte von Bitcoin bezüglich Skalierung und Datenschutz.

Wenn Sie denken, dass es gut klingt, sollten Sie anfangen zu verstehen, wie es funktioniert.

Zahlungskanäle

Die Grundeinheiten von Lightning sind Zahlungskanäle. Sie können sich vorstellen, dass sie ein Transaktionsformular kontinuierlich bearbeiten und signieren, ohne es bei Ihrer Bank einzureichen.

Genau die Parteien eines Zahlungskanals senden sich gegenseitig signierte Bitcoin-Transaktionen, propagieren die Transaktion jedoch niemals im Netzwerk. Da die Transaktion mit jeder Zahlung aktualisiert wird, können Sie so viele Transaktionen über den Zahlungskanal senden, wie Sie möchten. Wenn die Transaktion schließlich an die Minenarbeiter gesendet und auf der Blockchain bestätigt wird, wird der Kanal geschlossen.

Zum Erstellen des Zahlungskanals verwenden beide Parteien eine gemeinsame Multisig-Adresse, die nur aktualisiert werden kann, wenn beide übereinstimmen. Sie öffnen den Kanal, indem sie eine Bitcoin-Menge an diese Adresse senden. Beide Parteien müssen Bitcoins senden, und in der Regel können Sie mit einem Kanal nur so viele Münzen erhalten, wie Sie ursprünglich eingegeben haben.

Mehrere intelligente Verträge garantieren, dass sich beide Parteien nicht gegenseitig vertrauen müssen, was nicht der Fall ist möglich zu betrügen. Weder kann eine Partei die Gelder der anderen Partei zurückhalten noch kann sie eine alte Transaktion an das Netzwerk freigeben und somit eine spätere Zahlung rückgängig machen. Die einzige Voraussetzung dafür, dass die Zahlungskanäle von Lightning ohne Vertrauen funktionieren, ist, dass beide Parteien permanent online sind, oder zumindest einmal in einer bestimmten Zeit.

Wenn du tiefer verstehen möchtest, wie die Zahlungskanäle aufgebaut sind, kannst du den ersten Teil unserer Lightning Saga lesen. In diesem Teil wenden wir uns der Frage zu, wie die Kanäle ein Netzwerk aufbauen. Dies ist der wichtigste Teil von Lightning, da Payment Channels eine charmante Technologie sein können, aber wie die Implementierungen von beiden, wie SatoshiPay, zeigen, gibt es nicht viel Marktnachfrage dafür. Sie können sie nur in besonderen Fällen verwenden. Um Payment Channels zu einem Mainstream zu machen, müssen Sie sie zu einem Netzwerk zusammenführen. Die große Frage ist: Wie kann das gemacht werden?

Wie die Kanäle ein Netzwerk aufbauen

Jetzt kommen wir zum lustigen Teil. Während Bitcoin-Transaktionen, wie wir heute wissen, von jedem Peer empfangen, validiert und weitergeleitet und gespeichert werden, nachdem sie von den Minern bestätigt wurden, fließen Lightning-Transaktionen nur vom Sender zum Empfänger, der sie speichert und validiert.

Es ist leicht, wenn Sie nur zwei Parteien haben, nennen wir sie Donald und Wladimir. Aber was passiert, wenn wir eine dritte Partei vorstellen, zum Beispiel Angela? Image Donald hat einen Kanal mit Wladimir und Wladimir hat auch einen Kanal mit Angela. Die Idee ist, dass Donald nun Wladimir als Drehscheibe nutzen kann, um seine Transaktion an Angela zu senden. Aber wie ist das möglich?

Grundsätzlich ist es einfach. Donald schickt einen Bitcoin, genauer gesagt, die Transaktion für einen Bitcoin - an Wladimir, und Wladimir schickt einen Bitcoin an Angela. Vielleicht kennst du das beliebte Brettspiel Risk. Die Regeln dieses Spiels sagen, dass jede Armee nach jeder Runde über eine Grenze ziehen darf. Zum Beispiel können Sie eine Armee von Brasilien nach Nordwestafrika versetzen. Da die Armee, die zuvor in Nordwest-Afrika war, noch nicht umgezogen ist, kann sie nach Ägypten verlegt werden. Und so weiter. Ähnlich wie die Kuriere des 18. Jahrhunderts, die das Pferd auf Postlagern veränderten.

Bild von Islam Hassan via flickr. com. Lizenz: Creative Commons

Der gelbe Spieler kann Armeen von Mexiko nach Ägypten bewegen, auch wenn jede Armee in jeder Runde nur eine Grenze überschreiten darf.

Mit diesem Schema haben wir die grundlegende Topographie des Lightning Network. Die Zahlungen laufen über die Kanäle. Wenn Sie weitere Partys hinzufügen - sagen wir, Francois hat einen Kanal mit Angela und Mariano mit Francois - können Sie die Transaktion von Donald zu Mariano über Wladimir, Angela und Francois routen. Und so weiter.

Die genaue Architektur des Netzwerks ist noch nicht bekannt. Es gibt endlose Möglichkeiten. Es kann vollständig dezentralisiert sein, da jeder Benutzer mehrere Kanäle verwaltet und die Zahlungswege durch eine Vielzahl von möglichen Pfaden verlaufen. Gleichzeitig könnten mächtige Hubs entstehen, die viel Geld in vielen Kanälen sperren und es jedem Benutzer leicht machen, den Weg zum Ziel zu finden. Diese Kanäle können eine Menge Geld verdienen, indem sie die Zahlungsgewohnheiten ihrer Kunden beobachten oder Gebühren für Routing-Dienste einziehen.

Die goldene Frage ist jedoch; Wie kann das ohne Vertrauen funktionieren? Wenn Donald Wladimir eine Zahlung mit der Bitte gibt, dass er sie an Angela weitergibt - wie kann er wissen, dass Wladimir nicht sagt: "Leute, ich behalte es einfach?"

Die Antwort ist nicht leicht zu verstehen. Aber lass es uns versuchen.

Hash Time-Locked Contracts

Die Lösung wird als Hash Time-Locked Contracts bezeichnet. Es ist ein hässlicher Begriff, aber es macht Sinn; Um Geld von Donald zu erhalten, generiert Angela einen zufälligen Wert. Nennen wir es R. R ist nur eine Anzahl von Zeichen, wie ein Passwort.

Dann erstellt Angela einen Hash von R. Ein Hash ist das Ergebnis einer kryptografischen Operation, die eine gegebene Zeichenkette in eine andere Zeichenkette umwandelt. Es hat zwei wichtige Eigenschaften: Das Ergebnis der Operation ist immer gleich, und es ist nicht möglich, den Anfangswert mit dem Hash neu zu berechnen. Deshalb wird es eine Einwegfunktion genannt.

Jetzt nimmt Angela den Hash und gibt ihn Donald, der Wladimir einen Bitcoin verspricht, wenn er ihr den Startwert des Hash gibt. Es ist wie ein Rätsel; Angela gibt Donald das Rätsel, und Donald verspricht Wladimir eine Belohnung für die Lösung. Da wir niemandem vertrauen, verspricht Donald nicht nur etwas, sondern erzeugt eine besondere Art von Transaktion; ein sogenannter Hash-Vertrag.

Um das zu verstehen, müssen Sie wissen, dass jede Transaktion ein Skript verwendet. Eine Standardtransaktion besagt: "Sie dürfen mich ausgeben, wenn Sie eine neue Transaktion mit dem dieser oder dieser Adresse entsprechenden privaten Schlüssel unterschreiben. "Ein Hash-Vertrag sagt jedoch:" Sie können mich ausgeben, wenn Sie mir die richtige Signatur UND die Lösung für das Hash-Rätsel geben. "

Donald schickt eine solche Transaktion an Wladimir. Um die Ergebnisse dieser Transaktion ausgeben zu können, muss Wladimir Angela bitten, ihm den Wert zu geben, der für den Hashwert verwendet wurde. Es ist, als brauchte er ein Passwort. Angela gibt ihm nur den Wert, wenn Wladimir ihr einen Bitcoin gibt, und wenn Wladimir den Wert hat, kann er den Bitcoin von Donald erhalten. Operation erfolgreich.

Aber warte. Wie können Sie wissen, dass Wladimir die Transaktion wirklich weitergibt? Er könnte nur froh sein, Donalds Bitcoin eingesperrt zu sehen, auch wenn er nichts erhält? Donalds Transaktion bleibt im Nirgendwo hängen, und vielleicht kann Wladimir eine Extrazahlung von Donald verlangen, um sie zu veröffentlichen.

Hier kommt der Time-Locked-Teil des Vertrags in die Szene. Eine Lightning-Transaktion kann mit zwei Methoden ausgelöst werden. Zuerst, wie bereits erwähnt, wenn der Empfänger den Wert eines Hashes anzeigt und die Transaktion mit seinem privaten Schlüssel signiert. Zweitens - und das ist das Sicherheitsnetz - wenn der Absender es mit ihrer Unterschrift unterschreibt. Um zu verhindern, dass der Absender mogelt, ist diese Option zeitgesteuert. Es kann nur verwendet werden, nachdem eine bestimmte Zeit verstrichen ist. Wenn also Wladimir die Transaktion nicht an Angela weitergibt, kann Donald sie nach einiger Zeit zurücknehmen. Das schlimmste Ergebnis ist, dass eine Transaktion für einige Zeit eingefroren ist.

Also. Es war nicht so kompliziert wie erwartet, oder? Wir könnten das Szenario erweitern, indem wir Francois und Mariano vorstellen. In diesem Fall gibt der Sender dem Hash den Pfad zum Empfänger vor, während der Empfänger die Lösung für das Hash-Rätsel zurück auf den Pfad zum Absender verschiebt. Es ist generell nichts Neues, nur dass die Zeitschlösser so eingestellt werden müssen, dass die Kanäle kaskadierend kollabieren.

Damit ist die Frage, wie Lightning ohne Vertrauen arbeitet, mehr oder weniger beantwortet. Schwieriger ist jedoch die Frage, wie jeder Nutzer den Weg seiner Transaktion kennen lernt, um sein Ziel zu erreichen.

Flare, Sphinx, Onion Routing

Um eine Lightning-Transaktion zu initiieren, brauchst du idealerweise nichts weiter als einen Hash. Angela will Geld, also steckt sie irgendwo einen Hasch, und wenn Donald sie bezahlen will, schickt er Geld zum Hash. So geht es in einer perfekten Welt.

Der Trick besteht jedoch darin, den Lightning-Knoten mitzuteilen, wie eine Transaktion ablaufen soll. Wie können Sie dies ohne einen zentralen Knoten erreichen? Dies wird noch komplizierter, da nicht jeder Vermittler gleich ist. Jeder kann nur so viel Bitcoin passieren, wie er im Kanal gesperrt hat. Wenn Donald ein Bitcoin an Angela schicken will, Wladimir aber nur 0,5 Bitcoin in den Kanälen gesperrt hat, muss Donald einen alternativen Weg finden.

Einige sagen, dass dieses Routing-Problem die eigentliche Herausforderung von Lightning ist und dass es ein Problem ist, das ohne die Einführung zentraler Hubs nicht gelöst werden kann, was eine Katastrophe der Privatsphäre wäre. Andere sagen jedoch, dass ein dezentrales Routing nicht nur möglich, sondern bereits implementiert ist. Da Lightning derzeit nicht in einer realen Umgebung getestet wird, ist es schwer zu sagen, welche Seite richtig ist.

Die kompetenteste Quelle dafür könnten die Lightning-Entwickler sein. Rusty Russell von Blockstream schrieb Ende 2016 über das sogenannte Onion Routing:

"Im Internet ist das Routing einfach. Du wirfst ein Päckchen mit einer Adresse darauf und der Empfänger findet heraus, wie man es näher bringt. Es funktioniert meistens nur. Wenn Sie Anonymität wünschen, funktioniert dieses Schema nicht. "

Da Anonymität für jeden, der bei Blockstream arbeitet, ein großes Problem ist, schreibt Rusty, mussten sie nach einer Lösung suchen. Und sie fanden es im so genannten Sphinx-Schema, das schon früher veröffentlicht wurde und bereits von Christian Decker und Olaoluwa Osuntokun umgesetzt wurde.

Sphinx ist ein von George Danezis und Ian Goldberg entwickeltes Protokoll. Dem Whitepaper zufolge handelt es sich um ein kryptographisches Nachrichtenformat, das dazu dient, anonymisierte Nachrichten in einem Mix-Netzwerk weiterzuleiten. Es ist kompakter als jedes vergleichbare Schema und unterstützt eine ganze Reihe von Sicherheitsfunktionen: Ununterscheidbare Antworten, Verbergen der Pfadlänge und Relay-Position sowie Bereitstellung der Unlinkbarkeit für jeden Zweig der Nachricht Reise über das Netzwerk. "

Die Implementierung von Sphinx in Lightning hat das Ergebnis", fährt Rusty fort, "dass kein Knoten sagen kann, wie viele Hops bereits vergangen sind oder wie viele noch bleiben; nur die vorherigen und nächsten Hops. "Es ist nicht einfach, dies robust zu erreichen, aber die Entwickler sind dabei.

Eine Alternative zu Sphinx ist das von BitFury entwickelte Flare-Protokoll. Die Firma schrieb im Spätsommer 2016 ein Whitepaper darüber. Flare wurde von ACINQ getestet, einem französischen Startup, das den ersten Lightning-Prototyp baute. Laut BitFury konnte ACINQ eine Route zwischen 2, 500 AWS-Knoten schnell und robust finden.Dies gibt Flare das Potenzial, der Routing-Algorithmus für höhere Skalierbarkeit zu sein:

"Das Entwurfsziel für den Algorithmus besteht darin, sicherzustellen, dass Routen für das Lightning-Netzwerk so schnell wie möglich gefunden werden können und gleichzeitig die auf den Geräten gespeicherte Datenmenge minimiert wird Aufrechterhaltung der Dezentralisierung. Dies geschieht auf Kosten jedes Knotens, der proaktiv Informationen über die Topologie des Lightning-Netzwerks sammelt und reaktiv Informationen über die Topologie erfasst, die für Transaktionsanforderungen benötigt werden. "

So scheint es, dass die Herausforderung von Onion Routing nicht vollständig gelöst ist. Aber die Entwickler scheinen auf einem guten Weg zu sein, es zu lösen.

Beliebte Beiträge