什么是 Finney Attack?
Finney Attack 指的是矿工悄悄准备一个将币返还给自己的区块,然后用同样的币通过一笔未确认交易向商家付款。如果商家在交易确认到来之前交出货物,矿工就会公布他们准备好的区块,从而使该笔付款作废。可以把它想像成在收银台出示一笔待处理的转账,然后银行把这笔转账撤回。
人们常误以为 Finney Attack 需要对网络的多数控制。事实并非如此。那是 51% 攻击,性质不同。Finney Attack 只需要单一矿工私下找到一个区块,然后在公布该区块前安排购买时机。
Finney Attack 的工作原理
直截了当地说,过程如下。矿工在区块中设置一笔返还给自己的付款并保密,然后在接受未确认支付的卖家处用相同的币付款。拿到货物后,他们公布私有区块,从而使那笔交易失效。
- 设置: 攻击者参与 挖矿,因此可以找到区块并选择其中的内容。
- 私有: 他们秘密挖出一个把币返还给自己的区块。找到该区块的机会取决于网络的 哈希率 和运气。
- 支付: 他们在柜台用一笔未确认交易用同样的币向商家付款。
- 接受: 如果商家在任何确认到来前交出货物,攻击者就广播他们的私有区块。
- 重组: 网络接受该私有区块,确认自付交易,商家的付款记录消失。攻击者既保留了币也保留了货物。
快速、隐蔽,仅在接受零确认支付时有效。
为什么 Finney Attack 很重要
那么你应该记住什么?
- 好处: 知道这种攻击存在可以帮助你避免被骗子骗走商品或丢失资金。
- 视角: 它是一种有针对性的 双重支付 手法,利用现场结账时的急躁。
- 相关性: 你会在零售加密支付、当面交易和接受未确认交易的市场中看到相关讨论。
对于任何让你难以承受的损失,等待至少一次确认或使用托管或闪电网络式支付。零确认适合小额购买,但要设定限额并培训员工不要匆忙点击确认。
Finney Attack 的主要特征
一旦了解,典型特征很容易辨认:
- 预置: 私有区块在店内购买发生前包含一笔自付交易。
- 矿工: 只有攻击者能挖出区块时才可行,普通钱包用户无法完成。
- 时机: 窗口期很短,在销售和公布私有区块之间。
- 目标: 面向接受未确认交易的商家或对手方。
- 范围: 不需要多数控制,这是一个外科式的技巧。
变体
你可能听到的相关手法,以及常见的混淆:
- 竞赛: 攻击者广播两笔冲突付款,希望商家的那笔先被接受,随后另一笔被确认使其失效。
- Vector76: 一种混合手法,将私有区块构建与网络竞赛结合,通常针对交易所或大型卖家。
- 预挖: 这不是指 预挖 代币,后者是指在启动前分配供应。
- 工具化: 一些攻击者把流程脚本化,像一个 漏洞利用,在交易完成瞬间自动释放区块。
确认存在其理由。如果你接受陌生人的未确认付款,Finney Attack 就在可能的选项中,尤其当对方急着让你现在确认时。
示例
一家小型电子商店接受一笔零确认付款购买笔记本,买家离开,随后出现一个私有挖出的区块取消了销售,典型的 Finney Attack 手法。
趣闻
该名称源自 Hal Finney,他是比特币早期人物,也是从 Satoshi 收到第一笔交易的人。他曾写过关于该手法的说明,解释为何等待确认很重要。
总结
如果只记住一件事,请记住:Finney Attack 只有在你信任未确认付款时才会造成损失。
