Doublespend
如果兩方送出了相互衝突的交易,網路如何確定哪一個是正確的?
假設 A 方和 B 方都向區塊鏈送出了一個不同版本的交易。甲方送出了一筆交易,說乙方給了他 3 BTC,而乙方送出了一筆交易,說他只給了甲方 1 BTC。網路如何決定將哪個放入下一個區塊?
你不需要相信第三方嗎?錢包或某種交易應用程序?這是如何運作的?
比特幣網路中的每個節點都會跟踪每一塊比特幣。這個主體被稱為“未使用的交易輸出集”或簡稱 UTXO 集。每個 UTXO 都是唯一可辨識的,並且只能使用一次。如果兩筆交易嘗試花費相同的 UTXO,則兩筆交易中只有一筆可以成為最佳鏈的一部分。將兩筆交易都包含在一個區塊中會使區塊無效,因為第二筆交易會花費不再存在的資金。所以,正如pinhead已經說過的,如果有人嘗試所謂的雙花,兩個未確認的交易只在網路中競爭,直到兩個交易之一被確認。另一個被逐出隊列,因為它試圖花費的資金不再可用。甚至在此之前,大多數完整節點只會中繼他們看到的兩個競爭事務中的第一個。
“甲方送出了一筆交易,說乙方給了他3 BTC,而乙方送出了一筆交易,說他只給了甲方1 BTC。”
您的場景還有另一個實際問題:大多數 UTXO 要求支出者通過提供與最初收到資金的鎖定腳本相對應的加密簽名來驗證自己是所有者的身份。當 B 方發送給 A 時,在大多數情況下,只有 B 方知道提供此類簽名所需的私鑰。除非甲方以某種方式獲得乙方的關鍵材料,否則他們根本無法創建使用乙方資金的有效交易。如果沒有有效的簽名,甲方的交易將被任何其他網路參與者視為無效而簡單地丟棄。