Wie löst Ripple das Double-Spend-Problem?

Wie löst das Ripple-System das Double-Spend-Problem? Verwendet es auch eine Blockchain-ähnliche Entität, die offiziell vorschreibt, welche Transaktionen bestätigt werden und welche nicht, oder verwendet es einen anderen cleveren Mechanismus?

Antworten (2)

Die Details sind sehr komplex, aber das Kernkonzept ist ziemlich einfach. Ripple löst das Double-Spend-Problem im Konsens.

Die Analogie, die ich verwende, ist ein "Vereinbarungsraum". Um den Raum zu betreten, muss man sich mit allen einverstanden erklären, die sich bereits darin befinden. Wer widersprechen will, muss gehen und einen eigenen Raum bilden. Jeder, der ehrlich ist, möchte in den größtmöglichen Raum mit den meisten Menschen hinein.

Im Raum stimmen sich die Leute ständig über den aktuellen Zustand des Systems ab. Es ist als Hash-Baum implementiert, das ist also nur eine 256-Bit-Zahl.

Um eine Transaktion durchzuführen, gehen Sie in den großen Raum und lesen die Transaktion vor. Jeder prüft die Transaktion mit seinem Hauptbuch. Unter der Annahme, dass es keine widersprüchliche Transaktion oder ein anderes Problem gibt, stimmen alle zu, dass die Transaktion gültig ist, und sie nehmen sie in den Satz von Transaktionen auf, von denen sie glauben, dass sie angewendet werden sollten.

Sie bearbeiten dann alle Meinungsverschiedenheiten, die sie haben, durch einen Lawinenprozess. Wenn jemand für eine Transaktion, die keine überwältigende Mehrheit hat, mit Ja stimmt, ändert er im Wesentlichen seine Stimme einfach in Nein. Dies stellt sicher, dass es eine schnelle Einigung über eine Reihe von Transaktionen gibt.

Sobald eine Reihe von Transaktionskandidaten vereinbart wurde, werden diese Transaktionen angewendet und jeder berechnet das nächste Ledger gemäß einer Reihe deterministischer Regeln. Sie alle unterschreiben, veröffentlichen diese Unterschriften, und jetzt wissen die Kunden, welche Transaktionen vom Konsensprozess akzeptiert wurden.

Wenn eine Transaktion aus irgendeinem Grund nicht hereinkommt, aber noch gültig ist, wird jede ehrliche Person im Raum in der nächsten Runde Ja zu dieser Transaktion sagen.

Also zurück zum Problem der doppelten Ausgaben. Eine doppelte Ausgabe besteht im Wesentlichen aus zwei Transaktionen, von denen jede nur dann gültig ist, wenn sie vor der anderen angewendet wird. Die Lösung des Doppelausgabenproblems erfordert also „lediglich“, dass man sich auf eine Bestellung für die beiden Transaktionen einigt. Wenn sich alle einig sind, was zuerst kommt, ist das Problem gelöst – das, was zuerst kommt, wird angewendet und somit ist das andere ungültig.

Wenn im Ripple-System zwei Transaktionen doppelt ausgegeben werden, kann eines von drei Dingen passieren:

  1. Eine Transaktion wird vor der anderen in einen Konsenssatz abgestimmt. In diesem Fall befindet sich diese Transaktion in einem Hauptbuch, das von allen Personen im Raum unterzeichnet wurde, wodurch die andere für immer ungültig wird.

  2. Beide gelangen in den gleichen Konsenssatz (das sollte fast nie passieren). In diesem Fall bestimmt eine deterministische Regel bei der Anwendung des Konsenssatzes, was in das Hauptbuch gelangt und das andere für immer blockiert.

  3. Keiner kommt in einen Konsenssatz, weil keiner eine Mehrheit erhält und beide Transaktionen bei etwa 50 % liegen. In diesem Fall wird jeder Knoten, der beide Transaktionen sieht (was schnell die überwiegende Mehrheit der Knoten sein wird), mit Ja über die Transaktion stimmen, die nach einer deterministischen Regel gewinnt, und mit Nein über die Transaktion, die nach dieser Regel verliert. Derjenige, der durch diese deterministische Regel gewinnt, wird in den Konsenssatz aufgenommen, auf das Ledger angewendet und den anderen für immer blockieren.

Das ist eine grobe Vereinfachung, aber es ist von Natur aus ziemlich komplex.

Wie unterscheidet sich das von Bitcoin, wenn es anders ist?
@ColinDean: Bitcoin verwendet Proof of Work . Die Methoden sind völlig unterschiedlich.
Entstehen irgendwelche „Kosten“ für die Stimmabgabe? Stellt jeder Knoten im Netzwerk eine Stimme dar? Wenn es keine hohen Kosten gibt, besteht dann die Gefahr, dass ein Angreifer Knoten im Netzwerk spammen kann, um mehr Stimmen zu erhalten? Danke für die ausführliche Beschreibung.
@BrianArmstrong: Die Abstimmung kostet nichts. Jeder Serverbetreiber wählt aus, wem er Stimmen geben möchte. Siehe UNL im Ripple-Wiki. (Entschuldigung, dieser Eintrag ist etwas veraltet, aber das Konzept ist richtig.)
Was ist hier die deterministische Regel?
@Manish: Es ist eigentlich ziemlich kompliziert, aber wenn es keine anderen erschwerenden Faktoren gibt (z die niedrigste Transaktions-ID kommt rein.
@DavidSchwartz Ripple-Knoten führen also auch eine Historie aller Transaktionen? Übrigens, in Bitcoin PoW werden doppelte Ausgaben nicht gelöst. Die Blockchain tut es. PoW ist nur eine Möglichkeit, die Blockchain vor unfairen Parteien zu schützen.
@StevenRoose Ripple-Knoten müssen keine Historie aller Transaktionen führen. Sie können so viel oder so wenig Historie aufbewahren, wie sie möchten – es ist nur erforderlich, um Kunden historische Daten zur Verfügung zu stellen.
Aber wie kann ein Node gegen eine doppelte Ausgabe stimmen, ohne eine Historie zu führen?
@StevenRoose Ripple hat Konten mit Guthaben. Wenn ich Ihnen 10 $ schicke, ist das eine doppelte Ausgabe, wenn ich keine 10 $ habe, aber es ist keine doppelte Ausgabe, wenn ich (weitere) 10 $ habe. Was Sie also brauchen, um doppelte Ausgaben zu vermeiden, ist der aktuelle Kontostand, nicht historische Transaktionen.
Wow, das klingt komisch. Vielleicht verstehe ich das Konzept, Transaktionen in Ripple durchzuführen, falsch. Ist es wie bei Bitcoin, eine Transaktion an alle Knoten zu senden? Denn wenn ja, was hindert den Empfänger von 10 $ daran, diese Transaktion erneut zu übertragen (z. B. wenn Ihr Guthaben 50 $ beträgt)?
@StevenRoose Jedes Konto hat auch eine Sequenznummer. Damit eine Transaktion legal ist, muss die Sequenznummer in der Transaktion mit der Sequenznummer in dem Konto übereinstimmen, das die Transaktion durchgeführt hat. Als Teil der Durchführung der Transaktion wird die Sequenznummer des Kontos erhöht, wodurch für immer verhindert wird, dass diese Transaktion erneut angewendet wird. Auch hier benötigen Sie also nur den aktuellen Stand des Kontos und keine historischen Transaktionen.
Die Sequenznummer ist ordentlich. Danke fürs Ausräumen. Ich denke, es ist schwierig, gute Referenzen zur technischen Funktionsweise von Ripple zu finden. Früher habe ich alles über Bitcoin aus der Zeitung und dem Wiki gelernt, aber als ich das letzte Mal im Ripple-Wiki nachgesehen habe, war es irgendwie leer und enthielt keine technischen Informationen. Ihr Jungs von O̶p̶e̶n̶C̶o̶i̶n̶ RippleLabs solltet besser damit umgehen, wenn ihr wollt, dass die Community Ripple annimmt!

@ Davids Antwort spricht im Wesentlichen nicht von einem Angriffsszenario, in dem der Raum voller unehrlicher Knoten ist. Dies ist im Wesentlichen das, was der Proof-of-Work beheben sollte.

Wenn Sie viele IPs (Knoten im Ripple-Netzwerk) ergattern, könnten Sie eine Mehrheit im Raum werden. Der Unterschied besteht darin, dass es wirklich einfach ist, eine IP zu erhalten, aber extrem schwer zu beweisen, dass Sie in einem Proof-of-Work-System (wie dem von Bitcoin) arbeiten.

Nach meinem Verständnis löst Ripple das Problem der doppelten Ausgaben nicht mathematisch, wie es Bitcoin tut (vorausgesetzt, ehrliche Nodes überwältigen das Netzwerk). Es löst es mit einem verteilten Konsenssystem, das leicht gestürzt werden kann, wenn Sie die Mehrheit der IPs erhalten und eine Weile ehrlich handeln, damit andere Knoten Ihnen vertrauen.

Zusammenfassend lässt sich sagen, dass doppelte Ausgaben sowohl mit Bitcoin als auch mit Ripple möglich sind, aber mit Bitcoin ist es viel schwieriger, doppelte Ausgaben zu tätigen, da das System auf einem mathematischen Wettlauf gegen das Proof-of-Work-System basiert, während Ripple auf dem Konsens mehrerer basiert Knoten, die von einem Angreifer leichter reproduziert werden können.

Grund, warum ich herabgestuft werde?
IPs und Knoten haben nichts damit zu tun. Dem Algorithmus ist es egal, wie viele IPs oder Knoten Sie haben oder nicht haben. Es basiert auf öffentlichen Schlüsseln, denen Menschen sehr geringe Vertrauensmengen entgegenbringen. "Es ist wirklich einfach, eine IP zu bekommen, aber extrem schwer zu beweisen, dass Sie in einem Proof-of-Work-System arbeiten", das ist im Grunde falsch. Beide nehmen Geld. Es ist schwierig, andere Menschen davon zu überzeugen, dass viele Schlüssel völlig unabhängige Eigentümer sind, wenn dies in Wirklichkeit nicht der Fall ist.
Sorry aber das ist mir immer noch nicht klar. Das Ripple-System erfordert Vertrauen in eine bestimmte Anzahl von Knoten, richtig? Wie leicht kann Vertrauen von einer einzelnen Entität vorgetäuscht werden, indem einfach eine Vielzahl verschiedener Knoten im System erstellt wird (Sybil-Angriff). Was ist im Wesentlichen, wenn der Raum voller unehrlicher Menschen ist, und wie einfach wäre es, dies zu tun?
Dieses Forum ist nicht wirklich geeignet um sich zu unterhalten. Wenn Sie möchten, können Sie in den Bitcoin-Foren oder den Ripple-Foren posten. Eine einzelne Entität kann so viele Knoten erstellen, wie sie möchte, aber sie muss die Menschen tatsächlich davon überzeugen, dass die Knoten unabhängig sind, damit sie zählen können. Menschen treffen die Entscheidung, welche Schlüssel sie zählen, auf der Grundlage ihrer Überzeugung, dass die Schlüssel unabhängig verwaltet werden. Eine Diskussion zu diesem Thema gibt es hier .
OK. Aber einfach: Warum verwendet Bitcoin dann nicht diese Art von System, wenn es doppelte Ausgaben ohne die ganze Stromverschwendung des Bergbaus verhindert?
Zum einen war dieses System erst zwei Jahre nach der Veröffentlichung von Bitcoin bekannt. Jed McCaleb schlug es als Antwort auf das vor, was er als Ineffizienz des Bergbaus wahrnahm.
Kennen Sie einen Alt-Coin, der dieses Vertrauensmodell anstelle von Proof-of-Work verwendet? Ich weiß, dass Ripple natürlich eine davon ist, aber ich mag die Unternehmensnatur nicht. Ich werde das Thema „Vertrauen“ im Auge behalten, da es sehr interessant ist. Auch mein Punkt wurde von mehreren anderen Mitgliedern zu diesem Thema angesprochen ( bitcointalk.org/index.php?topic=10193.msg146301#msg146301 ), also bin ich hier nicht völlig aus der Reihe.
@LucaMatteis Ripple basiert im Gegensatz zu Bitcoin auf Offenheit und Vertrauen. Sie haben speziell ausgewählt, welchen Knoten Sie im Gegensatz zu Bitcoin vertrauen möchten. Dies sind Einzelpersonen, Unternehmen usw., die nachweisen können, wer sie sind. Niemand wird einem zufälligen, unbekannten Haufen von Knoten vertrauen. Ein Ripple Node ist keine IP, sondern eher ein öffentlicher Schlüssel. Mein Eindruck ist also, dass dies eher der Funktionsweise von Sicherheit in PGP entspricht. In PGP verifizieren Sie normalerweise die Identität einer Person physisch oder durch Unterschriften von Personen, denen Sie bereits vertrauen.