Doublespend

0/確認競賽攻擊雙花交易

  • June 18, 2017

我正在開發一個銷售點比特幣應用程序,它應該接受“快速”交易(商家接受約 30 秒)。我已經在這裡研究過雙重支出問題,但我仍然不清楚,在交易實際包含到區塊之前的時間範圍內會發生什麼。

考慮到雙花嘗試的情況,攻擊者需要向商家付款。攻擊者創建並將相應的交易 A 傳播到比特幣網路中。交易 A 被添加到挖礦節點的主記憶體中,並且正在“等待”包含到下一個區塊中。商家被他所連接的節點告知交易 A 的傳播。在交易 A 實際包含在一個塊中之前,攻擊者創建並傳播另一個交易 B,該交易 B 具有與 A 相同的輸入(雙花)。

  • 如果礦工(在他的主記憶體中有交易 A)得到了衝突的交易 B,會發生什麼?
  • 如果交易成功傳播到所有或大多數礦工,商家能否確定交易 A 將被確認?
  • 如果 B 具有更高的交易費用、較小的字節大小或其他屬性,礦工是否會丟棄交易 A 並包含 B?

底線是您無法安全地接受零確認交易。

如果礦工(在他的主記憶體中有交易 A)得到了衝突的交易 B,會發生什麼?

取決於礦工正在執行什麼軟體以及他們如何配置它。

  • 一些節點會拒絕它。
  • 一些節點會接受它。
  • 一些節點會有條件地接受它。

不知道人們在挖礦節點上執行什麼或他們有什麼規則。

如果 B 具有更高的交易費用、較小的字節大小或其他屬性,礦工是否會丟棄交易 A 並包含 B?

同上。

如果交易成功傳播到所有或大多數礦工,商家能否確定交易 A 將被確認?

絕對不。

可以隨時開採替代品,使原件無效。這種攻擊已在現實世界中用於詐騙網站的比特幣付款,金額達數百萬美元。一旦交易被包含在一個區塊中,甚至可能發生成功的雙花,這就是為什麼建議接受比特幣作為服務支付的人們進行大量確認的原因。

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