如何在接受零確認交易的網站上進行雙花攻擊?
要執行 Finney 攻擊或 51% 攻擊,我需要有大量的計算能力,但在這種情況下(一個接受零確認交易的網站),在我看來我只需要幾乎同時發出兩個交易。根據礦工選擇在下一個區塊中包含的內容,我可能會很幸運。
是那麼容易還是我忘記了什麼?
如果您嘗試 0 確認雙花,那麼下一個區塊中包含哪些交易(如果有)是無關緊要的。您的目標是在任一商家收到另一筆通知之前簡單地完成兩筆交易。
“問題”是網路在將交易從一個節點傳遞到下一個節點時相當快。除非您發現網路效率低下、瓶頸或網路性能正在下降,否則您不太可能在商家看到雙花的兩半之前完成兩筆交易。
一個有效的對策是商家在他們檢測到您的 0 確認交易和他們允許您訪問所購買的商品或服務之間引入一個短暫的延遲。假設您執行了一次完美定時的雙花。商家看到他們的交易並等待 60 秒。60 秒是交易不傳播網路的很長一段時間。如果在那 60 秒內的任何時候,商家看到您失敗的“其他”交易。與其他形式的欺詐不同,您將失去資金,因為您的雙花是不可撤銷的。哪個商人得到報酬只是運氣。
許多交易也不是不可逆的。具有許可證密鑰的軟體可以撤銷許可證密鑰。許多禮品卡可以被報告為被盜以凍結資金。任何基於訂閱的網站都會在切斷您之前最多為您提供幾秒鐘的服務。需要實物傳遞的產品永遠不會以足夠快的速度發貨以執行雙重支付。
0-確認雙速的風險很低,但可以通過設計超快速低延遲的“超級節點”來提高安全性。服務提供商可以在世界各地建立一個比特幣節點網路,它們之間具有低延遲連結。這些節點中的每一個都將執行修改版的 bitcoind 以最大化連接數量,建立數千甚至數万個與對等點的連接。無論雙花的兩半起源於何處,到超級節點都只有幾跳。
如果商家只接受來自超級節點網路的交易,那麼您將無法完成雙花。網路要麼已經看到了兩筆交易並且檢測到了雙花,要麼他們沒有在這種情況下,其中一個商家將無法訪問所購買的商品。
您忘記的是,接受零確認交易的商家已經使用眾所周知的方法防禦了這種攻擊。主要防禦措施是在多個點監控比特幣網路,盡可能靠近最大的礦池。商家只有在他們的絕大多數探測點看到交易時才認為交易有效。當然,如果他們在任何探測點看到有衝突的交易,他們會拒絕交易(直到/除非它得到確認)。
這就是芬尼襲擊如此震驚的原因。人們普遍認為這是足夠的防禦。在我看來,對於小額交易,比如低於 250 美元或等值的交易,它仍然足夠。至少,這是我的觀點,直到我們真正看到使用合理防禦對商家進行成功的雙花攻擊。