ExonumTM ist unser Open Source Private Blockchain Framework. Heute werden wir Ihnen sagen, wie sein Konsensalgorithmus funktioniert.
Bild: BitfuryWarum 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 RechenzentrenIm 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 .