什么是 Double Spend?
Double Spend 是指有人试图用相同的数字货币进行两笔不同的支付。想象把演唱会门票复印两份,分别交给两个保安。在区块链上,Double Spend 的尝试会被共识机制压制,但时间窗口和一些手法仍可能被滥用。
如果钱包里显示有付款,就一定是最终的。并非如此。在网络确认之前,交易仍可能被矿工替换或忽略。
Double Spend 的工作原理
下面用一个狡猾的攻击者和一个毫无察觉的卖家来快速说明过程。
- 步骤 1:攻击者制作两笔花费相同币的交易,一笔付给卖家,另一笔付回给自己。
- 步骤 2:他们先广播给卖家的那笔交易,使其显示为待处理,卖家于是交付货物。
- 步骤 3:随后他们以更高的手续费大量广播冲突的交易,以吸引矿工或矿池。
- 步骤 4:如果矿工先把冲突的交易打包进区块,卖家那笔待处理的付款就会被网络拒绝。
- 步骤 5:更强的攻击者可能挖出一个私人分支,随后发布以替换公开链的历史,从而改变哪笔付款有效。
这就是原理,也是为什么确认很重要。
为什么 Double Spend 很重要
如果你接受加密货币支付,这不是小事。它会影响你的收益和心安。
- 好处:了解风险可以让你制定合理的确认规则,并使即时销售更安全。
- 视角:Double Spend 的威胁影响了链上对最终性、手续费和矿工行为的看法。
- 相关性:你会在收银流程、交易所、NFT 发售和 DeFi 桥中看到它。
小额购买可按风险等级处理并留意通过手续费替换的标记。对于大额,等待多次确认。比特币上六次确认仍是常见的标准。
Double Spend 的主要特征
值得注意的核心特征:
- 冲突:两笔或多笔交易试图花费相同的输入,网络无法同时接受它们。
- 时机:随着确认数增加,成功的可能性下降。
- 激励:矿工倾向于优先打包手续费更高的交易,这可能有利于攻击者的冲突交易。
- 风险:当卖家在没有检查的情况下接受零确认付款时,Double Spend 更容易发生。
变体
不同手法,同一思路。常见几种:
- 竞速攻击:攻击者几乎同时发送两笔冲突交易,寄希望于矿工选择对其有利的一笔。
- Finney 攻击:一个矿工预先挖出包含自付交易的区块,然后在发布该区块之前,用这些币向卖家付款。
- 51% 攻击:拥有足够算力的攻击者可以超越诚实链并持续逆转支付。
随着区块深度增加,最终性增强。足够多的确认后,实际的 不可变性 生效,没有大量资源很难进行 Double Spend。
示例
一家咖啡馆接受了零确认付款,买家拿着咖啡离开,随后一笔手续费更高的冲突交易被确认,使咖啡馆的付款失效。
趣闻
中本聪将比特币定位为解决双重支付问题的方案,因此防止 Double Spend 不是副任务,而是主要目标。
总结
简短结论:Double Spend 与时机和共识有关,防范方式是通过确认、合理的检查和一点耐心。劳力士遇上 Reddit 讨论串。
