Von der Blockchain zur DAG: Zwischenhändler loswerden

In diesem Artikel werde ich Ihnen etwas über die DAG (Directed Acyclic Graph) und ihre Verwendung in verteilten Registern erzählen und sie mit der Blockchain vergleichen.



DAG ist in der Welt der Kryptowährungen nicht neu. Möglicherweise haben Sie von ihm als Lösung für Probleme mit der Blockchain-Skalierbarkeit gehört. Aber heute werden wir nicht über Skalierbarkeit sprechen, sondern darüber, was Kryptowährungen von allem anderen unterscheidet: Dezentralisierung, Abwesenheit von Vermittlern und Widerstand gegen Zensur.



Ich werde Ihnen auch zeigen, dass die DAG tatsächlich widerstandsfähiger gegen Zensur ist und dass es keine Vermittler für den Zugriff auf das Register gibt.



In den für uns üblichen Blockchains haben Benutzer keinen direkten Zugriff auf die Registry. Wenn Sie der Registrierung eine Transaktion hinzufügen möchten, müssen Sie den Blockproduzenten (Blockproduzenten oder Miner) dazu auffordern. Es sind die Bergleute, die entscheiden, welche Transaktion zum nächsten Block hinzugefügt wird und welche nicht. Es sind die Bergleute, die exklusiven Zugriff auf die Blöcke haben und das Recht zu entscheiden, welche Transaktion zum Hinzufügen zur Registrierung akzeptiert werden soll.

Bergleute sind Vermittler zwischen Ihnen und der verteilten Registrierung.



In der Praxis steuert normalerweise eine kleine Anzahl von Miner-Pools gemeinsam mehr als die Hälfte der Rechenleistung des Netzwerks. Für Bitcoin sind dies vier Pools, für Ethereum zwei. Im Falle einer Absprache können sie alle gewünschten Transaktionen blockieren.



In den letzten Jahren wurden viele Variationen von Blockketten vorgeschlagen, die sich in den Grundsätzen für die Auswahl der Blockhersteller unterscheiden. Aber die Blockproduzenten selbst gehen nirgendwohin, sie stehen immer noch „auf der Barriere“: Jede Transaktion muss durch den Blockproduzenten gehen, und wenn er sie nicht akzeptiert, dann existiert die Transaktion tatsächlich nicht.



Dies ist ein unvermeidliches Problem im Fall der Blockchain. Und wenn wir es lösen wollen, müssen wir das Design radikal ändern und Blöcke und Blockhersteller vollständig loswerden. Und anstatt eine Kette von Blöcken zu bilden, werden wir die Transaktionen selbst verbinden, einschließlich der Hashes mehrerer vorheriger Transaktionen in jeder Transaktion. Als Ergebnis erhalten wir eine Struktur, die in der Mathematik als gerichteter azyklischer Graph bekannt ist - DAG.

Jetzt hat jeder direkten Zugriff auf die Registrierung, ohne Zwischenhändler. Wenn Sie der Registrierung eine Transaktion hinzufügen möchten, fügen Sie diese einfach hinzu. Wählen Sie mehrere übergeordnete Transaktionen aus, fügen Sie Ihre Daten hinzu, signieren Sie und senden Sie Ihre Transaktion an Kollegen im Netzwerk. Fertig Es gibt niemanden, der Sie daran hindert, also befindet sich Ihre Transaktion bereits in der Registrierung.

Dies ist die am meisten dezentrale und am meisten zensurfreie Methode, um Transaktionen ohne Zwischenhändler zur Registrierung hinzuzufügen. Weil jeder einfach seine Transaktionen zur Registrierung hinzufügen möchte, ohne jemanden um Erlaubnis zu fragen.



Die DAG kann als dritte Stufe der Registrierungsentwicklung angesehen werden. Anfangs gab es zentrale Register, bei denen eine Seite den Zugang zu ihnen kontrollierte. Dann kamen die Blockchains, bei denen es bereits mehrere Controller gab, die Transaktionen in der Registry aufzeichneten. Und schließlich gibt es in der DAG überhaupt keine Controller, die Benutzer fügen ihre Transaktionen direkt hinzu.



Jetzt, wo wir solche Freiheit haben, sollte es nicht zu Chaos führen. Über den Stand der Registrierung müssen wir uns einig sein. Und diese Zustimmung oder dieser Konsens bedeutet normalerweise eine Einigung über zwei Dinge:

  1. Was ist passiert?
  2. In welcher Reihenfolge ist das passiert?

Wir können die erste Frage leicht beantworten: Sobald eine korrekt erstellte Transaktion zur Registrierung hinzugefügt wurde, geschah dies. Und der Punkt. Informationen darüber können alle Teilnehmer zu unterschiedlichen Zeiten erreichen, aber am Ende erhalten alle Knoten diese Transaktion und stellen fest, dass sie stattgefunden hat.

Wenn es eine Blockchain wäre, würden die Bergleute entscheiden, was los ist. Alles, was der Bergmann beschließt, in den Block aufzunehmen, ist das, was passiert. Alles, was nicht im Block enthalten ist, passiert nicht.

Bei Blockchains lösen Bergleute auch das zweite Konsensproblem: Ordnung. Sie dürfen Transaktionen innerhalb des Blocks nach Belieben arrangieren.

Wie bestimme ich die Reihenfolge der Transaktionen in der DAG?



Nur weil unser Graph gerichtet ist, haben wir bereits eine Ordnung. Jede Transaktion bezieht sich auf einen oder mehrere frühere Elternteile. Die Eltern wiederum beziehen sich auf ihre Eltern und so weiter. Eltern erscheinen offensichtlich vor Kindertransaktionen. Wenn eine der Transaktionen durch Klicken auf die Parent-Child-Links erreicht werden kann, kennen wir die Reihenfolge zwischen den Transaktionen in dieser Transaktionskette mit Sicherheit.



Die Reihenfolge zwischen den Transaktionen kann jedoch nicht immer nur anhand der Form des Diagramms bestimmt werden. Zum Beispiel, wenn zwei Transaktionen in parallelen Zweigen eines Diagramms liegen.



Um die Unklarheit in solchen Fällen zu beseitigen, verlassen wir uns auf die sogenannten Bestellanbieter. Wir nennen sie auch "Zeugen". Dies sind gewöhnliche Benutzer, deren Aufgabe es ist, ständig Transaktionen in einer geordneten Weise an das Netzwerk zu senden, d. H. so dass jede ihrer vorherigen Transaktionen durch Klicken auf die Links "Eltern-Kind" erreicht werden kann. Bestellanbieter sind vertrauenswürdige Benutzer, und das gesamte Netzwerk ist darauf angewiesen, dass sie diese Regel nicht verletzen. Um ihnen rational zu vertrauen, muss jeder Auftragnehmer eine bekannte (nicht anonyme) Person oder Organisation sein und etwas haben, das verloren gehen kann, wenn sie gegen die Regeln verstoßen, z. B. einen guten Ruf oder ein auf Vertrauen basierendes Unternehmen.



Bestellanbieter werden von Benutzern ausgewählt, und jeder Benutzer fügt in jede Transaktion, die er an das Netzwerk sendet, eine Liste seiner vertrauenswürdigen Anbieter ein. Diese Liste enthält 12 Anbieter. Dies ist eine relativ kleine Zahl, mit der eine Person die Identität und das Ansehen jedes Einzelnen überprüfen kann, und die ausreicht, damit das Netzwerk bei unvermeidlichen Problemen mit einer Minderheit von Auftraggebern weiter funktioniert.

Diese Liste von Anbietern variiert von Benutzer zu Benutzer, die Listen benachbarter Transaktionen können sich jedoch um maximal einen Anbieter unterscheiden.



Nachdem wir die Bestellanbieter haben, können wir deren Transaktionen in der DAG hervorheben und alle anderen Transaktionen um die von ihnen erstellte Bestellung herum arrangieren. Es besteht die Möglichkeit, einen solchen Algorithmus zu erstellen (technische Details siehe Obyte White Paper ).

Die Reihenfolge im gesamten Netzwerk kann jedoch nicht sofort bestimmt werden. Wir benötigen Zeit, damit Bestellanbieter eine ausreichende Anzahl ihrer Transaktionen senden können, um die endgültige Reihenfolge der vergangenen Transaktionen sicherzustellen.

Und da die Reihenfolge nur durch die Positionen der Transaktionen der Anbieter in der DAG bestimmt wird, erhalten früher oder später alle Knoten des Netzwerks alle Transaktionen und kommen hinsichtlich der Reihenfolge der Transaktionen zu dem gleichen Ergebnis.



Wir sind uns also einig, was unserer Meinung nach passiert ist: Jede Transaktion, die in die DAG eingegangen ist, ist passiert. Wir sind uns auch über die Reihenfolge der Ereignisse einig: Dies ist entweder auf der Grundlage von verbundenen Transaktionen sichtbar oder wird von der Reihenfolge der von Auftraggebern gesendeten Transaktionen abgeleitet. Wir haben also einen Konsens.



Wir haben diese Konsensoption bei Obyte. Obwohl der Zugriff auf das Obyte-Register vollständig dezentral erfolgt, ist der Konsens über die Reihenfolge der Transaktionen nach wie vor zentralisiert 10 von 12 Anbietern werden vom Urheber (Anton Churyumov) kontrolliert und nur zwei von ihnen sind unabhängig. Wir suchen Kandidaten, die zu den unabhängigen Ordnungsanbietern gehören wollen, um die Ordnungsbildung im Register zu dezentralisieren.

Kürzlich ist ein dritter unabhängiger Kandidat erschienen, der einen Knoten des Auftraggebers etablieren und pflegen will - die Universität von Nikosia.



Wie kontrollieren wir nun Doppelausgaben?

Gemäß den Regeln gewinnt diejenige Transaktion, die früher in der endgültigen Reihenfolge aller Transaktionen erschienen ist, wenn zwei Transaktionen festgestellt wurden, die dieselbe Münze ausgeben. Der zweite wird durch den Konsensalgorithmus deaktiviert.


Wenn es möglich ist, eine Reihenfolge zwischen zwei Transaktionen festzulegen, die eine Münze ausgeben (für Eltern-Kind-Beziehungen), lehnen alle Knoten einen solchen Versuch der doppelten Ausgabe sofort ab.



Wenn die Bestellung aus der elterlichen Beziehung zwischen zwei solchen Transaktionen nicht ersichtlich ist, werden beide in die Registrierung aufgenommen, und wir müssen auf einen Konsens warten und mithilfe der Bestellanbieter eine Bestellung zwischen ihnen herstellen. Dann gewinnt die frühere Transaktion und die zweite wird ungültig.



Obwohl die zweite Transaktion ungültig wird, verbleibt sie in der Registrierung, da bereits nachfolgende Transaktionen darauf verweisen, die nichts verletzt haben und nicht wussten, dass diese Transaktion in Zukunft ungültig wird. Andernfalls müssten wir das übergeordnete Element aus guten nachfolgenden Transaktionen entfernen, was gegen das Hauptprinzip des Netzwerks verstoßen würde - jede korrekte Transaktion wird in der Registrierung akzeptiert.



Dies ist eine sehr wichtige Regel, die es dem gesamten System ermöglicht, Zensurversuchen standzuhalten.

Nehmen wir an, dass sich alle Bestellanbieter zusammenschließen, um eine bestimmte Transaktion zu „zensieren“. Sie können dies ignorieren und niemals ein "Elternteil" für ihre Transaktionen auswählen. Dies reicht jedoch nicht aus. Diese Transaktion kann dennoch indirekt als das Elternteil einer anderen Transaktion einbezogen werden, die von einem Netzwerkbenutzer ausgegeben wird, der nicht an der Verschwörung beteiligt ist. Mit der Zeit werden bei einer solchen Transaktion immer mehr Kinder, Enkel und Urenkel von normalen Benutzern wie ein Schneeball wachsen, und alle vereinbarten Bestellanbieter müssen diese Transaktionen ebenfalls ignorieren. Am Ende müssen sie das gesamte Netzwerk zensieren, was einer Sabotage gleichkommt.



Somit bleibt die DAG zensiert, selbst wenn es zu einer Absprache zwischen den Auftraggebern kommt, und übertrifft damit die Blockchain der Zensurresistenz, bei der wir nichts tun können, wenn die Bergleute beschließen, keine der Transaktionen einzubeziehen. Und dies folgt aus dem Grundeigentum der DAG: Die Teilnahme an der Registrierung ist absolut unabhängig und ohne Zwischenhändler, und Transaktionen sind irreversibel.

Source: https://habr.com/ru/post/de477032/


All Articles