理解双重支付:数字货币的核心安全挑战

为什么双重支付仍然是加密货币的根本问题

在任何数字货币系统中,一个关键的漏洞出现了:是什么防止同一数字资产被花费两次?想象一下,艾丽斯收到了10个单位的数字货币,然后同时将这10个单位发送给鲍勃和卡罗尔。如果没有强有力的保障,收款人无法确保他们的资金没有在其他地方被转移。这就是双重支付问题——任何可行的电子现金系统必须解决的基础性威胁。

后果是严重的。如果个人可以随意复制他们的数字资产,整个货币系统就会崩溃。加密货币的合法性完全依赖于防止这种滥用,使得双重支付的防范成为任何区块链网络的不可谈判要求。

两种竞争解决方案:集中式与去中心化

中心化的答案:盲签名和信任

几十年来,集中式方法占主导地位。一个受信任的中介——通常是银行——对所有交易保持权威。大卫·乔姆的eCash开创了这一模式,使用盲签名,使用户能够接收匿名发行的数字现金,同时银行防止欺诈。

考虑丹,他想要$100 的eCash。他生成了五个随机数字(,每个价值$20),并使用密码学混淆对它们进行盲化,然后将它们发送到银行。银行签署这些盲化的数字并从丹的账户中扣款。当丹在埃琳的餐厅消费$40 时,他揭示了这两个签名数字——像序列号一样唯一可识别。埃琳必须立即向银行兑换它们,以防止丹在其他地方花费这些数字。

这有效,但存在一个致命的缺陷:银行成为单点故障。如果银行失败、消失或拒绝服务,整个货币系统就会崩溃。用户始终处于机构意志的脆弱状态。

去中心化突破:区块链与共识

比特币在没有任何中央权威的情况下解决了双重支付问题。中本聪引入了区块链——一个分布式数据库,所有参与者都维护着交易历史的相同副本。

这是它如何防止双重支付的:当丹向艾琳发送0.005 BTC时,交易作为未确认消息进入网络。它必须通过挖矿打包到一个区块中才能被认为是“有效的”。艾琳应该在交易在多个区块中确认后才接受付款——通常需要6次确认,大约需要一个小时。一旦确认,逆转该交易将需要用比网络其他部分更强大的计算能力来重写整个区块链。这在加密和经济上都是不可行的。

美在于透明:每个节点审核从创世区块开始的完整交易历史。试图进行双重支付的行为会立即被发现,并通过共识被拒绝。

攻击者执行双重支付的三种方法

尽管比特币的设计强大,但特定场景会创造漏洞窗口:

51%攻击 一个控制超过网络哈希率一半的攻击者可以随意排除、重排序或逆转交易。他们可以确认自己的支出交易,同时阻止合法接收者的交易。虽然理论上是可能的,但在比特币上这种权力集中在经济上是不切实际的,但在历史上发生过在较小的区块链网络上。

竞赛攻击 攻击者快速连续广播两笔使用相同资金的冲突交易。如果商家将第一笔未确认的交易作为支付接受,攻击者可以确保他们自己发送到其地址的交易(以更高的费用)优先被确认,从而使支付无效。此攻击特别针对接受即时未确认交易的商家。

芬尼攻击 比竞争攻击更复杂,攻击者在一个秘密区块中预挖一个交易而不广播它。然后,他们在一个单独的公开广播交易中发送相同的资金。只有在稍后他们才会释放他们预挖的区块,从而使原始收款人的支付无效。与竞争攻击一样,这要求受害者接受未确认的交易。

关键防御:等待确认

绝大多数双重支付攻击针对接受未确认交易的商家。繁忙的快餐店可能不会在每笔交易上等待一个小时,这就造成了脆弱性。通过接受“即时”的零确认支付,他们显著增加了损失的风险。

解决方案很简单:在接受付款之前要求区块确认。每增加一次确认,逆转变得指数级地更加困难。通过等待6次确认,商家几乎消除了所有实际的双重支付风险。攻击者需要控制一个不现实的哈希算力并持续保持这种控制——在经济上是不合理的。

为什么这对加密货币的未来很重要

双重支付防范将功能正常的数字货币与失败的实验区分开来。集中式方法(盲签名,eCash)提供了隐私,但需要对机构的信任。比特币的去中心化解决方案(工作量证明,区块链共识)用数学确定性取代了机构信任。

这一突破使数千个加密货币项目得以涌现,各自尝试不同的分布式共识方法。双重支付问题,曾被认为在没有中央权威的情况下无法解决,现通过优雅的加密设计变得可解。理解这一基本挑战有助于用户和商家在加密生态系统中做出明智的安全决策。

BTC0.9%
查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 评论
  • 转发
  • 分享
评论
0/400
暂无评论
交易,随时随地
qrCode
扫码下载 Gate App
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)