Transactions
我在哪裡可以了解有關 BIP30 的更多資訊;即漏洞利用和背景討論?
我無法理解BIP030中修復的錯誤,以及如何利用它。
這次攻擊的前提是必須有一個netsplit並且鏈被分叉,然後回滾舊交易?
下面的驗證偽邏輯是什麼樣的?
這個問題有幾個潛在的解決方案:
- 保證所有的幣庫都是唯一的,使得重複交易很難創建。
- 記住給定交易標識符的先前剩餘輸出,以防添加具有相同標識符的新交易。
- 僅在交易的前一個實例沒有剩餘可花費輸出的情況下才允許重複交易。從鏈中刪除一個塊可以安全地將刪除的交易的輸出重置為空。
我問的原因是我可以開發與現有客戶端並行工作的其他驗證規則。
問題在於,如果在側分支中創建了重複交易,該交易隨後被還原,並且僅被網路的特定部分看到,則存在分叉風險。看到重複交易及其逆轉的節點 A 將認為原始交易不可花費(因為它在重組中被覆蓋並隨後從其交易數據庫中刪除),而未看到重複交易的節點 B 將認為原始交易可花費. 當原始交易隨後被花費,並且網路的大部分在 B 中時,網路將分裂,因為 A 節點會認為 B 創建的鍊是無效的。
提出的第三種解決方案由 BIP30 實施——這是防止最壞情況發生的權宜之計。一個更完整的解決方案(第一個)被部署為 BIP 34