双重支付又名双花”,也就是双重花费的意思。
用现金交易时,没有双重支付的问题。因为一笔钱支付出去,意味着实实在在地完成了资产的转移。即使付款人事后又伪造了编码一样的钞票另行消费,也不是当时那笔钱了。
而在区块链世界里,由于交易的是数字资产,本质上是一些虚拟信息之间的传递,所以存在同一笔资产反复支付了多次的可能性。
区块链世界的51%攻击就可以实现双重支付。
龟兔赛跑中,如果是兔子去追乌龟,只要奔跑速度比乌龟快100倍的兔子不打瞌睡,无论起跑线落后多少,最终一定可以赶超乌龟。
同理,拥有全网51%上面这些算力的攻击者,添加区块的速度同样碾压了普通矿工,所以可以更快地造出一条公认的最长链。
据我们介绍过的原理,攻击者就可以让花出去的数字资产重新回到自己的账户上(具体请参看51%攻击)。
除此以外,由于一条交易记录从产生到链接到区块链上,有一个时间窗口,双重支付还可以利用这个时间差”来捣鬼。
以比特币为例,A用比特币购买了B的面包,趁这条记录还没有来得及被矿工真正链接到区块链上,火速用同一笔比特币发起了第二笔交易,购买了C的咖啡。尽管两笔交易会有一笔无法通过矿工的验证,但面包和咖啡已经双双落入了A的手中。
这就好比有些人使用投币电话,在硬币上狡猾地穿了一根细绳,尽管投掷了硬币,但实际的交易并没有完成,他可以在打完电话后利用细绳再将硬币取出,如法炮制,便能用这枚硬币打无数次电话。
当你充分意识到时间差”的存在,就能避免这种双重支付。
一条交易记录被塞入区块,我们就称这条交易记录得到了一个确认。如果后面又添加了一个区块,就称得到了两个确认,以此类推。
双重支付的发生是因为收款人在交易零确认的情况下,将货物给了付款人。而安全的前提应该是保证获得较多的确认数。
为了达到目的,我们只需要关注交易之前发生的交易,而不需要关注交易之后是否会有双重支付,因为比特币系统交易是公开存储于所有节点并且有一系列的交易时间顺序。只要保证交易之前没有其他交易,那么此笔交易就是安全的,除非发生51%攻击。51%攻击是指攻击者在一笔交易被确认后在同一区块发起另一笔交易B,而后联合全网51%的算力进行挖矿(略大于二分之一的概率挖到),打包交易B确认交易记录,继续挖矿,构造一条比之前区块链更长的链条,再公布全网,全网会认可最长链条的记录,因为最长链包含了最大工作量。所以,只要不发生51%攻击,通过工作量机制证明机制、哈希算法构造的唯一公认的历史交易序列可以避免双重支付问题产生。
免责声明: 文章源于会员发布,不作为任何投资建议
如有侵权请联系我们删除,本文链接:https://www.sws100.com/biquan/319046.html