比特币如何解决数字货币双重支付问题?Satoshi Nakamoto 的解决方案

2024-07-29
来源:网络整理

双重支付问题:比特币如何解决?

数字货币的概念由来已久,并不是10年前比特币刚出现时就诞生的。然而,我们之前所有的尝试都失败了,原因很简单——双重支付。

什么是双重支付?

顾名思义,双重支付就是将同一笔钱花两次。这是加密货币特有的问题,不会影响传统的实物货币。一旦你花掉你的钱,它就离开你的财产,你不能再在其他地方使用它,因为你不再拥有它。

数字货币的情况则不同,因为它们更容易被复制和重复使用。这是任何想要创建数字货币的人需要解决的首要问题之一,而比特币的创造者想出了一个解决方案。

解决双重支付问题

为了解决这个问题,中本聪采用了共享公共账本的概念,也就是我们现在所说的区块链技术。这个想法也已经存在了一段时间,但直到 2009 年比特币才真正成为现实。

这个过程相当简单——比特币持有者的交易与其他人的交易被分组。这一组被称为区块,为了确保商家能拿到钱,并且不会发生双重支付,需要对区块中分组的交易进行验证。

一种选择是让一个可以执行验证的中心化第三方,但如果是这样的话,他们就会成为一种负担,任何能够破坏该服务的攻击都会对整个加密货币生态系统产生重大影响。

比特币选择采用的另一种方案是让一大群人单独参与解决区块(验证交易)以换取奖励。这样,即使其中一些人成为黑客攻击的受害者,剩下的人仍然可以完成这个过程。交易经过验证后,会存储到区块链中,这可以确认商家确实得到了付款,客户的硬币确实被花掉了。

如果某人同时进行两笔交易怎么办?

还存在这样一种可能性,即如果有人用相同的资金进行两笔交易,那么首先解决并存储的交易将被视为有效交易。在此期间,第二笔交易将不会通过,商家将不会收到资金。考虑到这可能对商家不利,建议他们在解决几个区块(每个区块在 10 分钟内创建)之前不要发货。

双重支付和双重归流_双重支付双重回流_双重支付

因此,建议商家等待大约一个小时,以便 6 个区块能够结算。此时,商家将确切知道他们是收到了付款还是被骗了,并且可以相应地进行操作。同时,客户无法返回并撤销交易,因为这样做会占用大量资源、知识和对区块链的控制,而个人无法做到这一点。

双重支付还可能发生吗?

不幸的是,从理论上讲,实施双重支付攻击并设法将同一笔钱花两次是可能的。然而,虽然这在理论上是可能的,但在实践中却非常困难,目前还没有已知的成功案例。有几种情况可能会发生这种情况,但如前所述,这仅在理论上是可能的。

1. 种族攻击

第一种方法称为竞争攻击,它发生在接受比特币和其他货币以换取服务的人身上。然而,为了使这种方法奏效,商家必须立即赠送他们的商品,而不是等待其他确认块出现在区块链上。诈骗者可以同时使用两笔交易,如果商家决定不等待确认,就可以先处理发送给其他人的付款。

2. 芬尼袭击

这种攻击与竞争攻击非常相似,只不过是由决定尝试欺骗商家的矿工实施的。例如,如果矿工拥有两个地址,其中一个地址持有比特币,他们可能会将 BTC 从一个地址发送到另一个地址。然后他们挖掘区块但不广播结果,因此交易仍处于“不确定”状态。“此时,他们可能会选择不等待更多区块被解决,并在收到双倍付款后带走他们的商品和服务,从而欺骗商家。”

这是指矿工广播包含其原始交易(即他们发送给自己的交易)的区块。在这种情况下,发送给商家的交易将由其他人解决,并且将无效,因为相同的钱已被发送到矿工的第二个地址。

3. 51%攻击

第三种也是最后一种攻击形式是 51% 攻击,只有控制区块链网络一半以上哈希率的人才能实施这种攻击。这在理论上也是极其困难的,因为没有人拥有足够的资源和计算能力来与正在工作的大量真实矿工竞争。

在这种情况下,他们可以让区块链的私有分支看起来像主链,因为更高的哈希率会产生更多区块,从而加快速度。通过这种方式,他们可以欺骗商家,让他们以为他们收到了之前没有花掉的钱,而实际上,攻击者正在进行双重支付攻击。

分享