UTXO-Modell vs. Konto-/Saldenmodell

Ich verstehe, dass Bitcoin nicht ausgegebene TX-Ausgaben und Ethereum-Kontostände verwendet. In letzter Zeit gibt es jedoch viele Diskussionen darüber, dass die UTXO-Datenbank von Bitcoin zu groß geworden ist. Bedeutet dies, dass kontostandsbasierte Transaktionen besser skaliert werden als UTXO-basierte?

Ich weiß nicht so viel darüber, wie der Kontostand von Ethereum funktioniert. Aber der Satz von UTXO in Bitcoin kann optimiert werden, zB wie Peter Todd hier beschreibt: petertodd.org/2016/delayed-txo-commitments

Antworten (2)

Die Wahl zwischen dem UTXO-Modell und dem Gleichgewichtsmodell ist in erster Linie eine zwischen Datenschutzanreizen und scheinbarer Intuitivität.

Folgt man dem Standardratschlag, Adressen/Ausgänge/Skripte nicht wiederzuverwenden, um nicht grundlos preiszugeben, welche Coins dem Sender und welche dem Empfänger gehören, sind die beiden Modelle eigentlich gleichwertig. In diesem Fall wären die Waagen sowieso Einwegartikel, und es gäbe so viele Waagen wie es sonst UTXOs geben würde, wodurch sowohl der offensichtliche Größenvorteil als auch die Bequemlichkeit beseitigt würden.

Das Gleichgewichtsmodell fördert jedoch effektiv die Wiederverwendung. Da die Kosten für das System (möglicherweise in Form von Gebühren, aber sicherlich in Form von Knotenbetriebskosten) für eine Kontostandsaktualisierung niedriger sind als die Erstellung eines neuen Kontostands, fördert ein solches System von Natur aus die Offenlegung von Transaktionsquellen.

Und obwohl Bilanzen intuitiver sind, erschweren sie die Schlussfolgerung über die Sicherheit des Systems. Ein Problem ist das Problem der Replay-Attacken. Angenommen, X zahlt Y und Y zahlt Z. Jetzt zahlt W erneut Y. In einer naiven Implementierung kann Z seine frühere Transaktion von Y erneut senden und könnte das Geld von Ws Zahlung an Y nehmen. Eine Lösung besteht darin, Sequenznummern auf Salden zu setzen und Transaktionen aufzufordern, die Sequenznummer der Transaktionen aufzulisten, von denen sie Geld nehmen . Unglücklicherweise erfordert dies das Beibehalten der Sequenznummer sogar für Salden, die auf Null gegangen sind, was bedeutet, dass die Saldendatenbank einige Daten für jeden Saldo, der jemals ungleich Null war, pflegen muss; ein Ergebnis, das weitaus weniger skalierbar ist als das UTXO-Modell überhaupt (das Ausgaben vergessen kann, sobald sie ausgegeben werden).

Kurz gesagt, ich bin der Ansicht, dass das Gleichgewichtsmodell die Fungibilität der Währung als Ganzes für einen kurzfristigen Gewinn verringert, der verschwindet.

Die Saldendatenbank muss die laufende Nummer für Salden, die auf Null gegangen sind, nicht pflegen. Unter anderem können Sie einem Konto bei der Erstellung eine pseudozufällige Sequenznummer zuweisen, die bei jeder Transaktion verwendet werden muss. Es gibt auch andere Lösungen für dieses Problem.
Das ist fair; Ich habe nur erklärt, wie das Kontomodell zusätzliche Komplikationen mit sich bringt – dafür sind mehrere Lösungen möglich. Das Hauptproblem ist meiner Ansicht nach, wie Konten von Natur aus die aufschlussreiche Verknüpfung von Transaktionen fördern, was meiner Meinung nach ein No-Go für jede Währung ist, die auf Fungibilität abzielt.
@DavidSchwartz könnten Sie bitte etwas mehr Details erklären, wie "einem Konto eine pseudozufällige Sequenznummer zuweisen" Replay-Angriffe verhindern würde?
Wenn das Konto neu erstellt wird, erhält es eine neue Sequenznummer. Dadurch wird jede vorherige Transaktion für dieses Konto ungültig, da die Sequenznummer nicht übereinstimmt.
Dies ist eine sehr voreingenommene Antwort. Nicht, dass es schlecht wäre, aber ich würde die Leute ermutigen, auch den Grund zu lesen, warum Ethereum sich für ihr Modell entschieden hat: github.com/ethereum/wiki/wiki/… Sie sagen auch, dass UTXOs mehr Skalierungsparadigmen unterstützen, aber ich habe noch keine gefunden mehr Infos dazu.

Im UTXO-Modell gibt jede Transaktion Ausgaben von vorherigen Transaktionen aus und erstellt neue Ausgaben, die von Transaktionen ausgegeben werden können, die später von vollständigen Knoten betrieben werden. Ihre Brieftasche führt eine Liste von UTXOs, die mit allen Adressen des Benutzers verknüpft sind, und das Guthaben der Brieftasche wird als Summe dieser nicht ausgegebenen Transaktionen berechnet. Schauen Sie sich dieses Beispiel an:

A hat 2,5 BTC, dh ein UTXO von 2,5 BTC. Ein Wunsch, B 1.0 BTC zu senden. A verwendet 2,5 BTC als Eingabe für den trxn und sendet 1,0 Bitcoin an B, 1,5 BTC werden als neues UTXO mit neuer Adresse an A zurückgesendet. Wenn B also 1 BTC hat, dann sind es insgesamt 2 BTC (gesendet von A) und zwei UTXOs: eines bereits mit 1 BTC und das andere mit 1 BTC von A.

Die Bitcoin-Blockchain verwendet dieses Modell, es gibt ein anderes Modell, das von der Ethereum-Blockchain verwendet wird, nämlich das Kontomodell, das ziemlich einfacher ist als das vorherige Modell. Sehen wir uns das Beispiel an:

A hat 2 Ether, A möchte B 1 Ether schicken, also wird das Netzwerk 1 Ether von A reduzieren, dh A hat jetzt 1 Ether und das Netzwerk fügt B 1 Ether hinzu. Wenn B bereits 2 Ether hat, sind es insgesamt 3 Ether.

Beide Modelle haben unterschiedliche Vor- und Nachteile.

Jede Transaktion im Kontomodell macht eine Ausgabe, was zu Platzeinsparungen führt. Jede Platzersparnis ist ein Vorteil. Da die Full Nodes des Netzwerks eher von Einzelpersonen als von Rechenzentren betrieben werden sollen, je geringer die Datenanforderungen, desto mehr potenzielle Teilnehmer.

Aber UTXO bietet ein höheres Maß an Datenschutz, da die Benutzer für jede Transaktion neue Adressen verwenden und es schwierig sein wird, Konten miteinander zu verknüpfen.