作者:北国鸣
发布时间:2018年10月8日
网络来源:比特币贴吧
在数字化货币系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况,这也称之为双花。
为了解决双花问题,我们日常的数字资产使用依赖于第三方信任机构进行。这类机构对数据进行中心化管理,并通过实时修改账户余额的方法来防止双重支付的出现。而作为去中心化的点对点价值传输系统,比特币通过UTXO(区块链课堂第7问中有提到)、时间戳等技术的整合来解决双花问题。
具体来说,当一笔交易被广播到区块链网络之后,接收到交易的节点会对交易进行验证,检查其是否被花费过,即是否存在于UTXO中。如果交易输出已不存在于未花费交易列表中,则验证失败。
另一方面,为了防止一个UTXO被重复使用的情况,比特币网络中还引入了时间戳的概念。假设用户A将被认证为UTXO的1 BTC同时转账给B1、B2,两笔交易仅有一笔会成功完成,因为挖矿节点会选择性的记录优先接收到的或交付手续费更高的那笔交易。当交易被挖矿节点先后记录,根据时间戳的数据,最先被记录的交易才能成功验证。
即使两个挖矿节点分别记录并验证“从A到B1”以及“从A到B2”为有效交易,且将各自挖出包含相关交易的新区块同时广播到比特币网络中;双花现象也不会产生。根据比特币协议,当两个节点同时生成新区块时,区块链会出现分叉;只有最先生成新区块并成为当前最长链上的交易,才能被认证。通常有超过六个区块对交易进行确认之后,该转账过程才算成功。
当然比特币区块链中也不是绝对不可能出现双花现象的,比如遭受“51%算力攻击”的时候。