打印
分类:极客论道
点击数:7732

探讨"34%攻击"

这个危害程度上比51%攻击低得多,可以叫“策略”吧。

34%是一个象征性的数字。原理和51%是一样的,总归占比越大,成功率越高;占比越低,成功率越低。

这个只是理论推导,咱没有实力做实际测试。

假设某矿池或者矿工有全网34%的算力。

等挖出来一个block

开始“攻击”。

不广播这个block。设这个block为block1-1

基于这个block1-1继续挖矿。

此时,其它66%的算力都还在基于上一个block0挖矿。

34:66 ,有1/3 的机会先于对方挖出block2-1.当然有2/3的机会对方会先挖出block1-0.

假设block1-0先出现。

由于矿池、矿工都是直连矿池的,攻击者第一时间收到block index信息。一般来说矿池不会作假,所以不用验证,立即向其它矿池发出block1-1.因为block总归有几百K,网速再快也需要发送时间,所以实际上是block1-0和block1-1同时向全网广播。

这样,剩余的66%算力就会分叉,一半基于block1-0计算,一半基于block1-1计算。

而攻击者一定是基于block1-1计算的,所以算力是2:1,胜出的天平在攻击者这一端。

如果是另外一端先算出block2-0,那么攻击失败。损失的是1个block的收入。概率是2/3*1/3=2/9。

如果攻击者这一端的另外1/3先算出block2-1,那么第一个block1-1入账,保本。概率是2/3*1/3=2/9

好啦,剩下的5/9就是净赚的了。净赚什么了?攻击者实际上消灭了全网1/3的算力,也即34%变成51%了,净赚50%。

所以概率加权收益是5/9*1/2-2/9=1/18.

如果往下看第二轮,会发现这个"攻击"还有更多收益:

假如攻击者在block1-0之前挖出了block2-1(1/3机会),2个block都不广播.很明显,从这一时刻开始,外面66%的算力在白浪费时间,收益率不是减半,而是归零.本身算力就剩2/3了,如果遇上倒霉情况,可能会等一个小时才会算出block1-0来.

根据攻击者的激进程度,有2种策略.

策略1:一旦block1-0出现,立即广播出block1-1和block2-1.让对方的努力全部报废.大家回到游戏起点.

策略2:一旦block1-0出现,只广播出block1-1,不广播block2-1.这时,全网算力分成了3份:一份在算block3-1;一份在算block2-0;一份在算block2-2.

block2-0先出现的几率是1/3,之后广播block2-1,这样有1/3的机会输掉,这个成本是1/9x2个block.

block2-2先出现的几率是1/3,这样block1-1进账.风险是block2-1.有1/3的机会丢掉.这个成本是1/9x1个block.

剩下的1/3是收益.1个blockx1/3.

风险1/3,收益1/3,概率加权收益为0.

但是,如果算力高于34%,概率加权收益就大于0了,这个游戏就可以玩下去了.

 

用语言表达数学总归很累.懂的人自然懂,不懂的人不懂就不懂吧.

总结一下:攻击的效果:全网表观算力下降1/3.攻击方挖矿收益提高1/18.被攻击方挖矿收益下降1/36.

谁愿意尝试,就尝试一下吧.