In Bitcoin werden die Transaktionseingaben (UTXOs) als Tupel (Transaktionsindex, vout) angegeben, da es im Bitcoin-System keine Vorstellung von einem Konto gibt und die Adresse (auf die vout zeigt) allein nicht ausreichen würde. Stattdessen sind Transaktionen primäre Entitäten.
Ripple hingegen macht ein Konto zu einer primären Einheit mit Transaktionen, die den Kontostand verändern. Dadurch ist es möglich, die (Konto-)Adresse allein als Eingabe für eine Transaktion anzugeben.
Das sind Designentscheidungen. Was sind die Vor- und Nachteile der beiden Modelle? Was war die Motivation dahinter?
Danke schön.
Vorteile des UTXO/Blockchain-Ansatzes:
Vorteile des Account/Ledger-Ansatzes:
Das Design von Bitcoin passt natürlich zum UTXO-Ansatz. Die Transaktionsergebnisse sind einfach und es sind keine Kontoparameter erforderlich.
Dieser Ansatz hätte in Ripple aus verschiedenen Gründen nicht funktioniert:
Da Ripple beliebige Vermögenswerte unterstützt, von denen viele wertlos sein können, muss es für die Empfänger eine Möglichkeit geben, anzugeben, welche Vermögenswerte sie als Zahlung akzeptieren. Das bedeutet, dass etwas das als Eigenschaft haben muss, was ein Konto erfordert.
Irgendetwas muss diese Vermögenswerte ausgeben, was erfordert, dass Konten als Emittenten fungieren.
Währungsübergreifende Zahlungen können zu komplexen Ergebnissen führen, der Versuch, diese deterministisch auf UTXO-Operationen abzubilden, ist nicht selbstverständlich. Das Anpassen des Kontostands ist einfacher als die Auswahl von UTXOs zum Konsumieren und Erstellen zum Zeitpunkt der Transaktionsverarbeitung. Die Transaktionen von Ripple hätten beispielsweise nicht angeben können, welche UTXOs sie verbrauchen würden, da dies zum Zeitpunkt der Transaktionsbildung nicht bekannt ist. (Woher wissen Sie, wer den besten Kurs anbietet, wenn Ihre Transaktion ausgeführt wird? Wenn alle mit hartcodierten Transaktionen um die saftigste Liquidität konkurrieren, werden die meisten Transaktionen fehlschlagen.)
Der komplexere Netzwerkstatus erfordert eine komplexere Struktur, um sicherzustellen, dass das Netzwerk diesem Status zustimmt. Die Struktur von Bitcoin hat keine Möglichkeit, sich vor UTXO-Divergenz zu schützen, was katastrophal wäre, außer Transaktionen so einfach zu halten, dass ein Fehler dieser Art unwahrscheinlich ist. Die komplexeren Transaktionen von Ripple benötigen eine starke Verteidigung gegen Abweichungen, da sonst kleine Fehler im Code katastrophale Ergebnisse verursachen könnten.
Da Ripple-Transaktionen komplexere Ausgaben haben, sind sie tendenziell größer. Der Ansatz von Ripple macht es einfacher, den Transaktionsverlauf zu verwerfen, da Sie wirklich nur den aktuellen Status aller Konten und anderer persistenter Strukturen benötigen.
Mit beiden Ansätzen können Sie so ziemlich alle Anforderungen erfüllen. Es gibt Möglichkeiten, jedes dieser Probleme zu umgehen, ohne den Ansatz zu ändern. Aber es ist oft einfacher, mit dem Design zu beginnen, das am natürlichsten zu Ihren Anforderungen passt, anstatt zu rasieren und zu klemmen, um einen runden Stift in ein quadratisches Loch zu bekommen.
Mursch
vout
ist nur der Index einer Ausgabe in der Ausgabeliste einer Transaktion. Es ist nur eine Ganzzahl. Die Adresse ist Teil des Ausgabeskripts, das im UTXO enthalten ist. Das Tupel, auf das Sie sich beziehen, ist die eindeutige Kennung eines UTXO, nicht das vollständige UTXO.