比特币现金 [天下大义,当混为一] 算力战 (下)

aaron67 · 发布于 2018年11月13日 · 174 次阅读
本帖已被设为精华帖!

本文由@江卓尔大佬首发于他的微博文章


终于到了大家最关心,也是最高潮的部分:算力战

为什么算力能成为比特币的最高仲裁机制

答案很简单:因为算力能杀死一条链

这是一条最底层的规则:生存是最终的辩论方式,是决定对错的最高依据。这条规则有很多种表述方法,例如“胜王败寇”, “真理只在大炮的射程之内”,“暴力是决定所有规则的元规则”。

为什么无神论(科学论)是对的?是因为无神论能辩过有神论吗?当然不是,无神论和有神论两边的逻辑基础都不一致,辩起来就是鸡同鸭讲。无神论是对的,不是因为无神论更 “有理”,而是因为无神论能造出枪

我能造出枪消灭你,你都不存在了,你还有什么资格讨论对错吗

所以,生存是最终的辩论方式,是决定对错的最高依据。为什么我支持 “演化论” 而不是 “稳定论” ?因为 “演化论” 以适应市场需求,增加用户数为唯一目的,而 “稳定论” 不以此为最高目的。

当然,“稳定论” 会认为,我的链协议稳定,所以用户会选择我,但如果不是呢?如果两者矛盾呢? 如果根据市场需要,增加像DSV这样的功能,就是能比稳定时,吸引更多用户,首先达到50亿的最终目标呢?那么谁是对的,谁是错的?

所以,“演化论” 是逻辑自洽的。极端锁死和过度修改都错,“演化论” 更有可能在 “稳定” 和 “修改” 中找到最佳的位置,并获取最多的用户。

而 “稳定论” 包含了一个假设:稳定是最好的增加用户的方式。这个假设从商业上来看几乎不可能成立:商业上没有躺赢,中本聪并没有给我们设计一条成为世界货币的躺赢之路

有人可能会认为:“产品才需要吸引更多用户,而货币不能这样设计”,“BCH应该好好在货币上发展,而不应该搞各种新功能和第二层网络”。这不对,货币也是产品的一种,美元一样要面临欧元、人民币、日元的竞争,为什么美国政府要搞 “石油美元” (国际石油贸易以美元结算)?还不是为了增加美元的 “应用” 和 “用户数”

而在加密数字货币领域,这种产品竞争就更剧烈了:任何一种币,都必须面临大量币(产品)的竞争。

如何通过算力杀死一条链

回到算力战上,算力战对大部分人来说,是从未用过的屠龙之技,所以各种文章和推测的错误很多。 ​​​​莱比特矿池(BTC.TOP)是全网唯一一个有过大规模算力战经验的矿池,任何与本文不符的表述(包括CSW的表述)均为错误

大家都知道 “51%算力攻击”:

  1. 攻击者通过优势算力,挖掘一条比原链更长的攻击链。
  2. 攻击链向全网广播后,节点按规则,将接受更长的链,丢弃原链。

下图中的直线链(上面的蓝色链和下面的红色链),表示被中立节点接受的主链。

PS:这里的 “更长的链” 准确地说是 “累计难度更大的链”,例如节点会接受2个难度10的块,而抛弃掉3个难度5的块,因为10+10=20>15=5+5+5。为了叙述方便,后文均假设每个块的难度相同 。

通过51%攻击,可以完成各种目的,例如:

  1. 在Tx1(交易1)确认后,撤销掉Tx1,让另一个冲突的Tx2(交易2)生效。 例如Alice用Tx1发了1个BTC给Bob,向Bob交换100个LTC,在收到Bob的100个LTC后,再用一个发这1BTC给自己的Tx2,替换掉Tx1,把付给Bob的1BTC拿回来。
  2. 用自己挖的块(红色的块),孤立掉其它矿工挖的块(蓝色的块),让其它矿工损失挖矿产出。

在51%算力攻击的基础上,可以进行 “51%空块攻击”:攻击者只挖空块(不包括任何交易的块),并不接受(孤立掉)任何其它矿工挖的,正常打包交易的块,让这条链瘫痪掉,任何人都无法正常交易

并且,由于矿工在这条链上挖到的块都被孤立掉,没有挖矿收入,因此也会逐渐停止挖矿,最后这条链就死了。

如何防御 “51%空块攻击”

防御者需要不承认攻击链,在原来被覆盖的原链之后,调动更多的算力,挖一条比攻击者更长的链

在实际的攻防中,双方将会不断延长自己的链,并有可能来回重组覆盖。也就是说,一个只按默认规则,接受最长链的中立节点,可能在攻击链较长时,接受攻击链,然后在防御链较长时,放弃攻击链,接受防御链。

攻防双方成本分析

胜利的一方,只要比失败的一方多挖一个块就可以。

1、如果防御者放弃了,那攻击者也不用再继续花成本挖块,只要简单停止挖矿即可,这条链就死了。之后攻击者如果发现防御者又开始挖块,那攻击者也只要继续比防御者多挖一个块就可以。

由于这条链已经死了,所以攻防双方挖的所有块就都作废了,双方都将损失所有挖矿成本。

2、如果攻击者放弃了,那情况有些不同,攻击者还是将损失所有挖出的块(和成本),但由于链还存活,所以防御者可以获得之前所挖的块,作为收入

也就是说,攻击方不管胜负,必然损失攻击成本,而防御方有防守优势,如果获胜还可以获得挖矿收入作为补偿

攻防双方算力分析

11月15日,BCH的ABC客户端,将硬分叉升级至0.18.2版,比特大陆支持ABC的此次升级。

而CSW所支持的BSV客户端,将同时分叉出链BSV链,并声称将对ABC 0.18.2链(升级链)进行算力战攻击,杀死ABC升级链。

CSW方的算力

支持CSW的矿池(Coingeek,svpool,BMG等)目前展示出来的算力为2000-3000P左右,CSW声称还有隐藏算力,因此可认为CSW至少有3000P自有算力

CSW还可以通过租赁方式,控制更多算力,例如和矿池、大矿场谈算力租赁,或者从nicehash等算力平台上租赁算力,只要愿意给出溢价(例如+20%挖矿收益),CSW自有+租赁算力到1万P,难度不大

比特大陆方的算力

比特大陆旗下的矿池(BTC.com和Antpool)合计拥有约15000P的算力,再加上比特大陆参股的ViaBTC矿池,共计拥有约20000P的算力。

由于BTC和BCH均使用sha256算法挖矿,所以矿池在技术上,可以在BTC和BCH上来回秒切算力。只要正常给矿工按算力付挖矿产出的BTC,矿工实际上并不关心实际挖的是什么币。矿工甚至不知道自己挖的是什么币,只是解答矿池下发的计算任务。因此比特大陆如果愿意,可以使用所有20000万P的BTC算力,来BCH上做防御,之前出现各种传闻,例如比特大陆在新疆部署9万台矿机用于算力战等,均为无意义的谣言。比特大陆使用BTC算力进行算力战,符合 “生存是最终的辩论方式” 的算力战原则

由于比特大陆正处于上市中的关键阶段,CSW威胁称,若比特大陆使用BTC算力来进行算力战,他将通过诉讼方式攻击比特大陆。但这一做法意义不大,因为比特大陆基本上不需要使用全部20000P算力应战,若使用部分算力,比特大陆可声明使用自有算力(或合作伙伴算力),其余(正常获得支付BTC)的矿工既没有动机起诉,也难以确认自己挖的是什么币。

双方的资金

虽然比特大陆方算力基本可以肯定比CSW多,但算力战的胜负,不仅仅取决于算力。若CSW如之前所声称,全力开战,那每天将烧掉几千万,甚至上亿的成本,那算力战的瓶颈,将不是算力,而是双方愿意烧掉的资金

在资金方面,CSW声称自己是亿万富翁,有豪宅名车,并得到Calvin Ayre(博彩业大佬)的鼎力支持。比特大陆则是估值150亿美元,正在上市中的庞然大物,并且持有100多万个BCH,在BCH上有足够的利益。双方都是重量级选手,至于双方愿意烧掉多少资金,取决于双方的意志,我们无法猜测

攻防双方烧钱比例分析

BCH的正常算力取决于:BTC的总算力 & BCH/BTC的汇率。例如11月2日BTC的总算力51370P,BCH/BTC汇率=0.067,则BCH正常算力应为51370*0.067=3441P。若BCH实际算力高于3441P,则每台矿机挖矿BCH产出将低于BTC,矿工将从BCH迁移到BTC,直到两边挖矿收益相同,反之亦然。

CSW投入的算力多少,将决定双方的烧钱比例。

如果CSW投入7000P算力(两倍BCH正常算力)

如第四章中所述,攻击方不管胜负,必然损失攻击成本,而防御方有防守优势,如果获胜还可以获得挖矿收入作为补偿。因此,若比特大陆也投入7000P算力进行防御,并最终获胜,那可以得到BCH期间挖出的BCH作为补偿(相当于3500P算力的成本)。

也就是说,在算力战烧钱时,比特大陆投入7000P算力防御,但其中只有3500P需要烧钱,剩下3500P将获得正常挖矿产出(虽然暂时无法兑现),而CSW的7000P算力全部都需要烧钱。

因此,CSW投入的算力越少,比特大陆的 “防御抵扣优势” 越大,例如各自投入5000P时,比特大陆1500P烧钱 vs CSW 5000P烧钱,因此比特大陆坚持到底的决心也必然越大。

如果CSW投入7000~14000P算力

此时,决定胜负的将主要不是双方的算力,而是双方的烧钱意志。例如CSW投入10000P vs 比特大陆10000P,则比特大陆 “防御抵扣优势” 将不明显,抵扣后将变成 CSW 10000P烧钱 vs比特大陆 6500P烧钱。

并且在双方抽调BTC大量算力(假设共20000P)到BCH上打算力战后,将大幅提高每P算力的租赁成本:

a、BTC交易打包手续费将大幅提高

由于BTC的区块大小被Core锁死为1M,因此:算力减少40% → 出块速度减少40% → 每10分钟1个1M区块变成每10分钟0.6个区块=0.6M区块 → BTC和2017年底一样,发生超级大拥堵 → BTC交易打包手续费将提高到20-30% → 每P算力使用成本提高20-30%

b、BTC每P算力产出将大幅提高

若算力战短时间无法结束,那BTC经过难度调整后,每P算力产出将提高40%,进一步提高每P算力使用成本,降低防御方的抵扣优势。

目前20000P算力日产出3000万元,算力战后期成本可能上升到5000万元/日 或更多,若CSW按照之前声称,全力进行算力战,那算力战将以极快的速度烧钱,并不会持续很长时间

总结

算力战的胜负,取决于算力和资金的综合影响。CSW的算力越少,需要的资金优势越大;算力越大,需要的资金优势越小。如果CSW的资金优势极大,则哪怕4000P的算力,也可以打赢算力战,迫使比特大陆放弃防御。

算力战的正面战 & 游击战

从第2到6章,阐述了 “以杀死一条链为目的的算力战” :从分叉点开始,攻防双方持续地在自己链上挖块,直到一方放弃自己的整条链为止

这种 “算力正面战” 类似国家之间进行的,以灭国为目的的正面战争,正面战争耗资巨大,持续时间短,对非军事目标破坏小。

以之相对应的,是 “算力游击战”:攻击方由于力量或意志不够,并不进行正面对抗,不是持续地挖攻击链,而是分散、偶尔地攻击,因此攻击成本低,但持续时间长。每一次攻击链在短暂地覆盖掉原链后,都必然再被防御方覆盖回去,只能对链的稳定性造成影响,但不能杀死一条链。

防御方面对 “算力游击战” 的防御成本为0,由于攻击方不会持续挖矿,因此防御方只要再继续正常挖几个块,就可以把攻击链覆盖掉,不需要付出额外的防御成本。唯一的损失只是区块链不稳定:这段时间内,链上无法打包交易,被攻击链覆盖区块的交易,也会暂时变成未确认交易。

“正面战” 和 “游击战” 的差别总结如下:

如本文的 “上” 和 “中” 所述,算力投票(算力战)的目的是作为最终仲裁方式,在双方目标一致,只是手段不一致的情况下,避免不必要的分叉。只有 “正面战” 才有 “消灭一条链避免分叉” 的作用,而 “游击战” 没有这种作用,因此 “游击战” 除了延长算力战时间,给生态造成破坏外,没有任何意义。

算力战的结果

算力战的可能演化路径,如下图:

情况A:比特大陆防御成功,CSW攻击失败

CSW在宣传中一直声称要 “打算力战”,“没有分裂”。在CSW算力战失败后,若CSW履行承诺,放弃BSV链,则算力战结束,ABC链成为BCH,BSV链死亡【流程图,结果2】

但后来CSW又声称 “要打两年”,“要让BCH没有任何交易”(见Roger Ver宣布旗下Bitcoin.com支持ABC后,CSW给Roger Ver的信)​

如果CSW在正面战失败后(甚至不愿烧钱打正面战),继续打不能杀死一条链,不能防止分裂的 “游击战”,同时BSV链继续挖块,形成事实上长时间并存的,ABC和BSV两条分裂链【流程图,结果1】,那CSW将违背自己 “不分裂” 的承诺,被社区大部分人所抛弃。

CSW长期进行游击战,将导致BCH链长时间处于不稳定状态,交易所可能长时间不恢复BCH的充提,商家可能长时间不愿接受BCH,也就是CSW信中所称的 “2 years of no trade(两年没有任何交易)”, “welcome to bankruptcy(欢迎面对破产)”。这不符合BCH社区所有人的利益

如果BCH社区无法阻止CSW一意孤行,长期进行游击战,那么:

a、BCH上的矿池需要建立互相合作的自动防御系统,在CSW的算力正常挖矿时,接受其挖出的块;在检查到孤立原链区块的攻击链时,不接受攻击链,而是在原链区块之后,自动调集算力挖矿,直到覆盖掉CSW的攻击链为止。

b、但在防御算力覆盖掉攻击链的这段时间内(可能几分钟到几个小时,视攻击链的长度,攻击链越长,需要的恢复时间越久),BCH链将暂时不能确认交易,用户也将看到最近确认的交易,重新变成未确认,还是给链造成了不稳定。

因此,最好的方法是ABC开发组发布临时战时补丁,最多只接受高度=1的重组链(常见的孤立块),不接受任何高度>=2的重组链,这样攻击方最多只能孤立最近1个区块(回滚1确认的交易),恢复时间也很短,不会对交易所和商家造成威胁。

但此补丁造成的后果是,在使用补丁的时间内矿池必须提高警惕,避免因为某些网络原因,产生高度>=2的连续孤立块,因为这样会导致不同矿池的永久性分叉。若意外发生了这样的分叉,矿池必须立即互相协调,放弃较短的分叉链,统一到最长的链上。

情况B:CSW攻击成功,比特大陆放弃防御

如6.2中分析,若CSW烧钱超过比特大陆的承受能力,则比特大陆将被迫放弃防御。ABC开发组若放弃ABC链接受BSV链,或者不接受BSV链但退出BCH开发,则算力战结束,ABC链死亡(无人继续挖矿),BSV链成为BCH【流程图,结果3】。

ABC开发组也可能不放弃,声称被攻击,原挖矿算法不安全,将挖矿算法从POW修改为POW+POS。虽然修改挖矿算法将导致巨大的争议,但从交易所的实际表态来看,由于BitcoinCash.org域名和ABC开发组均支持ABC链,故交易所将大概率给ABC链保留BCH的交易对,给BSV链新增BSV的交易对(和之前诸多BTC分叉币一样的流程)【流程图,结果4】。

这是最差的一种情况,BCH社区将发生巨大的分裂,BCH将受到巨大削弱,BSV将继承BCH放弃的目标——挑战BTC,成为真正的比特币。

不管最后的结果如何,本次算力战,都将展示算力的作用和威力,显著提高算力在整个生态中的地位,并为算力作为比特币分歧的最终裁决手段,做好铺垫。BTC,BCH,BSV等诸多同算法分裂币种,最后可能都将被统一

算力战期间用户建议

1、若你不打算在算力战期间买卖BCH,那简单保管好你的私钥即可。

2、若你准备在算力战期间买卖BCH,请仔细阅读本文关于算力战攻防的原理和流程说明,并忽略任何与本文相抵触的表述。算力战期间ABC和BSV的价格变化,请咨询上帝(我的一贯观点:币价长期问用户数,短期问上帝)。

3、CSW一直在混淆 “一个交易在两条链上都能打包” 和 “只存在一条链,没有分裂” 这两件没有关系的事情(可能是为了CSW的支持者反对BCH分裂成两个币?)。算力战一开始,ABC和BSV链只要有最轻微的一点不一致(例如ABC链打包了一个带DSV操作码的交易),那ABC和BSV链在物理上,就分叉成了两条链,不存在什么 “只存在一条链”,CSW最多只可能做到杀死ABC链,让两条链只有一条活下来

在ABC和BSV链分裂后,由于CSW不在BSV链上加重放保护,故将发生之前ETH和ETC分叉时类似的情况(发送ETH时,一起把同地址的ETC发了出去)。你在发送ABC币时,由于你发ABC的这个交易在BSV链上也能打包,所以很可能将BSV币也一起发了出去。若你不懂得做分离,需将币发到BCH和BSV充值地址一样的交易所,以免丢币。

4、在算力战前将币充到(承诺给两种币的)交易所,好处是算力战期间还可以交易,并且如果分叉,交易所会帮你做好两种币分离。坏处是什么时候可以充提,得完全听交易所。如果算力战持续很长时间(尤其如果CSW长时间打游击战),交易所可能会很久都不开放充提。另外,任何交易所都有倒闭的风险。

5、把币留在链上自己控制私钥,坏处是算力战期间不能交易,好处是控制自己的币,可以在算力战后,选最先恢复充提的交易所交易。两种做法各有利弊,根据自己的情况和需要,自行选择。

我和莱比特矿池(BTC.TOP)的态度

我支持算力投票(算力战),认为BCH应该以获取用户为最高目的,快速演化,并通过算力投票(算力战)的方式,消除演化中的分歧,防止不必要的分叉。

莱比特矿池(BTC.TOP)的算力将支持愿意投入更多算力和资金的一方,并帮助这一方,尽快结束算力战混乱的局面,恢复BCH区块链的秩序。

总结

1、生存是最终的辩论方式,是决定对错的最高依据。算力能杀死一条链,所以算力能成为比特币的最高仲裁机制。

2、通过 “51%空块攻击” 可以阻止一条链上打包确认任何交易,并且矿工无法挖到任何块后,也会逐渐停止挖矿,最后这条链就死了。

3、防御 “51%空块攻击” 需要坚守原链,调动更多的算力,挖一条比攻击者更长的链,反过来把攻击链覆盖回去。

4、防御者有挖矿产出作为 “防御抵扣优势”,攻击者的算力越大,则防御者的抵扣优势越小,攻击者需要的资金优势越小。反过来,攻击者的资金优势越大,则需要的算力越小。

5、比特大陆可调用BTC的算力用于BCH算力战,因此算力多于CSW。CSW必须有资金优势和更坚强的烧钱意志,才能胜利。

6、“算力游击战” 不能达到算力战的最终目的:杀死一条链。“算力游击战” 除了延长算力战时间,给生态造成破坏外,没有任何意义。

7、算力战后,若失败的一方认输,则算力战结束,存活链成为BCH。若失败的一方不认输(CSW继续打游击战,或者ABC改POW+POS算法),则BCH分裂为BCH和BSV两个币。

8、如果CSW坚持进行 “算力游击战”,则需要ABC开发组打补丁、矿池、交易所配合,消除影响。

共收到 0 条回复
aaron67 将本帖设为了精华贴 11月13日 14:48
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册