首次看到會防止雙重花費攻擊嗎?
大約需要。交易通過整個比特幣網路傳播需要 8 秒。如果我們擺脫了按費用替換的概念,並用一種**首見的方法取而代之(不是雙關語),這不會顯著降低雙重支出的可能性嗎?
即使攻擊者在地球的另一端執行另一個錢包,並在獲勝的挖礦節點附近廣播相同的交易,這樣的雙花交易仍然會在 16 秒內到達商家。
商家是否能夠簡單地監聽雙花交易並以相當高的信心得出結論,即在這種情況下雙花不太可能發生?
注意: 這個 SE 問題沒有解決我特別擔心的問題,因為商家會等待 16 秒來排除同時交易。
首先,目標是什麼?比特幣共識規則已經完全消除了任何單個歷史版本(“鏈”)中“雙重花費”的可能性。令人擔憂的是,在確定該交易最終會進入獲勝鏈之前,個人錢包會接受交易作為全額付款。因此,當我們談到有問題的“雙花”時,這個詞令人困惑——實際上沒有硬幣被花兩次——相反,它是我們給“確信你得到了報酬,而實際上你沒有得到”的一個令人困惑的名稱。
對此有一個簡單的解決方案:等到交易得到充分確認後再將其視為已接受。比特幣白皮書中提出了這種方法,並分析了重組風險如何隨著確認的增加而下降,假設不存在擁有大部分雜湊率的攻擊者。
因此,整個問題在於能否在交易獲得足夠的確認之前接受交易。答案很簡單:如果你想確定,你根本無法確定。這是一個基本問題:不受信任的參與者之間的全球共識是困難的,而在比特幣的情況下,它依賴於經濟激勵來看到共識的出現,你需要工作量證明來建立任何保證,這需要時間——多個區塊’值得的時間。
如果您正在考慮一個規則,即節點拒絕包含他們認為是欺詐/雙花交易的區塊,那麼您只是在為網路引入一個分叉的方法。我們需要一種方法讓所有節點就哪些交易是有效的達成一致,如果我們有任何其他方法可以做到這一點,而不使用緩慢且昂貴的工作量證明,我們會這樣做。
大約需要。交易通過整個比特幣網路傳播需要 8 秒。如果我們擺脫按費用替換的概念並用先見之明的方法取而代之(不是雙關語),這不會顯著降低雙重支出的可能性嗎?
這就是在引入選擇加入 RBF (BIP 125) 之前的工作方式,並且仍然適用於不發出 RBF 信號的交易。然而,它的承諾被廣泛認為是一種錯覺:有(並且是)已知的方法來建構交易,這些交易通過網路傳播的速度比其他交易慢。攻擊者需要做的就是創建一個傳播緩慢的交易,向你付款並在網路中向你“靠近”廣播它,同時廣播一個快速傳播的交易,向自己支付費用並將其發佈到網路上的許多其他地方同時網路。大多數礦工會首先看到第二個,並且該交易將有更高的獲勝機會。
如果你看一下激勵措施,你甚至不需要它。無論何時看到,礦工都有接受最高費用交易的動機。即使網路不中繼它,也沒有什麼能阻止攻擊者直接向礦工發送更高自由度的交易。他們拒絕它是愚蠢的。最初編寫比特幣軟體(仍然是針對非 BIP125 交易)拒絕此類替代品,但隨著礦工的利潤率下降和行業變得更具競爭力,在我看來,礦工最終不會接受任何最大化他們的收入。
即使攻擊者在地球的另一端執行另一個錢包,並在獲勝的挖礦節點附近廣播相同的交易,這樣的雙花交易仍然會在 16 秒內到達商家。
這是假設網路在中繼衝突時提供了合理的保證。它沒有。節點只中繼他們自己接受的交易。中繼有衝突的交易以便網路的其餘部分可以了解衝突有很多問題:
- 它不一定有效。如果攻擊者將衝突的交易直接交給礦工,他們可能沒有任何動機在它被開采之前將其透露給世界其他地方。
- 天真地完成,這是一個微不足道的 DoS 攻擊:攻擊者只需創建無數衝突的交易將導致網路中繼所有這些交易,除了最終被探勘的一個變體的費用外,攻擊者無需支付任何費用。
- 做得不那麼天真,通過適當的預防措施來防止上述 DoS 攻擊(例如,通過在某些時候啟動的速率限制),繞過它變得微不足道:首先產生足夠的交易來觸發速率限制,然後才現在才執行攻擊網路已經決定他們已經受夠了你的衝突。
- 它幫助攻擊者。如果衝突交易支付更多,中繼它的網路將使經濟理性的礦工更容易獲得它。
事實上,幾乎沒有任何保證即使是誠實的交易也能在逆向環境中很好地傳播。衝突的情況更是如此。
商家是否能夠簡單地監聽雙花交易並以合理的高可信度得出結論,在這種情況下雙花很可能發生?
當然可以使用啟發式方法來嘗試分析衝突的可能性,對於足夠低的交易,將偶爾發生的反向交易風險視為開展業務的成本可能沒問題。但請記住,過去的表現並不是未來成功的承諾。僅僅因為沒有人攻擊你並不意味著這樣做不是微不足道的;可能只是不值得嘗試。
TL;DR:如果您想確定付款,請等待確認