双重支付

双重支付(又称一币多付、双花攻击,double-spending)是同一笔数字货币可以被重复花用两次或更多次的情形,是一种数字货币失败模式的构想。

因为数字货币是采取电子文件的类型,而电子文件可被复制,所以花用数字货币,能造成不从原持有者扣除已花用的金额,却能支付“购买”商品与服务的消费的现象,这将凭空多出已支付但未扣除的金额,或是使收款者凭空收到多重支付的金额,此现象让整体的数字货币流通量增加,造成“通货膨胀”而导致数字货币贬值,从而不再让人信任并愿意持有及流通。

任何数字货币都有防止双重支付的措施。

受信任的第三方

通常由在线受信任的第三方来验证一个数字token是否被花用过,这在金融机构的账户存款、电子票证、游戏点数、数字小额支付的系统中采用。

受信任的第三方也会使用密码学与散列运算,防止数字货币出现双重支付的状况。

这在信任和信息安全的角度看都是单点脆弱性。

去中心化

在2007年,数个分布式的双重支付防范方法被提出,运用于加密货币与与其底层的区块链技术。

于2009开始运作的首个加密货币比特币使用了工作量证明(PoW)来避免受信任第三方的需求。

交易被记录于公开的区块链上,防止任何人双重支付,除非企图攻击者能控制全网络超过50%的运算能力。

在2018年5月,有恶意矿工通过至少51%的全网算力,对当时的全球第26大加密货币比特币黄金(Bitcoin Gold)进行双花攻击(双重支付),造成了千万美元的损失。

此次攻击引起了一些对于去中心化以及工作量证明(PoW)机制的质疑。

有人因而提出,采用持有量证明(PoS)机制的货币较比特币安全,但同年6月,360公司发声明称EOS链(EOS使用DPOS机制,标榜去中心化)存在一项重大漏洞,正基于区块链网络去中心化的计算特点,一个区块链节点实现上的安全漏洞,可能引发成千上万的节点遭到攻击。

推荐阅读

DAG 有向无环图(Directed Acyclic Graph)

java 实现有向图(Direct Graph)

参考资料

https://zh.wikipedia.org/wiki/%E9%9B%99%E9%87%8D%E6%94%AF%E4%BB%98