“双花”
“双花”交易一般指数字货币系统中,由于数据的可复制性,一笔钱被花了两次或者两次以上,也叫“双重支付”。双花及POW共识的51%攻击将对系统产生毁灭性的打击。
以比特币为例,在比特币系统中的交易最终性确认是一个概率上的最终确认(即该该笔交易在概率上很难被推翻),想象这么一种情况,某人发送一笔交易将一定量的BTC到某交易所(交易为TX1),然后矿工将交易打包上链(此时的链称为A链,高度为H),然后立即变现拿到现金,在这个期间他只要能够一直控制着比特币网络上51%以上的算力,就可以将之前那币交易使用相同数据构造新交易(TX2)将BTC发送到自己钱包,然后在之前那比交易的区块高度H上开始分叉(称为B链,也就是区块链从(H-1)高度开始就有两个分支了),攻击者在分支B上进行挖矿,由于其控制了51%以上的算力,那么攻击者获得记账权的概率很大,于是很快,分支B的长度就超过了主链,也就是分支A的长度,那么分支B就会成为主链,分支A上的交易就会被回滚(回滚后TX1由于与TX2具有相同的元数据,而TX2已经上链,故TX1被判断为无效)。
比特币的UTXO交易模型每个UTXO(用TXID和输出索引唯一标识)只能使用一次,否则将是无效的事务或块,即可以构造多个相同UTXO的交易但是始终只能有一个交易有效,以太坊的账户模型的交易中有一个针对每个账户地址的唯一的nonce值,该值可以保证交易在整个区块链上唯一有效,比特币和以太坊这两种交易模型都可以有效避免双花交易。