Was sind die wichtigsten technischen Hürden bei der Umsetzung der UTXO-Verpflichtungen?

Commits des UTXO-Satzes im Block-Header würden sicherere Lightweight-Clients ermöglichen und die Anzahl der Blöcke begrenzen, die beim Initial Blockchain Download heruntergeladen und validiert werden müssen, was für die Langlebigkeit und Skalierbarkeit von Bitcoin von entscheidender Bedeutung ist, aber mir wurde gesagt UTXO-Commits sind eine technisch sehr anspruchsvolle Änderung im Design von Bitcoin.

Was sind die wichtigsten technischen Herausforderungen bei der Umsetzung der UTXO-Verpflichtungen und welche Lösungen werden dafür vorgeschlagen?

Wie unterscheidet sich das von Checkpoints? CS ist nicht meine Stärke
Ein UTXO-Engagement wird durch alle Arbeitsnachweise validiert, die darauf aufbauen.

Antworten (1)

Der Hauptengpass bei der Festlegung auf einen UTXO-Merkle-Root ist, dass die Erstellung und Überprüfung I/O- und CPU-lastig ist. Bis heute ist das serialisierte UTXO-Set etwa 1 GB groß und enthält fast 34000000 Einträge , und es wächst weiter. Dies bedeutet, dass eine naive Implementierung mindestens diese Datenmenge pro Block plus die Zwischenknoten hashen müsste, um einen Merkle-Baum zu erstellen. Dies ist O(n)-Komplexität und wird im Allgemeinen als schlechte Leistung angesehen. Es ist möglich, Caching-Optimierungen zu verwenden, aber das würde mehr RAM verbrauchen.

Eine mögliche Alternative sind UTXO-Unterschiede, die jeder Block einführt. Es funktioniert durch Festschreiben eines Merkle-Roots mit allen UTXOs, die im aktuellen Block ausgegeben wurden, und eines weiteren Roots, das alle hinzugefügten UTXOs auflistet. Für einen SPV-Kunden könnte dies als Betrugsnachweis dienen, wenn es möglich ist zu zeigen, dass eine bestimmte Ausgabe für eine bestimmte Höhe ausgegeben wurde (obwohl es bereits möglich ist, dies mit gewöhnlichen Transaktionen zu zeigen).

Zusammenfassend lässt sich also sagen, dass vollständige UTXO-Merkle-Root-Commitments wirklich nützlich sind, aber aufgrund schlechter Skalierung nicht verwendet werden können.

Wie lange dauert es, eine neue UTXO-Merkle-Wurzel zu berechnen?
Nicht sicher, aber Sie müssen ungefähr 2x34 Millionen Einträge hashen. Sie können den gettxoutsetinforpc-Befehl ausprobieren, um eine sehr grobe Vorstellung zu bekommen (der hash_serialized ist der Hash der Daten, kein UTXO-Merkle-Baum).