江卓尔:算力战的瓶颈不是算力,而是双方愿意烧掉的资金
一、为什么算力能成为比特币的最高仲裁机制?
答案很简单: 因为算力能杀死一条链 。
这是一条最底层的规则: 生存是最终的辩论方式,是决定对错的最高依据。 这条规则有很多种表述方法,例如“胜王败寇”, “真理只在大炮的射程之内”,“暴力是决定所有规则的元规则”。
为什么无神论(科学论)是对的?是因为无神论能辩过有神论吗?当然不是,无神论和有神论两边的逻辑基础都不一致,辩起来就是鸡同鸭讲。 无神论是对的,不是因为无神论更 “有理”,而是因为无神论能造出枪 。
我能造出枪消灭你, 你都不存在了,你还有什么资格讨论对错吗 ?
所以, 生存是最终的辩论方式,是决定对错的最高依据 。为什么我支持 “演化论” 而不是 “稳定论” ?因为 “演化论” 以适应市场需求,增加用户数为唯一目的,而 “稳定论” 不以此为最高目的。
当然,“稳定论” 会认为,我的链协议稳定,所以用户会选择我,
但如果不是呢?如果两者矛盾呢?
如果根据市场需要,增加像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升级链。
5.1、CSW方的算力:
支持CSW的矿池(Coingeek,svpool,BMG等)目前展示出来的算力为2000-3000P左右,CSW声称还有隐藏算力,因此可认为 CSW至少有3000P 自有 算力 。
CSW还可以通过租赁方式,控制更多算力,例如和矿池、大矿场谈算力租赁,或者从nicehash等算力平台上租赁算力,只要愿意给出溢价(例如+20%挖矿收益), CSW自有+租赁算力到1万P,难度不大 。
5.2、比特大陆方的算力:
比特大陆旗下的矿池(BTC.com和Antpool)合计拥有约15000P的算力,再加上比特大陆参股的ViaBTC矿池,共计拥有约20000P的算力。
由于BTC和BCH均使用sha256算法挖矿,所以矿池在技术上,可以在BTC和BCH上来回秒切算力。只要正常给矿工按算力付挖矿产出的BTC,矿工实际上并不关心实际挖的是什么币。矿工甚至不知道自己挖的是什么币,只是解答矿池下发的计算任务。因此
比特大陆如果愿意,可以使用所有20000万P的BTC算力,来BCH上做防御
,之前出现各种传闻,例如比特大陆在新疆部署9万台矿机用于算力战等,均为无意义的谣言。
比特大陆使用BTC算力进行算力战,符合 “生存是最终的辩论方式” 的算力战原则
。
由于比特大陆正处于上市中的关键阶段, CSW威胁称,若比特大陆使用BTC算力来进行算力战,他将通过诉讼方式攻击比特大陆 。但这一做法意义不大,因为比特大陆基本上不需要使用全部20000P算力应战,若使用部分算力,比特大陆可声明使用自有算力(或合作伙伴算力),其余(正常获得支付BTC)的矿工既没有动机起诉,也难以确认自己挖的是什么币。
5.3、双方的资金:
虽然比特大陆方算力基本可以肯定比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投入的算力多少,将决定双方的烧钱比例。
6.1、如果CSW投入7000P 算力 (两倍BCH正常算力)
如第四章中所述, 攻击方不管胜负,必然损失攻击成本,而防御方有防守优势,如果获胜还可以获得挖矿收入作为补偿 。因此,若比特大陆也投入7000P算力进行防御,并最终获胜,那可以得到BCH期间挖出的BCH作为补偿(相当于3500P算力的成本)。
也就是说,在算力战烧钱时,比特大陆投入7000P算力防御,但其中只有3500P需要烧钱,剩下3500P将获得正常挖矿产出(虽然暂时无法兑现),而CSW的7000P算力全部都需要烧钱。
因此, CSW投入的算力越少,比特大陆的 “防御抵扣优势” 越大 ,例如各自投入5000P时,比特大陆1500P烧钱 vs CSW 5000P烧钱,因此比特大陆坚持到底的决心也必然越大。
6.2、如果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按照之前声称,全力进行算力战,那算力战将以极快的速度烧钱,并不会持续很长时间 。
6.3、总结: 算力战的胜负,取决于算力和资金的综合影响。 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开发组打补丁、矿池、交易所配合,消除影响。