Doublespend

比特幣如何解決同鏈重放攻擊?

  • October 13, 2020

假設我向 Bob 發送了 10BTC。我有 30 個比特幣。所以轉移後,我應該有20個。

現在,在我轉移 10 之後,Bob 可以將交易複製並再次廣播到網路(他可能以某種方式從池或其他東西中獲取它)。這意味著重放攻擊剛剛發生在同一條鏈上(我知道重放攻擊主要發生在有硬分叉時,但在這種情況下,我說的是同一條鏈重放攻擊)。

nonce乙太坊通過在每個帳戶中設置欄位來解決它。

**問題 1)**比特幣如何在沒有 SegWit 的情況下解決這個問題?

**問題 2)**比特幣如何通過 SegWit 解決這種情況?

**問題 3)**如果重放攻擊發生在硬分叉的情況下,比特幣是否實施了解決方案?我知道是 BTC 現金創造了一個解決方案,btc 說他們不會這樣做,但我很好奇現在的狀態是什麼?

在所有情況下,您所描述的都是雙花。比特幣使用 UTXO 模型(不是基於帳戶的模型),這意味著有一組硬幣也稱為 UTXO 集或未使用的交易輸出集。

交易會破壞硬幣並創造新硬幣。

嘗試花費已被銷毀的硬幣的新交易根本無效。

你和 Bob “擁有 x BTC”作為餘額的概念對於比特幣來說是不正確的。你所擁有的是一組硬幣(全網 UTXO 集的一個子集),你可以通過解決輸出腳本通過交易銷毀它們。當你向 Bob 發送 10 BTC 時,真正發生的事情是你拿走了你的一枚硬幣(比如說一枚價值 20 BTC 的硬幣)並銷毀它。您的交易將其替換為兩個新硬幣,均為 10 BTC - 一個由 Bob 的公鑰保護,另一個由您自己的公鑰保護(這是您的“零錢”)。

一旦該交易被確認,原來的 20 BTC 硬幣將不再存在。第二次發送相同的交易將是無效的,因為它試圖銷毀不存在的硬幣。

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