区块链双重支付

17 Mar 2025 | 阅读 2 分钟

双重支付是指将同一笔钱花两次。我们知道,任何交易都只能以两种方式之一进行处理:一种是离线,另一种是在线。

离线:涉及实物货币或现金的交易称为离线交易。

在线:涉及数字现金的交易称为在线交易。

让我们考虑这个例子:

你去餐厅点了一杯价值 5 美元的卡布奇诺。你付了现金。餐厅的服务员立即确认你已付款,你收到了咖啡以换取金钱。现在,你是否可以花同样的 5 美元去别的地方进行另一次购买?答案是。但如果答案是呢?这意味着同一个人可以多次使用同一笔现金。这种类型的问题称为双重支付问题。

Blockchain Double Spending

在实体货币中,双重支付问题永远不会出现。但在像比特币这样的数字现金中,双重支付问题可能会出现。因此,比特币交易有被复制和重新广播的可能性。这打开了同一比特币可能被其所有者花费两次的可能性。

比特币如何处理双重支付问题?

比特币通过实施确认机制并维护一个称为区块链的通用账本,来处理双重支付问题。

假设你拥有 1 个 BTC 并试图将其花费两次。你将 1 个 BTC 交易给了 Alice。再次,你签署并发送相同的 1 个 BTC 交易给 Bob。这两种交易都进入未确认交易池,其中已经存储了许多未确认的交易。未确认交易是没有人选中的交易。现在,无论哪个交易先获得确认并被矿工验证,都将有效。另一个未能获得足够确认的交易将从网络中移除。在此示例中,交易 T1 是有效的,Alice 将收到比特币。

Blockchain Double Spending

如果两笔交易同时被矿工选中会发生什么?

假设两位不同的矿工同时选中这两笔交易并开始创建区块。现在,当区块被确认时,Alice 和 Bob 都将等待其交易的确认。无论哪个交易先获得确认,都将首先被验证,而另一个交易将从网络中移除。

现在假设 Alice 和 Bob 都同时收到了第一个确认,那么 Alice 和 Bob 之间将开始一场竞赛。因此,无论哪个交易获得网络的最多确认,都将被包含在区块链中,而另一个将被丢弃。