Ripple Distributed Consensus Algorithmus

Welche Art von Konsensalgorithmen verwendet Ripple? Ist das ein Leader- oder Leaderless-Distributed-Consensus-Algorithmus? Dann was?

Antworten (1)

Es ist führerlos.

Ein Validator beginnt eine Konsensrunde, wenn er entweder mindestens eine unbestätigte Transaktion hat, die er für gültig hält, die Leerlaufzeit abgelaufen ist oder er sieht, dass genügend Validatoren, denen er vertraut, eine Konsensrunde begonnen haben. Jeder teilnehmende Validator macht einen ersten Vorschlag, der die Transaktionen auflistet, die seiner Meinung nach in der aktuellen Runde angewendet werden sollten. Die Server Lawine zum Konsens.

Wenn es widersprüchliche Transaktionen gibt, werden alle Fälle behandelt. Wenn nur einer in die Runde kommt, wird er angewendet und der andere ist für immer ungültig. Wenn beide dies tun, bestimmt ein deterministischer Algorithmus, welcher zuerst angewendet wird, und der andere schlägt fehl. Wenn beides nicht der Fall ist, bestimmt ein deterministischer Algorithmus, was in der nächsten Runde bekannt gegeben wird, sodass in dieser Runde eine Einigung erzielt werden sollte.

Da ein byzantinisches Scheitern möglich ist, erstellen Validatoren am Ende der Runde das nächste Ledger und senden dann eine signierte Validierung dieses Ledgers. Zu sehen, dass eine große Mehrheit vertrauenswürdiger Prüfer Validierungen für dasselbe Hauptbuch unterschreibt, stellt sicher, dass ein tatsächlicher Konsens erreicht wurde. (Wenn aufgrund eines byzantinischen Versagens kein wirklicher Konsens zustande kam, versucht es das Netzwerk einfach erneut.)

Der Avalanche-Algorithmus ist so ausgelegt, dass eine minimale Vertrauensüberlappung erforderlich ist. Wenn es keinen Grund gibt, warum eine Transaktion nicht aufgenommen werden sollte, sollte jeder ehrliche Knoten damit einverstanden sein, sie aufzunehmen. Wenn es einen Grund gibt, warum eine Transaktion nicht aufgenommen werden sollte, schadet es nicht, sie auszuschließen. (Solange es in der nächsten Runde enthalten ist, wenn es noch gültig ist.)

Meines Wissens nach ist es sehr schwierig, die Leistung im Konsensalgorithmus zu erreichen, da alle Verifizierungsknoten ihre eigenen Stimmen beisteuern müssen. Wie stellt Ripple die Leistung der Transaktionsverifizierung bereit?
Netzwerklaufzeiten sind ziemlich schnell. Meistens gibt es sowieso keine Meinungsverschiedenheiten. (Jeder schlägt vor, jeder wartet zwei Sekunden auf die Verbreitung, jeder erkennt, dass es keine wesentlichen Meinungsverschiedenheiten gibt. Fertig.) Und das Netzwerk ist bereit, eine gescheiterte Konsensrunde im Austausch für Geschwindigkeit in 99,5 % der Fälle zu tolerieren. Darüber hinaus ermöglicht ein „Bow Out“-Algorithmus, dass leistungsschwache Knoten Probleme vermeiden. Das Netzwerk ist nicht so langsam wie der langsamste Knoten (aus Leistungsgründen) und nicht so schnell wie der schnellste Knoten (aus Sicherheitsgründen).
Warum kann es keinen Algorithmus wie Paxos verwenden, der einen Anführer hat?
Wie würden Sie einen Anführer auswählen, auf den sich alle einig sind? Wie würden Sie jemanden daran hindern, die Leader-Auswahl zu spielen und das Netzwerk daran zu hindern, Fortschritte zu machen? Was würde mit Knoten passieren, auf die der Leader nicht hören wollte? Würden sie von einer ganzen Runde ausgeschlossen werden?
@Gracchus Es gibt zwei Wartezeiten von mindestens 2 Sekunden, eine, um jedem Server die Möglichkeit zu geben, einen ersten Vorschlag zu machen (also erklärt niemand einen Konsens erreicht, ohne von allen zu hören), und eine, um jedem Server die Möglichkeit zu geben, das Finale zu verarbeiten Consensus Transaction Set (um zu verhindern, dass Server zurückbleiben). Dies sind jedoch nur Mindestwerte, das tatsächliche Timing ist adaptiv.