前言
概括来说,双花(double-spending)就是使用同一笔资金进行两次或多次交易。在线支付的出现就意味着必须采取措施防止双花的出现。
传统支付系统中,在支付方和接收方之间存在的中间人(如银行和信用卡公司)能够很容易地对交易进行验证。这些受信任的第三方会确保支付方有足够的余额来执行交易,并且确保支付方不会使用一笔资金发送两个或多个交易。
中间人的缺失导致加密货币领域必须采取其他措施来防止双花问题的出现。比特币是第一个成功通过PoW机制解决双花问题的加密货币。
双花的概念
让我们通过一个例子来进一步了解双花问题。如果小红支付30美元现金购买一双鞋,她就不能再花这30美元现金了,因为实体纸币已经被交给了鞋店的店员。在这个案例中,双花意味着用她用给店员的30美元现金又去购买另一件商品,这对于实物现金来说明显是不可能的。
数字支付系统面临的挑战是如何防范小红复制30美元并进行重复消费。假设小红决定使用比特币等数字货币购买一双鞋,因为验证交易需要时间,假如店员在交易得到验证之前接受了付款,小红就可以更高的矿工费将相同的资金发送回她自己的钱包。
如果小红的第二次转账被接受,那么第一次支付也就无效了,商店就成为了双花的受害者。如果您不想成为双花的受害者,那么就请避免接受未经验证的交易。
传统支付系统如何防止双花
在传统支付系统中,具有ACID属性数据库属性能够防止双花。ACID是以下四种属性的英语首字母组合:
原子性(Atomicity):
原子性意味着不存在由于交易不完整而导致用户余额未知的情况。一宗交易只存在成功和失败两种可能的状态。在销售点交易的情况下,操作要么失败(销售点机器上提示失败),要么成功(打印收据)。
一致性(Consistency):
一致性保证了交易一个接一个地正常进行,并且您的帐户状态在交易后是有效的,以确保在扣除一定金额后您的帐户余额是正确的。
独立性(Isolation):
独立性意味着即使同时有多宗交易需要处理,它们也都是分别被处理的,所有交易完成后,帐户将处于正确状态。
持久性(Durability):
持久性指数据库不可破坏的属性。只要系统处于生产模式,就不可能篡改交易结果。这意味着必须保护数据库,避免数据丢失、损害或其他。
加密货币中的双花
加密货币背后的技术——区块链意味着在一个去中心化账本中记录交易,并在参与者之间达成集体共识。该技术为存储、记录信息和数字交易提供了一种安全而强大的手段。区块链的独特之处在于它的网络由互连的设备或计算机组成,而没有一个中央服务器,也就是说,不是由一台单独的计算机去完成交易等流程。区块链系统将会交叉验证记录,确保没有人可以逆转交易以进行双花。防止加密货币数量上的复制对于维持整个系统的信任度和持久发展至关重要。
由于数字货币通过计算机代码运行,因此具有一定技术知识的个人能够相对容易地复制信息。
加密货币的双花一般是指网络中断时发生的资金被盗。攻击者会发送交易的副本以鱼目混珠,或者完全删除交易,造成并无交易发生的假象。
如果没有适当的机制来预防此类问题,交易将从根本上变得不安全,没有任何协议能够确保收到的资金不会同时被花在其他地方。因此,数字货币需要严格的机制来防止双花。
加密货币如何防止双花
区块链中的双花问题通常用“拜占庭将军问题”进行类比。这个类比展示了当多方互不信任,却必须进行合作时所面临的困境,这解释了在去中心化系统中分歧是如何发生的。
在拜占庭将军的问题中,只有所有将军带领他们的军队协同进攻时,才能取得胜利。但是,如果一位将军失败或攻击另一位将军,战斗就会最终失败,就像一个区块链被破坏。这个难题使得加密货币协议的设计必须考虑拜占庭容错(BFT)的原则。
区块链的容错性在于网络必须在面临报错、故障或参与者违规时继续良好地运行。区块链技术通过P2P文件共享技术以及公钥密码体系防止双花。
大多数区块链上的交易在全球上万个节点上同时公开被记录和保护。所有参与者都能够浏览并验证,验证过程则取决于共识机制。例如,比特币区块链使用PoW共识算法,只有所有节点就矿工提供的区块哈希的正确性达成一致时,矿工才能验证新的交易区块。
双花攻击(51%攻击)
尽管区块链采取了能有效防止双花的措施,但是双花攻击仍有可能发生。发起双花攻击的一种方式是通过多数攻击,或称作51%攻击。当单个个人或团体控制大部分算力时,就能够发起这种攻击,从而破坏区块链网络。攻击者获得足够的算力时,可以故意忽略交易或更改执行交易的顺序。在51%攻击中,攻击者可能会逆转在此期间进行的交易,从而实现双花。一个著名的例子是2018年和2020年比特黄金(比特币的一个分叉链)遭受的攻击。
结论
双花的意思是两次或多次使用同一笔资金。双花一般发生在支付系统受到损害,从而无法阻止此类可疑交易时。传统支付系统利用具有原子性、一致性、独立性和持久性的数据库来防止双花。
作为第一个成功的数字货币,比特币之所以能够生存下来,是因为它也包含上述这些属性,从而使其网络受到参与者的广泛信任。对区块链发起多数攻击的可能性非不存在,而是很小,因为攻击使用工作量证明机制的区块链要求巨大的算力成本,而攻击使用权益证明的区块链需要面临损失押金的风险。