網路上有許多解釋雙花(double-spending)攻擊的文章
可是個人認為都不夠全面 , 所以來談談這問題各個面向
雙花的過程
假設有賣家 A , B
攻擊者 C
- 攻擊者 C 先向賣家 A 買東西
- 等共識機制讓 C 轉帳 A 的交易確認後
- 攻擊者 C 發動攻擊 , 讓 C 轉帳 A 的交易無效
- 攻擊者 C 在攻擊後 , 跟賣家 B 買東西
從上可以注意到幾個關鍵的地方
- 攻擊者 C 會是消費者
- 兩位賣家 A , B , 先賣的那位最終會收不到錢
- 交易的確認條件 , 會是個關鍵
- 購買東西的價值 , 或在市場上能賣出的價格
經濟的分析
雙花最終會不會有人做 , 取決於攻擊的成本與購買的標的
看幾個新聞就知道了
可以看到 , 都攻擊交易所居多
因為交易所可以直接換成法幣
以上面的過程來說 , 賣家 A 就是交易所
攻擊者買的是法幣
本質上 , 雙花要討論攻擊成本與攻擊後的收益
所以如果幣可以買房子 , 那雙花幾乎會出現
只要攻擊的成本低於房子的售價
賣家的策略
注意到交易確認的條件
實際上攻擊的過程中 , 是假設賣家只看是否確認
但事實上 , 賣家可以額外加入條件來決定要不要交貨
例如提高確認所需的區塊數
或交易確認後 , 一週後才發貨
當然這些方法還需要討論 , 但可以注意到攻擊成功難度是會上升的
後語
原則上雙花是各種公鏈都有的問題 , 隨著不同的共識機制有不同的攻擊手法
基本上共識機制就是處理雙花用的 , 沒有雙花不需要共識機制