Utxo
礦工如何驗證在同一塊中花費另一筆交易的輸出的交易?
在這篇文章中提到:
如果一個區塊中所有交易的所有驗證都成功,則從數據庫中刪除消耗的輸入,並將這些交易的所有輸出作為新的未使用輸出添加到數據庫中,允許它們被未來的塊使用。
但是,如果 UTXO 集僅在附加塊後更新,並且礦工僅檢查 UTXO 集以了解已花費/未花費的輸出,那麼如果塊中的交易(例如 tx_B)花費了另一個交易的輸出,將如何進行驗證(在同一個塊中說 tx_A)?換句話說,如果輸出還沒有儲存在 UTXO 集中,tx_B 將如何理解 tx_A 的輸出狀態?
當礦工建構區塊模板時,他們會維護一個“虛擬”UTXO 集來跟踪消耗的 UTXO 和新創建的 UTXO。一個交易只有在其所有輸入都可用於支出時才能包含在一個區塊中,因此這種方法也足以實現所需的交易拓撲順序。