Exonum-Konsens: Wie es funktioniert

ExonumTM ist unser Open Source Private Blockchain Framework. Heute werden wir Ihnen sagen, wie sein Konsensalgorithmus funktioniert.


Bild: Bitfury

Warum Konsensalgorithmen benötigt werden


Bevor wir uns der Funktionsweise des Exonum TM -Konsensalgorithmus zuwenden, wollen wir uns damit befassen, warum diese Algorithmen in Blockchains im Allgemeinen benötigt werden.

Blockchain ist ein verteiltes System ohne zentralen Administrator. Um sich auf einen neuen Block im Netzwerk (und entsprechend auf Transaktionen) zu einigen, verwenden die Netzwerkteilnehmer spezielle Konsensalgorithmen. Die Konsensaufgabe besteht darin, Peers des Peer-to-Peer-Netzwerks zu einer gemeinsamen Meinung darüber zu verhelfen, wie sein neuer Status aussehen sollte - das heißt, den nächsten Block in der Blockchain-Kette auszuwählen.

Dies ist erforderlich, um die Blockchain und die darin gespeicherten Informationen vor Spoofing zu schützen. Beispielsweise zeichnet die auf Exonum TM basierende Blockchain, die für die Russische Eisenbahn implementiert wurde, Informationen über Operationen mit Teilen für Autos und Züge auf. Die Blockchain stellt die Zuverlässigkeit der Daten im Block sicher, sodass das Unternehmen den Weg der Ersatzteile vom Lieferanten überwachen und Fälschungen rechtzeitig erkennen kann. Wir werden mehr über diesen und andere Fälle weiter erzählen.

Welche Aufgaben haben wir durch die Erstellung des Exonum-Konsensalgorithmus gelöst?


Bei der Entwicklung des Exonum TM -Konsensalgorithmus war es uns wichtig, das Problem des byzantinischen Verhaltens der Knoten zu lösen. Mit byzantinischem Verhalten ist die böswillige Aktivität einzelner Netzwerkknoten gemeint. Solche Aktivitäten können auch Situationen umfassen, in denen Knoten die Verbindung zum Netzwerk verlieren oder offline gehen.

Bereits Mitte der 80er Jahre wurde bewiesen, dass ein verteiltes System unter Bedingungen partieller Synchronität funktionieren sollte, um die Stabilität zu gewährleisten. Gleichzeitig muss der Konsensalgorithmus die folgenden Kriterien haben:

  • Lebendigkeit - sollte jederzeit in der Lage sein, einen neuen Block zu akzeptieren.
  • Konsistenz - Die Transaktionsdatenbank auf allen Netzwerkknoten sollte identisch sein.
  • Zensurresistenz - Knoten sollten keine Transaktionen bevorzugen oder ignorieren.

Für ein Netzwerk mit einer bekannten Anzahl von Teilnehmern ermöglicht ein Modell eines Konsensalgorithmus, der gegen das Verhalten byzantinischer Knoten ( byzantinische Fehlertoleranz , BFT) bei teilweiser Synchronität resistent ist, weniger als 1/3 der böswilligen (byzantinischen) Teilnehmer im Netzwerk.

Wie der Exonum-Konsens-Algorithmus funktioniert


In der Exonum TM -Blockchain gibt es drei Arten von Knoten: Validatoren, Auditoren und Light-Clients. Die ersteren sind direkte Teilnehmer am Konsensalgorithmus, während die letzteren die Last auf das Netzwerk verteilen und die Validatoren steuern. Light Clients bieten Netzwerkteilnehmern nur die Möglichkeit, Transaktionen an die Blockchain zu senden. Light Clients und Auditoren sind nicht direkt in den Konsensalgorithmus involviert, daher werden wir in diesem Material nicht darauf eingehen.

Die Aufgabe der Validatoren besteht darin, für die Aufnahme neuer Blöcke in die Blockchain zu stimmen. Wie oben erwähnt, kann das Exonum TM -Netzwerk auch dann stabil funktionieren, wenn ein Drittel aller Knoten byzantinisch sind. Um einen Konsens zu erzielen, muss der Block dementsprechend mehr als 2/3 der Knoten des Blockchain-Netzwerks genehmigen. Und diese Aussage kann mathematisch bestätigt werden.

Angenommen, das Netzwerk hat h ehrliche Knoten-Validatoren (ehrlich) und f Byzantinisch (fehlerhaft). Dann kann die Gesamtzahl der Validatoren als N = h + f dargestellt werden. Alle Validatoren entscheiden anhand einer Schwellenregel über einen „Gewinner“.

Darin heißt es: Die Anzahl der Stimmen für den Gewinner muss größer oder gleich α * N sein , wobei α die Zahl im Bereich von 0 bis 1 ist. Somit wird die absolute Mehrheit der Stimmen erreicht, wenn α> 1/2 ist.

Am Ende der Abstimmung entscheidet jeder Prüfer unabhängig, welcher der beiden Kandidaten gewonnen hat. Validatoren können jedoch nicht entscheiden, wen sie wählen sollen, wenn zu wenige Validatoren ihre Stimmen an den Rest senden. Dies kann passieren, wenn die byzantinischen Knoten anfangen, Stimmen für verschiedene Kandidaten an ehrliche Mitglieder des Netzwerks zu senden, um sie zu verwirren.

Um eine ähnliche Situation auszuschließen, müssen zwei Bedingungen beachtet werden:

  • Ehrliche Prüfer sollten in der Lage sein, Entscheidungen ohne die Teilnahme byzantinischer Knoten zu treffen. Dieser Zustand wird durch die Lebendigkeitseigenschaft bestimmt, über die wir oben gesprochen haben. Mathematisch wird es durch die folgende Ungleichung ausgedrückt: h ≥ α * N.
  • Ein Kandidat, für den eine Minderheit ehrlicher Prüfer gestimmt hat, kann die Schwelle in α * N nicht überschreiten. Dies wird durch das Konsistenzkriterium vorgegeben. Die Bedingung wird wie folgt ausgedrückt: [h / 2] + f <α * N, wobei [h / 2] der ganzzahlige Teil der Zahl h / 2 ist.

Als Ergebnis erhalten wir die folgende Kette von Ungleichungen: h> 2f, α> 2/3 und N ≥ 3f + 1. Daraus folgt, dass der Transaktionsblock zur Bestätigung streng mehr als 2/3 der Validatorstimmen erhalten muss.

Lassen Sie uns als nächstes darüber sprechen, wie die Validatoren in der Exonum TM -Blockchain abstimmen. Im Allgemeinen sieht das Schema wie folgt aus:



Der Prozess der Konsensfindung beginnt mit der Tatsache, dass der Hauptknoten - er wird von einem separaten Algorithmus ausgewählt und ändert sich regelmäßig - eine Liste von Transaktionen bildet, die der Blockchain hinzugefügt werden sollten (macht einen Vorschlag ). Diese Liste wird dann im gesamten Netzwerk an die Validierungsknoten gesendet.

Validatoren überprüfen die empfangene Nachricht auf Übereinstimmung mit dem Serialisierungsformat. Wenn Fehler aufgezeichnet werden, ignoriert der Knoten die empfangene Nachricht vollständig. Beispielsweise wird der Vorschlag, einen Block in die Mitte der Blockchain einzufügen oder eine vorhandene Transaktion neu aufzuzeichnen, ignoriert. Wenn alles in Ordnung ist, beginnt die Abstimmungsphase - die Validierungsknoten stimmen ab, um den Block zur Blockchain hinzuzufügen, und senden die vorherige Nachricht.

Dieser Knoten, dessen Vorschlag mehr als 2/3 Genehmigungen von Validatoren erhalten hat, verliert die Möglichkeit, für Vorschläge anderer Validatoren zu stimmen, und kann seinen Vorschlag nicht ändern. Dieser Zustand wird als Proof-of-Lock bezeichnet .

Nachdem die erforderliche Anzahl von Stimmen von Validatoren erhalten wurde, registriert der Hauptknoten die genehmigten Transaktionen im Block und sendet eine spezielle Nachricht - Precommit . Es enthält einen Hash des aktualisierten Status der Blockchain und zeigt an, dass der Knoten bereit ist, den vorgeschlagenen Block zur Kette hinzuzufügen. In dem Moment, in dem die meisten Validatoren mit einer ähnlichen Precommit- Nachricht (mit demselben Hash) antworten, wird der Block zur Blockchain hinzugefügt. Ein Konsens wird erreicht und das Verfahren wird für jeden nachfolgenden Block wiederholt.

Um die Stabilität des Systems zu erhöhen, tauschen die Prüfer regelmäßig zwei weitere Nachrichten aus - Request und Block . Die erste wird generiert, wenn den Knoten Transaktionsdaten fehlen. Die zweite ist erforderlich, um Informationen über den Transaktionsblock an einen Knoten zu senden, der zeitlich zurückliegt (z. B. getrennt), um den Betrieb des gesamten Netzwerks zu synchronisieren.

Um die Möglichkeiten des Exonum TM -Konsenses zu bewerten, haben wir den Betrieb der Blockchain anhand von zwei Konfigurationen getestet: in einem Rechenzentrum und mehreren geografisch verteilten Rechenzentren. Während der Tests wurde der TPS-Parameter - die Anzahl der Transaktionen pro Sekunde - für eine andere Anzahl von Validatoren ausgewertet. Als Nächstes werden Diagramme der Änderungen der Netzwerkleistung in Blockchains für die Arbeit mit Kryptowährungen (schwarzes Diagramm) und Zeitstempeln (blaues Diagramm) bereitgestellt.


TPS in Abhängigkeit von der Anzahl der Validatoren bei einem einzelnen Rechenzentrum


TPS in Abhängigkeit von der Anzahl der Validatoren bei mehreren Rechenzentren

Im Durchschnitt konnte die Exonum TM -Blockchain je nach Netzwerkkonfiguration 2 bis 13.000 Transaktionen pro Sekunde verarbeiten.

Wo Exonum bereits verwendet wird


Das Exonum TM Framework wird heute in einer Vielzahl von Projekten eingesetzt. Im vergangenen Sommer haben wir zusammen mit Technoprom einen speziellen Marktplatz für die Russischen Eisenbahnen geschaffen. Die Exonum TM -Blockchain zeichnet Vorgänge mit Teilen für Züge und dem Datenblatt jedes Wagens auf. Dies ermöglicht es, die Bewegung aller Ersatzteile von offiziellen Lieferanten zu verfolgen und Fälschungen zu erkennen.

Wir haben auch ein Blockchain-Bildungsprojekt gestartet, das auf der University of Synergy basiert. Das Register registriert und speichert alle Informationen über die Leistung der Schüler: Noten, Prüfungsergebnisse und Diplome. Laut unseren Kollegen eliminiert dieser Ansatz die Möglichkeit, Änderungen an Bildungsdokumenten vorzunehmen, und hilft, Archivierung und Zertifizierung einzusparen.

Selbst auf der Basis von Exonum TM haben wir eine Reihe von Pilotprojekten durchgeführt, die die Entwicklung und Veröffentlichung von Software beschleunigen. Unsere Partner der Engineering-Organisation Aricent testen das Framework seit sechs Monaten. Der Blockchain-Ansatz für die Softwareentwicklung hat die Produktivität der Programmierer und die Geschwindigkeit der Fehlerkorrektur erhöht.

Wir haben zusammen mit einer Gruppe medizinischer Unternehmen ein weiteres Projekt gestartet . Einschließlich des Startups Insillico, wo sie tiefgreifendes Training anwenden, um neue Medikamente zu finden. ExonumTM wird der Kern des Ökosystems für Patientendaten sein. Das System wird klinische Studien vereinfachen und auch bei der Analyse von Krankenakten und DNA von Patienten helfen. Dadurch können Ärzte Krankheiten schneller diagnostizieren und eine effektivere Behandlung verschreiben.

Wir hoffen, dass unsere Blockchain in anderen Aufgaben und in anderen Branchen Anwendung findet. Wir arbeiten derzeit an der Implementierung von Exonum TM in Abstimmungs-, Auktions- und Digital Rights Management-Systemen. Demos einiger dieser Lösungen finden Sie auf der offiziellen Exonum TM -Website .

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


All Articles