当前位置:首页 > 比特币新闻 > 正文

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

来源: 互联网时间:2015-04-10 16:57:00

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

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

pic_proxy_meitu_34

原理:

当攻击发生时,必存在三种矿池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 < a, a > 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的算力),则可以让攻击者自食其果,其他所有矿池都会收益。

文/chehw

2015.3.23


BTC addr:1CHEp8QzFtfvwXrreoeA6wmKc7cudWD3kv

Email: [email protected]

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。