Doublespend

雙花檢測細節

  • December 29, 2015

我對雙花檢測的細節感到困惑。我的問題是,如果Alice首先將她的 10 BTC 發送給Bob,然後將相同的 10 BTC 發送到屬於她自己的地址。比特幣客戶端如何檢測第二筆交易無效?換句話說,客戶如何知道這些比特幣已經在第一筆交易中被花費了?客戶是否會追溯所有區塊以檢查這些比特幣之前是否已經使用過?

有兩個階段會影響雙花交易。

最初,當交易未經確認時,節點無法知道哪個交易是“第一筆”或“雙花”。通過本地策略,它可以選擇其中任何一個,通常是它看到的第一個。但它可能會根據例如費用金額選擇另一個(礦工可能更喜歡最高費用)。

一旦其中一項交易被確認(肯定是 6 次確認),另一筆交易將無效。比特幣節點維護一個未使用的交易輸出 (UTXO) 集。每當交易花費(早期交易的)輸出時,該輸出將從 UTXO 集中刪除,並將新交易的任何輸出添加到該集中。

雙花交易會嘗試花費不在 UTXO 集中的輸出,因此是無效的。

UTXO 集目前約為 1 GB,並保存在記憶體中,以使所有查找都非常快。有一些優化可以減小這個尺寸。儘管隨著比特幣採用率的提高,UTXO 集也將再次增長。

引用自:https://bitcoin.stackexchange.com/questions/42058