什么是 Race Attack?
Race Attack 是指有人几乎同时广播两笔相互冲突的加密交易,希望错误的那笔先被接受。它是针对接受零确认支付的商家的常见手法。可以把它想象成从同一账户开出两张支票,并赌收银员先处理你希望的那一张。
“Race Attack 需要通过更高手续费替换。”不完全正确。虽然 RBF 有关联,但即使没有明确的替换规则,Race Attack 也可能发生,这就是它与 交易替换攻击 不同的原因。
Race Attack 的运作方式
想象有人在柜台用加密货币付款。他们既想要咖啡又想保留币。过程如下。
- 步骤 1:攻击者创建两笔花费同一笔币的交易,但收款人不同。
- 步骤 2:他们把一笔发给商家,同时把另一笔发送到不同的 节点,希望它传播得更快。
- 步骤 3:商家看到第一笔到达,就当作已付款并交付商品。
- 步骤 4:矿工确认了其中一笔冲突交易。一旦区块产生,网络就会拒绝另一笔。
- 步骤 5:如果被确认的是攻击者希望的那笔,商家就白白损失并得到教训。
没错,就这么简单,关键在于时机。
为什么 Race Attack 很重要
有人尝试这么做会怎样?
- 好处:了解 Race Attack 可让你制定合理的收款规则,避免因承诺未成交而交出商品。
- 视角:它是更大类的 双花攻击 的一种形式,但不需要复杂设备或大量资金。
- 相关性:你会在收银钱包、电子商务以及任何考虑零确认付款的服务中看到这个问题。
如果你出售需要发货或有真实价值的物品,交付前请等待一次或多次 交易确认。对于小额现场交易,设定限额并使用能标记冲突的电子钱包。
Race Attack 的主要特征
Race Attack 的特点包括:
- 即时:在首个区块确认前就完成。
- 冲突:两笔交易使用相同输入,最终只有一笔能被确认。
- 速度:传播速度和矿工选择决定胜负,而非昂贵硬件。
- 不同之处:它不需要 51% 攻击 或对挖矿的控制。
变种
Race Attack 有几种常见变种:
- 经典:两笔冲突交易几乎同时广播。
- Finney:矿工先在独立区块中包含一笔支出,再向商家付款,然后发布该区块。
- Vector76:结合预挖区块和时机安排的手法,用于欺骗交易所等目标。
- RBF:目标相似,但依赖基于手续费的替换规则,而非单纯的传播竞赛。
网络拓扑重要。若攻击者控制大量节点或伪造身份,成功率会提高,这也是为何在讨论 Race Attack 防御时经常会提到 Sybil 攻击。
示例
一名骗子用零确认转账向售货亭付款,随后向矿工竞争广播一笔冲突交易并获胜,导致售货亭未收到款项,即便屏幕短暂显示已付款。
趣闻
Race Attack 曾在早期比特币论坛中讨论过,中本聪当年的老派建议是等待多次确认,这仍然是常见做法。劳力士遇上 Reddit 讨论串。
总结
一句话总结:Race Attack 是针对零确认的时序操作,因此多点耐心就能避免成为受害者。
