Warum hat der Konsensprozess von Ripple eine Schwelle von 80 %?

Eine Transaktion wird bestätigt, wenn 80 % der Nodes in der UNL sie akzeptieren. Woher kommt diese 80%-Zahl? Hätten es genauso gut 79 % oder 81 % sein können? Was ist mit 51 %?

Können verschiedene Knoten unterschiedliche Schwellenwerte haben (z. B. für schnellere Transaktionen) oder müssen sie alle derselben Regel folgen?

Das Erklärvideo sagt, es sei "die Schwelle zur mathematischen Gewissheit" ...
@StevenRoose Ja, aber ist es das? Ich meine, warum nicht 90 % oder 75 %?

Antworten (1)

Wenn Validatoren warten würden, bis andere Validatoren einen Konsens erklärten, um selbst einen Konsens zu erklären, würde kein Validator jemals einen Konsens erklären. Sie müssen also Konsens erklären und hoffen, dass Sie Recht behalten. Meistens wirst du es sein. Andernfalls sind Sie sich der Ergebnisse später rechnerisch nicht sicher und geben diese nicht an Auftraggeber weiter.

Wenn Sie einen Schwellenwert von 75 % für die mathematische Gewissheit verwenden, wären Sie oft nicht sicher und müssten den Vorgang wiederholen. Wenn Sie einen Schwellenwert von 90 % für die mathematische Gewissheit wählen, wären Sie fast immer sicher, aber Sie würden Zeit verschwenden.

Das Video ist etwas irreführend. Tatsächlich könnte jeder Schwellenwert verwendet werden, und Sie hätten immer noch mathematische Gewissheit, wenn Sie tatsächlich einen Konsens erzielen würden. Setzt man die Schwelle jedoch zu niedrig an, hat man nur selten Gewissheit. 80 % ist der Schwellenwert, den wir für mathematische Gewissheit gewählt haben, weil es ein Kompromiss ist, der dazu führt, dass Gewissheit oft und schnell erreicht wird.

Vielleicht ist das nicht klar genug. Lass es mich anders versuchen. Wenn wir eine Transaktion als vollständig validiert melden, wollen wir uns dessen mathematisch sicher sein. Wir werden einen solchen Bericht nicht machen, bis wir es sind. Die Wahl von 80 % als Konsensschwelle ermöglicht es uns, schnell einen Konsens zu erreichen, erfordert, dass mindestens 20 % der Validatoren völlig böswillig sind, um den Konsens zu verzögern, und ermöglicht es uns (in einem späteren Schritt), fast immer mathematisch sicher zu sein, dass das Ergebnis erreicht wird .

Beachten Sie, dass fast die ganze Zeit nicht immer ist. Manchmal erreichen wir 80% und sind uns später der Ergebnisse nicht sicher. In diesem Fall warten wir, bis die nächste Konsensrunde abgeschlossen ist, und hoffen, dass wir in dieser besser abschneiden.

Angenommen, Sie haben aus irgendeinem dummen Grund Ihren Schwellenwert auf 10 % gesetzt. Sie würden denken, Sie hätten die ganze Zeit Konsens gehabt. Aber ebenso offensichtlich würde es oft keinen tatsächlichen Konsens geben. Wenn ja, könnten Sie sicher sein, dass es passiert ist (weil Sie es sehen würden ). Aber es würde oft nicht passieren, und dann müssten Validatoren neu synchronisieren und Clients würden geduldig darauf warten, dass das Netzwerk sich selbst repariert, damit ihre Transaktionen bestätigt werden können.

Ledger, die den Konsensprozess bestehen, werden immer noch durch das „Validation Gate“ aufgehalten. Sie werden den Kunden erst dann als „vollständig validiert“ gemeldet, wenn sie dieses Gate passieren.

80 % funktionierten sehr, sehr gut in der Simulation. Validatoren können diesen Schwellenwert nach Belieben ändern. Vielleicht ergibt in einer zukünftigen Netzwerktopologie ein anderer Schwellenwert bessere Leistungseigenschaften.

Es ist schwer, um 3 Uhr morgens klar zu schreiben. Vielleicht schreibe ich das um, wenn ich wacher bin.

„Manchmal erreichen wir 80 % und sind uns später der Ergebnisse nicht mehr sicher.“ Warum sollten Sie „nicht sicher“ sein, wenn 80 % die eigentliche Definition von Gewissheit sind? Meinst du, du wärst "in einem späteren Schritt" nicht sicher (worauf du anspielst)? „… erfordert, dass mindestens 20 % der Validatoren völlig böswillig sind, um den Konsens zu verzögern.“ Das sind 20 % + 1, richtig? Und was ist die Definition von „vollständig validiert“? (Übrigens werden Ihre detaillierten Antworten sehr geschätzt. Ich bin sicher, dass dies für jeden nützlich sein wird, der sich für Ripple interessiert.)
Sobald Sie die 80%-Schwelle erreicht haben, gehen Sie zur mathematischen Gewissheit über. Wenn Sie nicht tatsächlich einen Konsens hätten, würde der Gewissheitsschritt fehlschlagen. Eine Transaktion ist "vollständig validiert", wenn eine Mehrheit der Validatoren, denen Sie vertrauen, ein Ledger unterzeichnet haben, das sie enthält. Wenn es keinen tatsächlichen Konsens gibt, wird das Hauptbuch nicht vollständig validiert. (Was in Ordnung ist, es verschwendet nur Zeit.)
Es gibt also zwei Schritte: (1) Konsens (80 %); (2) Validierung (Mehrheit der Validierer). Aber warum zwei Schritte? Und wie hoch ist die „Mehrheit“ im zweiten Schritt?
Es müssen zwei Schritte sein, weil jemand zuerst ein Hauptbuch erstellen muss oder niemand es jemals tun wird. Stellen Sie sich eine Menschenmenge vor, die auf zwei Türen zugeht und durch dieselbe Tür gehen möchte. Sobald 80 % näher an einer Tür sind, gehst du hindurch. Dann schauen Sie zurück, um zu sehen, ob Ihnen alle folgen (wenn ja, sind Sie sich mathematisch sicher, dass Sie durch die richtige Tür gegangen sind). Wenn nicht, sind Sie fehlgeschlagen und versuchen Sie es erneut. Die Mehrheit im zweiten Schritt liegt derzeit bei 50+%.
Warum benötigt Ripple 80 % des Schwellenwerts im Konsens? Was ist der mathematische Beweis dafür? Warum nicht die 66%-Schwelle? Weil ich denke, dass ein Schwellenwert von 66% im Konsens ausreicht, um eine Transaktion in einer verteilten Umgebung zu validieren. Weil die Gleichung (2m+1)/(3m+1) einen gültigen Schwellenwert in einer byzantinischen Verwerfung ergibt, wobei 2m+1 die echten Validierungsknoten darstellt und 3m+1 die gesamten Validierungsknoten darstellt.
Bei einem niedrigeren Prozentsatz ist die erforderliche Überlappung in Vertrauenslisten größer, wodurch es schwieriger wird, einen katastrophalen Ausfall (doppelte Ausgaben) zu vermeiden.
@tdumidu Um das etwas klarer zu machen. Ripple benötigt 80 %, um die 66 % zu erreichen, die erforderlich sind, damit der Algorithmus funktioniert, weil die Menschen 80 % von verschiedenen Dingen nehmen und wir von ihnen erwarten, dass sie 66 % der gleichen Dinge nehmen. Angenommen, Sie und ich haben Namenslisten mit vielen Überschneidungen. Wenn wir jeweils von 80 % der Personen auf unserer Liste verlangen, dass sie zustimmen, haben wir eine gute Chance, dass wir 66 % überlappende Zustimmung haben. Das ist es, was wir brauchen, um mit der höchsten Anzahl bösartiger Knoten immer noch sicher vorwärts zu kommen.
@DavidSchwartz Wo können wir mehr darüber lesen, wie der letzte Schritt funktioniert, der "mathematische Gewissheit" gewährleistet? Sicher, wenn Sie 80 % lokale "Pre-Commit"-Sicherheit fordern, besteht eine höhere Chance, dass der endgültige Commit erfolgreich ist. Aber davon ausgehend, wie garantiert man eigentlich , dass sich > 2/3 oder > 1/2 der Gesamtteilnehmer auf denselben Stand einigen und damit das von Ihnen angesprochene „Validation Gate“ passieren? Um dies zu erreichen, reicht es anscheinend nicht aus, die Zusage von UNL-Servern zu kennen, da Sie wissen müssen, ob n% aller Knoten zugesagt haben.
@nh2 Sie müssen nicht sicher sein, dass Sie sich verpflichten. Sie müssen nur sicher sein, dass sich kein anderer ehrlicher Knoten auf ein anderes Ledger festlegen wird, wenn Sie sich verpflichten.
@DavidSchwartz Aber wie erreicht man diese Gewissheit? In Ihrem Beispiel, in dem Sie durch die Tür gehen, wäre das, was Sie gerade gesagt haben, analog zu sagen: „Sie müssen nicht sicher sein, dass Sie durch die Tür gehen. Sie müssen nur sicher sein, dass, wenn Sie durch die Tür gehen, keine andere Person wird durch eine andere Tür gehen". Aber in Ihrem Beispiel haben Sie hervorgehoben, dass Sie versagt haben und es erneut versuchen (Sie gehen durch die Tür zurück), wenn Ihnen nicht alle folgen. Das klingt also so, als ob kein einzelner Knoten sicher sein kann, dass alle folgen, wenn sie durch die Tür gehen. [Fortsetzung im nächsten Kommentar ...]
[... weiter] In anderen byzantinischen Konsensalgorithmen erhalten sie harte Garantien für den vereinbarten Wert, indem sie eine Supermajority (typischerweise > 1/2 oder > 2/3) aller Knoten (nicht nur eine Teilmenge des Netzwerkgraphen) sammeln. Sobald mehr als so viele Ja-Stimmen eingegangen sind, ist die garantierte Endgültigkeit erreicht (der Knoten, der so viele Stimmen erhält, ist zu 100 % sicher, dass das Netzwerk stattdessen keinen anderen Wert akzeptiert, und jede Form von Rollback ist unmöglich). Existiert dieses Konzept so in Ripple?
80 % sind eine Mehrheit aller Knoten, die Ihrer Meinung nach am Konsensverfahren teilnehmen. Es muss eine ausreichende Vereinbarung darüber bestehen, wer teilnimmt, um sicherzustellen, dass keine zwei Teilnehmer eine 80%ige Supermajorität für ein anderes Ledger sehen können. Sie können sich eine ausreichende Vereinbarung über die Teilnehmer als Netzwerkregel vorstellen, ähnlich wie die Blockgröße bei Bitcoin. Vereinbaren Sie es mit anderen oder Sie riskieren/erstellen einen Fork.
Oder, um es anders auszudrücken, anstatt gezwungen zu sein, drei Unternehmen zu bezahlen, haben wir uns nicht dafür entschieden, Millionen von Dollar pro Tag zu entscheiden, welche Transaktionen in einem Block durchgeführt werden für die Aufnahme von Transaktionen und behalten uns das Recht vor, die Unternehmen schrittweise zu ändern, wenn sie sich nicht so verhalten, wie wir es uns wünschen.