Transaction-Id
當兩個 txid 碰撞時會發生什麼?
假設我可以創建 SHA256d 衝突,並使用此功能創建兩個具有相同雜湊值的事務,A 和 B。這些事務不相同,但它們的雜湊值相同。
我將交易 A 送出到網路,並等待它得到一些確認。然後,我送出交易B。它會被包含到鏈中嗎?它會覆蓋事務A嗎?
如果前兩個問題的答案是肯定的,那麼如果包含交易 B 的區塊被重組對外連結會發生什麼?交易 A 會不會被覆蓋?
不可以。交易 A 入鏈後,交易 B 無效,不會被挖礦。如果它確實出現在已開采的區塊中,則整個區塊無效。
它並不總是這樣。最初,如果一個事務與前一個事務具有相同的 txid,它將覆蓋第一個事務。然後,如果該區塊被重組到鏈外,第二筆交易將被刪除,但第一筆交易不會被添加。換句話說,添加和刪除區塊會改變未使用交易集的狀態。
這顯然是荒謬的,所以在BIP 30下,當第一個輸出的任何輸出仍未使用時,包括具有相同 txid 的第二個交易是無效的。它曾經由區塊的時間戳強制執行,但現在它適用於區塊鏈中的每個區塊,除了違反此規則的兩個區塊。