Dieser Artikel befasst sich mit der Berücksichtigung von Zahlungskanälen außerhalb der Kette: deren Typen, Funktionsprinzipien und Anwendungsmerkmale. Das vorgestellte Material hilft zu verstehen, warum die Idee der Zahlungskanäle in Finanzbuchhaltungssystemen revolutionär ist. Wir werden über Zahlungskanäle speziell für Bitcoin sprechen. Dieser Artikel ist nützlich für diejenigen, die mit dem Konzept der Zahlungskanäle nicht vertraut sind, und vermittelt auch ein Verständnis der Prinzipien des Blitznetzwerks.
Zahlungskanäle und grundlegende Informationen dazu
Was ist ein Zahlungskanal?
Ein Zahlungskanal ist eine Methode zum Ausführen mehrerer Zahlungen, ohne der Blockchain eine Transaktion hinzuzufügen. Gleichzeitig interagieren Channel-Mitglieder nur miteinander. Die Anwesenheit zusätzlicher Validatoren oder vertrauenswürdiger Dritter ist nicht erforderlich.
Vorteile des Zahlungskanals
Was sind die Vorteile eines Zahlungskanals gegenüber regulären Transaktionen?
Im Rahmen eines bereits offenen Zahlungskanals erhalten die Teilnehmer die Möglichkeit, sofortige Zahlungen zu leisten. Die empfangende Partei führt eine schnelle unabhängige Überprüfung durch und akzeptiert die Zahlung. In der Basisversion gibt es keine Provisionen. Dementsprechend haben Mikrozahlungen einen Platz zu sein. Aufgrund dieser Funktion werden Zahlungskanäle auch als Mikrozahlungskanäle bezeichnet.
Ein weiterer interessanter Vorteil ist, dass die Interaktion der Channel-Teilnehmer privat durchgeführt werden kann. Dementsprechend bleiben die Details jeder Mikrozahlung vor allen anderen geheim, obwohl die Tatsache, dass ein Zahlungskanal zwischen bestimmten Bitcoin-Adressen verwendet wird, jedem bekannt ist.
Zahlungskanalfunktionen
Dies bedeutet nicht, dass Zahlungskanäle im Vergleich zu regulären Transaktionen schwerwiegende Mängel aufweisen, es gibt jedoch einige charakteristische Merkmale.
Der Zahlungskanal muss früher oder später geöffnet und entsprechend geschlossen werden. Dies erfolgt durch separate On-Chain-Transaktionen. Für sie ist die Zahlung einer Provision unvermeidlich und eine ausstehende Bestätigung ist erforderlich. Bei einer Eröffnungstransaktion ist es besser, auf die vollständige Bestätigung zu warten.
Innerhalb eines bestimmten Kanals sind Zahlungen nur innerhalb eines festgelegten Betrags verfügbar. Sie wird von den Teilnehmern selbst festgelegt und friert den gewünschten Betrag mithilfe eines speziellen Bitcoin-Skripts ein.
Zahlungskanäle können unidirektional und bidirektional, mono-direktional oder bidirektional sein. Dies hängt von der Methodik der Kanalimplementierung selbst ab.
Die Lebensdauer des Kanals und die maximale Anzahl von Zahlungen können begrenzt sein oder nicht. Das hängt von der Technik ab. Dementsprechend können die Kanäle nach einer bestimmten Zeit oder vorzeitig geschlossen werden. Darüber hinaus kann der Kanal im gegenseitigen Einvernehmen der Teilnehmer oder auf Anfrage eines von ihnen geschlossen werden, jedoch mit einigen Funktionen.
In einer vereinfachten Version kann der Betrieb des Zahlungskanals in einem solchen Schema dargestellt werden.

Es gibt ein Bitcoin-Netzwerk. Es gibt zwei Benutzer: Alice und Bob. Sie haben Bitcoin-Geldbörsen mit einem zusätzlichen Modul, damit der Zahlungskanal nach einer bestimmten Methode funktioniert. Diese Module tauschen Daten gegen Direktzahlungen aus.
Wessen Idee?
Zum ersten Mal wurde die Idee der Zahlungskanäle von Satoshi Nakamoto selbst vor vielen Jahren in einem persönlichen Brief an einen der aktiven Protokollentwickler beschrieben. Damals in Bitcoin wurden wichtige Updates nicht akzeptiert, die es ermöglichten, zuverlässige Zahlungskanäle zu entwerfen. Später wurde es jedoch möglich und kehrte 2013 zu dieser wirklich vielversprechenden Idee zurück.
Informationen zu Methoden zur Implementierung von Zahlungskanälen
Wir werden vier Hauptpunkte betrachten.
Zahlungskanäle im Spillman-Stil sind die einfachste Version eines Einwegkanals mit einer begrenzten Lebensdauer und einer unbegrenzten Anzahl von Zahlungen.
Später wurde eine weitere Verbesserung des Bitcoin-Protokolls eingeführt und Zahlungskanäle im CLTV-Stil, die eine verbesserte frühere Methode darstellen, wurden möglich.
Poon-Dryja-Zahlungskanäle sind eine bidirektionale Kanalmethode mit unbegrenzter Laufzeit. Sie erfordern einige weitere Aktualisierungen des Bitcoin-Protokolls, die kürzlich übernommen wurden. Darüber hinaus werden diese Kanäle beim Entwurf des Blitznetzwerks verwendet.
Decker-Wattenhofer-Duplex-Zahlungskanäle bieten die Möglichkeit, zwei unidirektionale Kanäle gleichzeitig zu verwenden und ihre Eigenschaften zu verbessern, indem nicht eine sequentielle Kette austauschbarer Transaktionen, sondern ein ganzer Baum austauschbarer Transaktionen gebildet wird. Darüber hinaus können solche Kanäle mehr als zwei Teilnehmer haben.
Wir werden uns eingehender mit den ersten beiden Methoden befassen, aber zuerst werden wir einige Funktionen des Bitcoin-Protokolls wiederholen.
Einige der Bitcoin-Protokolle
nLockTime ist ein Feld im Hauptteil jeder Transaktion, das einen Zeitstempel oder eine Blocknummer enthält. Vor dieser Zeit oder Blockchain-Höhe dürfen Validatoren keine Transaktion in einen Block aufnehmen.
nSequence ist ein Feld in jeder Transaktionseingabe, das den Wert der Zeit enthält, in der eine Bestätigung dieser Transaktion nicht möglich ist. Darüber hinaus wird die Zeit relativ zu dem Zeitpunkt berechnet, zu dem die Ausgabe, die diese Eingabe ausgibt, bestätigt wurde.
MultiSignature ermöglicht es, solche Bedingungen beim Beenden einer Transaktion festzulegen, nach denen mehrere elektronische Signaturen bereitgestellt werden müssen. Diese Signaturen werden durch bestimmte öffentliche Schlüssel überprüft.
Zahlungskanäle im Spillman-Stil
Spillman-ähnliche Zahlungskanäle sind also eine Methode zum Erstellen monorichter Zahlungskanäle, bei denen es eine Absender- und eine Empfängerrolle gibt. Die Betriebszeit eines solchen Kanals wird vom Sender willkürlich eingestellt, während der Empfänger den Kanal vorzeitig schließen kann.
Schauen wir uns die Hauptschritte eines solchen Kanals im Diagramm an.

Stellen Sie sich der Einfachheit halber vor, dass es einen Dienst gibt, der den Zugriff auf das globale Netzwerk über einen Wi-Fi-Zugangspunkt tauscht, und einen Client, der einen Tag lang auf das Netzwerk zugreifen möchte. Der Service kostet eine Bitcoin. Offensichtlich vertraut der Kunde dem Dienst für einen solchen Betrag nicht und möchte für den Verkehr pro Sekunde bezahlen.
Dann beschließen sie, einen Zahlungskanal für einen Tag mit einem Betrag von einem Bitcoin zu eröffnen. Der Dienst generiert ein neues Schlüsselpaar für die elektronische Signatur und überträgt den öffentlichen Schlüssel an den Client. Der Client generiert wiederum ein neues Schlüsselpaar und verwendet seinen öffentlichen Schlüssel und den öffentlichen Schlüssel des Dienstes, um die Multisignaturadresse 2-of-2 zu bilden. Ferner bildet der Client die Transaktion Nummer eins, bei der er ein Bitcoin an eine Multisignaturadresse sendet, signiert, aber nicht an das Bitcoin-Netzwerk verteilt, da der Dienst den Client ersetzen und die Unterzeichnung von Transaktionen für die weitere Übertragung eines Bitcoin ablehnen kann.
Daher bildet der Kunde die Transaktion Nummer zwei, bei der Münzen mit Multisignaturadressen an die von ihm kontrollierte Adresse gesendet werden. Darüber hinaus wird das Feld nLockTime so festgelegt, dass die Transaktion an einem Tag bestätigt werden kann. Er signiert diese Transaktion nicht, sondern sendet sie an den Dienst. Der Service erklärt sich wiederum damit einverstanden, dass der Kunde die gesamte Münze für sich selbst abholen kann, jedoch nicht früher als an einem Tag, und unterzeichnet die Transaktion mit seinem Schlüssel. Er gibt die Signatur an den Kunden weiter, der Kunde überprüft sie. Jetzt hat er die Möglichkeit, die Transaktion mit seinem Schlüssel vorab zu unterzeichnen, und wird die Münze garantiert zurückholen, wenn der Dienst beschließt, den Dienst abzulehnen.
Im nächsten Schritt verteilt der Client die Transaktion Nummer eins an das Bitcoin-Netzwerk oder überträgt sie zur Verteilung an den Dienst, wenn er nicht über die Verbindung selbst verfügt. Nach der Bestätigung der ersten Transaktion gilt der Zahlungskanal als offen.
In diesem Fall wird die erste Transaktion als Finanzierungstransaktion bezeichnet, und die zweite Transaktion ist die Rückerstattung der Transaktion.
Wie erfolgt die Interaktion in den Berechnungen innerhalb des Zahlungskanals? Schauen wir uns das folgende Diagramm an.

Um die erste Zahlung zu senden, fordert der Kunde Bitcoin die Adresse des Dienstes an, den er unabhängig steuert. Ferner bildet der Client die Transaktion Nummer drei, bei der eine Münze mit einer Multisignaturadresse auf zwei Ausgänge verteilt wird: Die erste ist eine Zahlung an die Serviceadresse in einer Sekunde des Betriebs des Zugangspunkts und die zweite ist die Lieferung an die eigene Adresse des Kunden. Der Kunde unterschreibt die Transaktion Nummer drei mit seinem Schlüssel und gibt sie an den Service weiter. Der Dienst überprüft die Richtigkeit der Transaktion und der Signatur und akzeptiert anschließend die Zahlung, da er diese Transaktion mit seinem privaten Schlüssel erneut signieren kann und garantiert die Zahlung für die erste Sekunde des Datenverkehrs erhält, wenn er dies innerhalb von 24 Stunden tut. Wenn der Dienst jedoch weiterhin den Dienst für den Kunden bereitstellen und Zahlungen innerhalb des Kanals empfangen möchte, speichert er einfach die Transaktion Nummer drei lokal, bis der Kanal geschlossen wird.
Um alle nachfolgenden Zahlungen zu senden, ändert der Kunde die Ausgabe von Transaktion Nummer drei, signiert sie erneut und überträgt nur die Signatur und den Betrag der Änderung an den Service. Der Dienst überprüft auch die empfangenen Daten und speichert die neue Version der Transaktion Nummer drei, da in dieser Version mehr Münzen empfangen werden.
Wie erfolgt die Kanalschließung?

Das Diagramm zeigt, dass der Dienst Zeit haben muss, um die neueste Version der Transaktion Nummer drei im Bitcoin-Netzwerk vor dem Ende der Betriebszeit des Kanals zu veröffentlichen. Andernfalls kann der Absender die zweite Transaktion betrügen, vorsignieren und veröffentlichen, wobei er den gesamten Betrag an seine Adresse weiterleitet.
Es ist erwähnenswert, dass der Kunde jederzeit während des Betriebs des Kanals eine Rückerstattungstransaktion veröffentlichen kann. Der Dienst würde ein solches Verhalten als Muggel betrachten. Daher überwacht er ständig das Erscheinungsbild dieser Transaktion im Netzwerk und beendet, falls erkannt, den Vertrag mit dem Kunden, indem er den Kanal vorzeitig schließt, indem er die neueste Version der Transaktion Nummer drei veröffentlicht.
Zahlungskanäle im CLTV-Stil
Schauen wir uns nun eine verbesserte Version dieser Methode an, nämlich Zahlungskanäle im CLTV-Stil.
Diese Methode der Zahlungskanäle wurde anwendbar, nachdem das Softfork-Bitcoin-Update durch Hinzufügen eines neuen Skriptcodes - OP_CHECKLOCKTIMEVERIF - durchgeführt wurde. Die Besonderheit besteht darin, dass Sie jetzt in der Transaktionsausgabe solche Regeln festlegen können, nach denen Münzen nur für eine Transaktion ausgegeben werden können, wobei der festgelegte Parameter nLockTime nicht kleiner als der angegebene ist. Tatsächlich bedeutet dies, dass Münzen unter anderem erst nach einer bestimmten Zeit ausgegeben werden können. Mithilfe von Verzweigungsoperationen für Skriptbedingungen, nämlich IF-ELSE, können Sie jetzt je nach Zeit unterschiedliche Ausgabenbedingungen festlegen. Der Vorteil dieser Zahlungskanäle gegenüber den vorherigen besteht darin, dass Sie keine Rückerstattungstransaktion erstellen müssen. Stattdessen können Sie im Ausgabeskript der Finanzierungstransaktion eine doppelte Bedingung für das Ausgeben von Münzen angeben. Das heißt, vor der Schließzeit des Kanals können Münzen gemäß den Regeln der Mehrfachsignatur ausgegeben werden, und nach dem Schließen reicht eine Signatur aus.
Wie werden Zahlungskanäle angewendet?
Es gibt zwei Möglichkeiten: entweder in reiner Form für regelmäßige Zahlungen zwischen vorher festgelegten Parteien oder die Bildung eines Blitznetzwerks durch Kanalwechsel zwischen ihnen. Wechseln bedeutet die Möglichkeit, eine Zahlung zwischen Benutzern vorzunehmen, die keinen Zahlungskanal miteinander geöffnet haben, aber offene Kanäle mit anderen Netzwerkteilnehmern haben. Dann wird der Wert über eine Kette von Kanälen nicht autorisierter Teilnehmer übertragen, falls vorhanden.
Im Fall eines Blitznetzwerks gibt es zusätzliche Schwierigkeiten und Merkmale. Dies ist die Entwicklung eines allgemein akzeptierten Formats zum Umschalten von Kanälen und Kommunikationsprotokollknoten. Es ist wichtig, dass Brieftaschen einiger Entwickler mit Brieftaschen anderer Entwickler arbeiten können. Eine weitere Herausforderung ist das Routing-Problem in diesem Netzwerk. Die Aufgabe besteht darin, dass Sie den kürzesten Weg zur Wertübertragung finden müssen, wobei zu berücksichtigen ist, dass in jedem Kanal Einschränkungen hinsichtlich der Übertragungsmenge in jede Richtung bestehen.
Netzwerkfunktionen
Schauen wir uns im folgenden Diagramm die Funktionen des Bitcoin-Netzwerks und des Lightning-Netzwerks an.

Im Bitcoin-Netzwerk tauschen Knoten Daten über Transaktionen und Blöcke sowie Netzwerkadressen voneinander aus. In diesem Fall wird ein Konsens erzielt und eine gemeinsame Datenbank gebildet. Neben vollständigen Knoten gibt es im Bitcoin-Netzwerk leichtgewichtige Knoten, die nur die benötigten Informationen empfangen, ohne den gesamten Verlauf zu verarbeiten und zu speichern.
In einem Blitznetzwerk tauschen Knoten keine vorgefertigten Transaktionen aus und erreichen keinen Konsens. Es ist jedoch auch wichtig, dass sie Informationen über den Status des jeweils anderen aktualisieren und Nachrichten austauschen, um die Arbeit innerhalb der Zahlungskanäle aufrechtzuerhalten. Es ist zu beachten, dass das Blitznetzwerk auch nicht homogen ist, da es Knoten mit mehr und weniger Last sowie Knoten mit instabiler Aktivität gibt. Höchstwahrscheinlich wird es Hubs im Netzwerk geben, Knoten mit einer großen Anzahl offener Zahlungskanäle, und sie müssen mit einer großen Last fertig werden. Und normale Benutzer öffnen bestenfalls einen oder zwei Zahlungskanäle und einen dieser Hubs.
Dies geschieht, da Sie zum Öffnen jedes Zahlungskanals eine bestimmte Anzahl von Münzen einfrieren müssen, um Zahlungen nur innerhalb eines begrenzten Betrags zu akzeptieren und zu senden. Wenn ein gewöhnlicher Benutzer seine Münzen in mehrere Teile teilt und mehrere Kanäle öffnet, erhält er tatsächlich ein sehr kleines Zahlungsfenster in jedem Kanal im Vergleich zum ursprünglichen Betrag. Gleichzeitig fungieren große Organisationen wie Brieftaschenentwickler, zentralisierte Börsen oder beliebte Händler als Hubs. Sie können es sich leisten, eine große Anzahl von Kanälen für große Mengen und für lange Zeiträume offen zu halten, ohne offline zu gehen.
Heiße Probleme
Berücksichtigen Sie häufig gestellte Fragen zu Zahlungskanälen und dem Blitznetzwerk.
- Wie zuverlässig sind die Zahlungen in den Kanälen im Vergleich zu regulären Bitcoin-Transaktionen?Durch die Zuverlässigkeit können Zahlungen in Kanälen mit normalen verglichen werden, dh Münzen werden nicht weggenommen und Zahlungen werden nicht storniert. Es gibt jedoch eine Reihe von Merkmalen wie die Notwendigkeit, Kanäle rechtzeitig zu öffnen und zu schließen, Einschränkungen hinsichtlich der Menge innerhalb des Kanals, die Notwendigkeit einer ständigen Synchronisation mit dem Bitcoin-Netzwerk und die Wahrscheinlichkeit, dass Münzen für eine Weile eingefroren werden.
- Ist die Bandbreite in den Kanälen und im Blitznetzwerk begrenzt?Tatsache ist, dass es keine Einschränkung gibt, es jedoch zu Verzögerungen bei der Kanalverarbeitung, der Aufklärung des Netzwerks und dem Routenaufbau kommen kann, die von der Leistung bestimmter Teilnehmer abhängen. Darüber hinaus können Knoten unvorhersehbar offline gehen, was bestimmte Einschränkungen bei der Ausführung von Zahlungen durch andere Teilnehmer aufweisen kann.
- Sollten sich Channel-Mitglieder gegenseitig vertrauen?Nein, der Mechanismus der Zahlungskanäle bietet Schutz vor böswilligen Handlungen der interagierenden Parteien.
- Was ist die Verwendung von Kanälen für eine Person, die nur eine Zahlung senden möchte?Wenn eine Person die neuesten Münzen loswerden möchte und nicht mehr plant, Zahlungen anzunehmen und zu senden, ist es nicht sinnvoll, einen Kanal zu öffnen. Sie müssen eine normale On-Chain-Transaktion senden. In allen anderen Fällen ist das Öffnen eines Kanals hilfreich.
Eine der Vorlesungen des Blockchain-Online-Kurses „
Off-Chain-Zahlungskanäle “ widmet sich ebenfalls diesem Thema.