Wo kann ich den Code sehen, wie das UTXO-Set im Falle eines Forks in Bitcoin Core aktualisiert wird?

Ich suche einen Dateinamen und eine Zeile, ggf. auch mehrere. Mein Ziel ist es, einen Index von Adressen zu UTXOs zu führen.

Antworten (1)

Im Falle einer Fork müssen Sie Disconnectdie Blöcke auf der Verliererseite der Fork und dann Connectdie Blöcke auf der Gewinnerseite der Fork der Reihe nach auswählen. Wenn Sie sich die CCoinsViewCacheEingabe in die Funktion ansehen, können Sie sehen, wie das UTXO-Set aktualisiert wird.

Im Wesentlichen müssen Sie jedoch die Auswirkungen aller Transaktionen in den verlierenden Blöcken umkehren und die Auswirkungen der Transaktionen in den neuen Blöcken anwenden. Umkehren bedeutet, Eingaben zu verarbeiten, um STXOs als UTXOs zu markieren, und im Block erstellte UTXOs zu entfernen. Die Verarbeitung neuer Transaktionen in den UTXO-Satz bedeutet, dass Sie zusätzlich zur Überprüfung der Gültigkeit der Transaktionen UTXOs markieren, die von den Eingaben von Transaktionen als STXOs ausgegeben werden (oder sie entfernen, je nachdem, wie Ihr System funktioniert), und neue UTXOs für die Ausgaben erstellen im Block.

Denken Sie daran, dass Sie diese Prozesse für jede Transaktion im Block der Reihe nach anwenden müssen (oder in umgekehrter Reihenfolge, wenn Sie einen Block trennen), da Transaktion B von Ausgaben ausgeben kann, die in Transaktion A erstellt wurden, wobei sich A und B im selben Block befinden.


Mein Ziel ist es, einen Index von Adressen zu UTXOs zu führen.

Wenn ich Sie wäre, würde ich einen Index von behalten scriptPubKeyund dann eine Adresse in den scriptPubKey konvertieren, den Sie benötigen, wenn Sie nachschlagen müssen.