Wie kann ein Miner überprüfen, ob ein UTXO nicht woanders ausgegeben wird?

Wie überprüft ein Miner, dass ein UTXO nicht woanders ausgegeben wird, müsste er nicht die gesamte Blockchain von diesem UTXO und weiter durchsuchen, um zu sehen, ob dies der Fall ist? Unter der Annahme einer realen Größenordnung würde dies effektiv Ewigkeiten dauern, oder verstehe ich etwas falsch?

Antworten (2)

Ein Miner tut dies, indem er überprüft, ob die UTXOsneuen Transaktionen, die er auszugeben versucht, in der UTXO set.

Das UTXO setist die Sammlung UTXOs, die nicht ausgegeben wurde und daher durch neue Transaktionen eingelöst werden kann.

Dazu überprüft ein Miner (wie auch jeder andere Knoten) die LevelDB-Datenbank, die .bitcoin/chainstatestandardmäßig in Unix-Systemen gefunden wird.

UTXOswerden durch ihre txid(Little-Endian-Darstellung) mit vorangestelltem c.

In der Antwort auf diese Frage finden Sie eine ausführliche Erläuterung des Formats, in dem die UTXOs gespeichert werden, mit einigen Beispielen.

Alle Full Nodes verarbeiten die komplette Blockchain. Während der Verarbeitung führen sie Aufzeichnungen über alle nicht ausgegebenen Transaktionsausgaben in der UTXO set. Für jede Transaktion jedes Blocks werden die relevanten Änderungen an den UTXO setangewendet: Alle UTXOsAusgaben werden entfernt und alle Transaktionsausgaben werden als neue hinzugefügt UTXOs.

Wenn sich also ein Knoten vollständig mit dem aktuellen Blockchain-Tipp synchronisiert hat, um zu überprüfen, ob die Eingaben einer Transaktion ausgegeben werden können, prüft er einfach, ob für jede Eingabe ein entsprechendes UTXOin ihrer UTXO set. Ist dies nicht der Fall, UTXOwurde der entweder bereits ausgegeben oder hat nie existiert.

UTXOssind einzigartig und können nur einmal und vollständig ausgegeben werden. Sie werden durch das (einzigartige) txidder Transaktion, die das erstellt hat , UTXOund das v_out, dh die Position der Ausgabe in der Ausgabeliste der Transaktion, identifiziert.

Habe es! Danke, also gehe ich davon aus, dass das Set ständig aktualisiert wird und im Laufe der Zeit immer größer wird?
Das UTXO-Set wird zwar ständig aktualisiert, aber es wird nicht unbedingt mit der Zeit größer, da jedes Mal, wenn eine Transaktion erstellt wird, auch einige UTXOs aus dem Set verbraucht und daher daraus entfernt werden. Es hängt vom Verhältnis Inputs / Outputs ab, die jede Transaktion verbraucht / erzeugt.
richtig, aber es wächst kontinuierlich statoshi.info/dashboard/db/unspent-transaction-output-set