Bitcoind
如果比特幣核心出現分叉,我在哪裡可以看到如何更新 UTXO 集的程式碼?
我正在尋找一個文件名和一行,或者如果需要的話。我的目標是維護 UTXO 的地址索引。
在分叉的情況下,您必須按順序分配
Disconnect
分叉失敗側的塊,然後Connect
是分叉獲勝側的塊。如果您查看CCoinsViewCache
函式的輸入,您可以看到 UTXO 集是如何更新的。但是,從本質上講,您必須反轉失去塊中所有交易的影響,並在新塊中應用交易的影響。反轉意味著處理輸入以將 STXO 標記為 UTXO,並刪除在塊中創建的 UTXO。將新交易處理到 UTXO 集意味著,除了驗證交易是否有效之外,您將交易輸入花費的 UTXO 標記為 STXO(或刪除它們,取決於您的系統如何工作),並為輸出創建新的 UTXO在塊中。
請記住,您已按順序對塊中的每個事務應用這些過程(如果斷開塊,則按相反順序),因為事務 B 可以從事務 A 中創建的輸出中支出,其中 A 和 B 在同一個塊中。
我的目標是維護 UTXO 的地址索引。
如果我是你,我會保留一個索引,
scriptPubKey
然後在你需要查找時將地址轉換為你需要的 scriptPubKey。