扣块攻击理论上成立,但实际应用时往往得不偿失

Unknown view 58 2015-4-10 09:22
share to
Scan QR code with WeChat

本文是针对《比特币和博弈论:块代扣攻击理论上是成立的?》一文的补充,原文只考虑了两个矿池的情况。此时扣块攻击必定成立,只要发起攻击则必有收益。但实际应用场景下,多个矿池并存,本文补充上在多矿池和任意算力比例下的扣块攻击收益公式,根据该公式可知,多矿池存在下,所有未被攻击到的矿池均可坐收渔翁之利。而攻击者稍有计算失误,扣块攻击就会得不偿失。

结论是:只要全网的矿池足够分散,对于扣块攻击没有必要太在意。

原理:

当攻击发生时,必存在三种矿池A、B、C。其中A代表攻击者矿池;B代表被攻击的矿池(可以是多个);C代表未被攻击的矿池。假设各类矿池所占的算力比例分别为a, b, c。

当攻击发生前,三种矿池的收益分别为 a/100, b/100, c/100;

若A拿出比例为x的算力进行攻击,此时,无论A和B矿池的收益发生什么变化,C的收益将变为C/(100-X),必大于原有收益。(所以C会乐于有人发起扣块攻击,只要攻击的不是他就行);

而A则必须谨慎计算x的取值:

因为攻击发生后,A的收益将变为(a-x)/(100-x) + x/(b+x) * b/(100-x),要想使攻击获利,则A的收益必须要大于原有的收益a/100才行。

即:必须保证 (a-x)/(100-x) + x/(b+x) * b/(100-x) > a / 100

令f(x) = (a-x)/(100-x) + x/(b+x) * b/(100-x) – a / 100

盈亏平衡点为 f(x) = 0

解这个二元一次方程方程可知,x 的取值范围必须在 [0,ab/(100-a)]才行。

对f(x)求导,可知当x = ab/ 2(100-a)时,攻击者可以获得最大收益。

计算公式:

使扣块攻击盈利的攻击算力取值范围:0 < x  < ab/(100-a);

扣块攻击最大收益点的攻击算力:x = ab/2(100-a);

其中,a为攻击者算力占全网的比例;b为被攻击者的算力比例;x为攻击者用于攻击的算力占全网的比例。 0 < (a + b) < 100,  0< x 0, b > 0

示例:

以a = 30, b = 30, c = 40为例,

当且仅当x < 90/7 = 12.85时,攻击者A才可获利,当x = 90 /14时,收益最大化,A的收益率由原来的30%变为30.85%,提高了0.85个百分点;B则变为26.4%, 下降了3.6个百分点,而C在什么也没做的情况下,收益率变为42.75,提高了2.75个百分点。

当B发现被攻击时,可以考虑的策略之一是:将算力转移到其他矿池,只要使攻击的算力大于上述的阈值(比如迁出2/3的算力),则可以让攻击者自食其果,其他所有矿池都会收益。

btcfans公众号

Scan QR code with WeChat

From the Internet
Disclaimer:

Previous: 如何品鉴一个山寨币的品质 Next: 初创公司21赞助硅谷比特币招聘会

Related