Englischer Originallink: https://medium.com/nervosnetwork/my-comparison-between-the-utxo-and-account-model-821eb46691b2

In der aktuellen Blockchain-Welt gibt es zwei Hauptmethoden zur Aufzeichnung von Aufzeichnungen: das UTXO-Modell (Unspent Transaction Output) und das Kontomodell. Bitcoin verwendet das UTXO-Modell und Ethereum das Kontomodell.

Bitcoin wurde ursprünglich als elektronisches Peer-to-Peer-Cash-System konzipiert. Bei Bitcoin verbraucht jede Transaktion das von der vorherigen Transaktion generierte UTXO und generiert dann ein neues UTXO Adresse. Der globale Status von Bitcoin ist eine Sammlung aller derzeit nicht ausgegebenen UTXOs. Ethereum beabsichtigt, ein allgemeineres Protokoll zu erstellen, das Turing-vollständige Programmiersprachen unterstützt, mit denen Benutzer intelligente Verträge schreiben und verschiedene dezentrale Anwendungen erstellen können. Aufgrund der Mängel des UTXO-Modells in Bezug auf Zustandserhaltung und Programmierbarkeit führte Ethereum das Kontomodell ein.

Im Folgenden gehen wir näher auf die Vor- und Nachteile der beiden Modelle ein.

UTXO-Modell


Im UTXO-Modell stellen Transaktionen nur Änderungen an der UTXO-Sammlung dar. Die Konzepte von Konten und Salden sind höhere Abstraktionen in UTXO-Sammlungen, und die Konzepte von Kontonummern und Salden existieren nur in Wallets.

Vorteil:

  1. Die Berechnung erfolgt außerhalb der Kette und die Transaktion selbst ist sowohl das Ergebnis als auch der Beweis. Der Knoten muss nur eine Überprüfung durchführen und keine zusätzlichen Berechnungen für die Transaktion durchführen, und es gibt keinen zusätzlichen Statusspeicher. Die Berechnung des Ausgabe-UTXO der Transaktion selbst wird im Wallet abgeschlossen, sodass die Rechenlast der Transaktion vollständig vom Wallet getragen wird, was die Belastung der Kette bis zu einem gewissen Grad reduziert.

  2. Mit Ausnahme von Coinbase-Transaktionen ist die Eingabe der Transaktion immer hinter einem UTXO verknüpft. Transaktionen können nicht wiederholt werden, die Reihenfolge und Abhängigkeiten von Transaktionen können leicht überprüft werden und auch, ob Transaktionen verbraucht wurden, kann leicht nachgewiesen werden.

  3. Das UTXO-Modell ist zustandslos und einfacher gleichzeitig zu verarbeiten.

  4. Besserer Datenschutz für Transaktionen vom Typ P2SH. Die Eingaben in der Transaktion stehen in keinem Zusammenhang zueinander und Technologien wie CoinJoin können genutzt werden, um ein gewisses Maß an Privatsphäre zu erhöhen.

Mangel:

  1. Es ist nicht in der Lage, eine komplexere Logik zu implementieren und weist eine schlechte Programmierbarkeit auf. Bei komplexer Logik oder Verträgen, die eine Zustandserhaltung erfordern, ist die Implementierung schwierig und die Zustandsraumnutzung ist relativ gering.

  2. Wenn es mehr Eingaben gibt, werden auch die Zeugenskripte zunehmen. Die Signatur selbst verbraucht mehr CPU und Speicherplatz.

Kontomodell

Für das Kontomodell speichert das Kontomodell den Weltstatus, und der Status der Kette wird im Allgemeinen in Form von StateRoot und ReceiptRoot im Block vereinbart. Die Transaktion ist nur das Ereignis selbst und enthält nicht das Ergebnis. Der Konsens der Transaktion und der Konsens des Staates können im Wesentlichen isoliert werden.

Vorteil:

  1. Der Vertrag wird im Konto in Form eines Codes gespeichert und das Konto hat seinen eigenen Status. Dieses Modell ist besser programmierbar, für Entwickler einfacher zu verstehen und bietet eine größere Bandbreite an Szenarien.

  2. Massentransaktionen sind günstiger. Stellen Sie sich vor, dass der Mining-Pool den Minern in UTXO eine Bearbeitungsgebühr zahlt, da für jede Eingabe und Ausgabe ein separates Zeugen- oder Sperrskript erforderlich ist. Die Transaktion selbst ist sehr umfangreich und die Signaturüberprüfung und die Transaktionsspeicherung verbrauchen wertvolle Ressourcen in der Kette . Das Account-Modell kann durch Verträge die Kosten erheblich senken.

Mangel:

  1. Es besteht keine Abhängigkeit zwischen Kontomodelltransaktionen und das Wiedergabeproblem muss gelöst werden.

  2. Für die Implementierung von Lightning Network/Thunder Network, Plasma usw. ist ein komplexerer Proof-Proof-Mechanismus für den Benutzernachweis und ein komplexeres Protokoll für die Statusmigration von Unterketten zur Hauptkette erforderlich.

UTXO VS Konto

Lassen Sie uns die oben genannten Vor- und Nachteile analysieren und vergleichen.

Zunächst zu Berechnungsfragen

Die UTXO-Transaktion selbst hat keine komplizierten Berechnungen für die Blockchain. Um es einfach auszudrücken: Es gibt zwei Gründe dafür: Erstens sind die meisten Bitcoin-Transaktionen P2SH, und das Witness-Skript ist nicht vollständig existieren. Schleifenanweisung. Da die meisten Berechnungen bei Kontomodellen wie Ethereum in der Kette erfolgen und Turing-vollständig sind, sind die Berechnungen im Allgemeinen komplexer und die Vertragssicherheit kann leicht zu einem relativ großen Problem werden. Ob es Turing vollständig ist oder nicht, hat natürlich keinen direkten Einfluss darauf, ob es sich um ein Kontomodell handelt. Aber nach der Einführung des Kontomodells kann der Vertrag als unabhängige Einheit bestehen, die von niemandem kontrolliert wird, was von großer Bedeutung ist.

Zweitens in Bezug auf das Problem, dass UTXO einfacher für die Parallelität ist

Im UTXO-Modell ist der Weltstatus eine Sammlung von UTXOs. Um Transaktionen schneller zu überprüfen, müssen Knoten die Indizes aller UTXOs im Speicher speichern, daher sind UTXOs sehr teuer. UTXOs, die längere Zeit nicht verbraucht werden, belegen immer den Speicher des Knotens. Daher sollten Benutzer bei diesem Modell theoretisch dazu ermutigt werden, weniger UTXO zu produzieren und mehr UTXO zu verbrauchen. Wenn Sie UTXO jedoch für parallele Transaktionen verwenden möchten, benötigen Sie mehr UTXO als Eingabe und müssen gleichzeitig mehr UTXO generieren, um die Parallelität sicherzustellen. Dies ist im Wesentlichen ein Staubangriff auf das Netzwerk. Und da Transaktionen innerhalb des Wallets erstellt werden, ist ein komplexeres Design des Wallets erforderlich. Rückblickend auf das Kontomodell kann jedes Konto als separate Zustandsmaschine betrachtet werden, die sich nicht gegenseitig beeinflusst, und die Konten kommunizieren über Nachrichten. Wenn also ein Benutzer mehrere Transaktionen initiiert und diese Transaktionen sich nicht gegenseitig dasselbe Konto nennen, können die Transaktionen daher theoretisch gleichzeitig ausgeführt werden.

Drittens zum Problem der Transaktionswiedergabe des Kontomodells

Ethereum verwendet die Methode, Nonce im Konto hinzuzufügen. Jede Transaktion entspricht einer Nonce, und die Nonce wird jedes Mal erhöht. Obwohl diese Methode das Wiedergabeproblem lösen soll, führt sie auch zu sequentiellen Problemen und verhindert, dass Transaktionen parallelisiert werden können. Beispielsweise sendet ein Benutzer in Ethereum mehrere Transaktionen. Wenn die erste Transaktion nicht gepackt werden kann, werden nachfolgende Transaktionen nicht erfolgreich gepackt. In CITA verwenden wir ein Zufalls-Nonce-Schema, sodass keine sequentielle Abhängigkeit zwischen Benutzertransaktionen besteht, was nicht zu seriellen Fehlern führt und es außerdem ermöglicht, dass Transaktionen parallel verarbeitet werden.

Viertens Speicherprobleme

Denn im UTXO-Modell kann der Status nur in Transaktionen gespeichert werden. Der Status des Kontomodells wird im Knoten gespeichert und mithilfe von MPT in Ethereum gespeichert. Im Block ist nur der Konsens StateRoot erforderlich. Auf diese Weise ist das Kontomodell für On-Chain-Daten tatsächlich kleiner und der Umfang der Netzwerkübertragung ist geringer. Gleichzeitig wird der Status mithilfe von MPT lokal auf dem Knoten gespeichert, was eine effizientere Raumnutzung ermöglicht. Wenn A beispielsweise Geld an B überweist und es in UTXO zwei Eingaben und zwei Ausgaben gibt, sind im Kontomodell zwei Zeugenskripte und zwei Sperrskripte erforderlich, und der Transaktionsinhalt enthält nur den Betrag . Nach der Implementierung des neuesten Segregated Witness wurde auch die Menge der Bitcoin-Transaktionsdaten stark reduziert, aber tatsächlich müssen Verifizierungsknoten und Vollknoten weiterhin das Witness-Skript übertragen und überprüfen.

Fünftens ist UTXO komplizierter, damit leichte Knoten einen bestimmten Adressstatus erhalten

In einem Wallet müssen Sie beispielsweise alle UTXOs zu einer bestimmten Adresse vom vollständigen Knoten anfordern. Für das Wallet ist es schwierig zu überprüfen, ob das UTXO verbraucht wurde die Brieftasche, um zu beweisen, dass es sich bei UTXO um das komplette Set und nicht um eine Teilsammlung handelt. Das Kontomodell ist viel einfacher. Der entsprechende Bundesstaat wird anhand der Adresse ermittelt. Der Bundesstaat kann die Echtheit der Vertragsdaten nachweisen. Natürlich kann für UTXO auch die Wurzel von UTXO in jedem Block überprüft werden. Dies hängt mit der aktuellen Implementierung von Bitcoin zusammen und ist keine Funktion von UTXO.


abschließend

Zusammenfassend lässt sich sagen, dass das Kontomodell mehr Vorteile in Bezug auf Programmierbarkeit und Flexibilität bietet; im einfachen Geschäft und kettenübergreifend hat UTXO seine ganz einzigartigen und bahnbrechenden Vorteile. Welches Modell gewählt werden soll, sollte auf bestimmten Geschäftsszenarien basieren.