一、 双花攻击
介绍:
双花攻击顾名思义,同一笔钱给了不同的人消费了多次,如下图所示:
攻击的方式主要包含以下几种:
1) Finney攻击
矿工挖到了一个区块(这个区块中包含一个交易 : 张三向李四转1BTC,其中张三和李四都是自己的地址),他先不广播这个区块,先找一个愿意接受未确认交易的商家向他购买一个物品,向商家发一笔交易:张三向王五转1BTC,其中王五是商家的地址,付款后向网络中广播刚刚挖到的区块,由于区块中包含一个向自己付款的交易,所以他实现了一次双花。
2) Race攻击
张三同时向网络中发送两笔交易,一笔交易发给自己(为了提高攻击成功率,他给这笔交易增加足够的小费),一笔交易发给商家。由于发送给自己的交易中含有较高的费,会被矿工打包成区块的概率比较高。
3) 51% attack
攻击者占有超过全网50%的算力,所以他可以创造一条高度大于原来链的新链。那么旧链中的交易会被回滚。攻击者可以发送一笔新的交易到新链上。如下图所示:
应对措施:
首先看下双花攻击成功的概率:
如果当矿工的算力超过50%的时候,网络被完全控制,无法阻止双花攻击。但是掌握50%算力的成本还是比较高的,如下图所示:
因此,在攻击者算力不够高的时候,增大确认数N可以有效防止双花攻击。
除此之外,还可以对交易进行监控,发现有双花攻击的情况及时报警。
二、 跳币攻击
首先看一下,比特币难度调整算法:
跳币攻击的思路就是,有两种币A和B,两种币都有诚实的矿工,比如攻击者的算力是诚实矿工的5倍,那么攻击者就可以在两个币之间切换着挖,导致普通矿工很难挖到币,如下图:
BCH被跳币攻击的案例:
这种情况,会导致算力不平均,时高时低,诚实的矿工挖不到矿会选择离开,导致整个网络更加不安全。
应对措施:
变种DAA算法:
Zawy算法
Digsheild算法
Dark Gravity Wave算法
MIDAS算法
困难点:
1. 抵抗多种攻击技巧
2. 数学上消除攻击者优势
3. 常数出块时间
DAA攻击仿真:
https://github.com/edwardz246003/DAA_simulator
三、自私挖矿
介绍:
应对措施:
类似于以太坊,运用GHOST协议,支持叔块。
当然,以太坊的解决方案同样也有漏洞,矿工可以隐藏自己的算力,使得自己和其他矿工的获益更大,如下图:
四、攻击 矿池
介绍:
应对措施:
暂时没有特别好的应对措施。