简称:
双花



双重支付又称双花,是指同一笔资金被多次花费。这种情况在法币世界里并不会发生,因为同一张纸币花掉就没有了,无法花费第二次;而网上支付后也会有中心化管理机构对我们的账户余额进行相应的扣除。但在加密货币的世界里,并没有中心化机构进行集中管理。而且加密货币的本质是一串字符数据,因此能够像聊天消息一样复制多次发送给多个人,因此会出现双重支付现象。



区块如何解决这一问题?交易记录的全网公开、时间戳最长原则和共识算法共同起到了作用:


1.所有交易全网公开


加密货币系统中没有余额这一概念。当矿工对一笔交易进行验证时,需要在所有公开的交易信息中查询交易账户的资金往来记录,从而计算出该账户目前有多少资金可以花费。全网交易记录的公开透明,为验证提供了数据依据。


2.时间戳


每一次交易都会生成相应的时间戳,所有的交易会按照时间顺序进行排列。如果同一笔资金被花费多次,矿工会在验证的时候判定时间戳最早的那笔交易有效,然后拒绝后续发起的交易,从而避免双花现象。


3.最长原则


假设有人持有一枚比特币,先将它转给了A,然后又在这笔交易没有被确认的时候,再次将这枚比特币转给了B。当A交易被广播至网络中一半的节点,由矿工确认后打包入区块;而B交易被广播至另一半节点,它们并不知道交易A的存在,于是也将交易B确认后打包入区块。此时,如果两边的矿工几乎同时挖出新区快,交易A、交易B就会随着两个新区块的产生而同时存在,区块链上将出现分叉现象。



但这种现象是暂时的。因为根据最长原则,下一个区块被添加到哪个分支,则该分支将变成最长而成为主。主之外的分叉链将会被抛弃。因此,即使同一枚比特币被花费了两次,但其中一次交易将会被取消。


4.共识算法


假如有攻击者掌握了区块链网络51%的算力,其算力巨大可以迅速篡改区块信息,使被篡改的区块取代原有区块成为主,实现双花的目的。但工作量证明共识机制决定了攻击者需要投入高昂的设备和电力成本才能进行攻击。相比对区块链进行攻击,遵从规则进行挖矿往往获益更大、更为划算。因此从维护个人利益的角度来看,几乎不会有人集合51%算力去攻击区块链,而是反过来对区块链进行维护,确保自己手中的资产有价值。



也有区块链网络采用PoSDPoS共识机制,将所有节点的财产与区块链安全绑定在一起,财产越多的节点权力越大,这更加避免了由于算力集中而带来的安全威胁。



互联网技术不断在发展,对区块链进行攻击的技术也会随之升级,区块链安全也面临着不同的挑战。不论何时,双重支付都是区块链技术实现过程中应该重视的问题。解决双重支付,能够保持数据的真实可靠,避免区块链的公信力下降,更能维护加密货币市值。