区块链实战:金融与贸易落地案例分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 双花攻击

双花是指双重支付,即一笔钱花了两次。双花攻击一般是恶意的黑客攻击,其攻击的方式主要有51%攻击(Majority Attack)、芬尼攻击(Finney Attack)和种族攻击(Race Attack),最著名的是51%攻击。了解双花攻击必须先了解比特币的网络运行流程。

比特币的网络运行流程如下。

(1)新的交易在打包后向全网广播。

(2)每个节点都将收到的交易信息写入一个区块。

(3)每个节点进行挖矿,即工作量证明,如在SHA-256中,运算的哈希值必须以几个0 开头,通过不断地进行哈希运算来找到一个符合的值,找到这个值需要大量的计算,即工作量证明。

(4)当一个节点挖矿,即哈希计算成功时,它会向全网进行广播。

(5)若区块中的所有交易都是有效且之前不存在的,则网络上其他节点应认可该区块的有效性。

(6)网络上其他节点表示接受该区块,表示接受的方法是跟随在该区块的末尾,把新的交易打包到新的区块,从而不断延长该链。

因为网络上的节点会竞争着解哈希谜题,所以有一定的概率会出现并发情况,当多个节点广播自己已经成功时,网络上的其他节点会通过广播接收到不同的新区块。广播并发如图2.4所示,记账成功的节点1和节点2都向网络广播,因为不同节点间存在网络延迟,所以节点3先接收到节点1的广播,节点4和节点5先接收到节点2的广播,这样不同节点就开始进行不同的区块链记账。该僵局需要在下一个工作量证明中才会被发现,当其中一条链条变成了网络中最长的那一条时,短的分支将被废弃。假定节点3所在的分支短于节点4、节点5所在的分支,那么节点3所在的分支将被废弃。之后节点3会向附近的节点请求同步区块,形成新的分支,即形成与节点4、节点5所在的分支相同的分支,然后继续记账。

图2.4 广播并发

在了解了比特币的网络运行流程后,双花攻击就很容易理解了。

51%攻击是指黑客控制了全网超过50%的算力,可以实现区块链的逆转,简而言之就是黑客可以创造一条更长的新链,使旧链被废弃。最著名的是黑客控制了51%的全网算力后攻击比特币黄金(BTG)。黑客先向交易所转账BTG,生成了分支A,同时他又把这些BTG发送到自己的私有地址,生成了分支 B。接着他马上在交易所卖掉所有的 BTG,从而获得了大量的真实货币。因为他控制了51%以上的算力,所以分支B很快就变成了最长链,成为合法的链,他在分支B上的私有地址依旧拥有BTG,通过这种方法实现了双花攻击。从本质上来说,双花攻击利用了区块链网络作为一个分布式网络的数据同步延迟。

芬尼攻击是指通过控制网络的广播时间来实现双花攻击。其攻击对象是那些接收0确认的节点,前提是黑客已经打包了一个区块,但是不向网络广播,该区块包含了黑客向自己的私有地址转账的一笔交易,然后黑客马上向商家发起转账、购买物品,并在商家发货后马上广播前面打包好的区块,这样有一定的概率能实现双花攻击。芬尼攻击流程如图2.5所示。

图2.5 芬尼攻击流程

种族攻击是指利用矿工费用来实现双花攻击。它的流程与51%攻击的流程是类似的,都发起了两次转账,一次转给自己,一次转给商家。不同的是种族攻击中转给自己的矿工费用会高于转给商家的,因为黑客没有控制全网51%的算力,而矿工(记账节点)会优先打包矿工费用更高的交易,所以黑客通过提高矿工费用使转给自己的交易有一定概率在最长的区块链上,即通过矿工费用变相控制了全网51%的算力。