BCH硬分叉开始后,BCHABC与BCHSV的算力战也就正式开始了,双方都通过补贴(或亏损)的方式调动矿机算力。然而结果并没有如预期出现谁战胜谁的情况,而是区块链高度增长拉不开绝对距离,这让吃瓜群众大为扫兴。这也是我写这篇文章的原因。
其实,BCHABC的算力优势一直保持优先:
从分叉后,累计工作量计算,BCHABC领先了38.5%:
然而,在算力领先的情况下,BCHABC的区块高度并没有出现领先,截止北京时间11月20日19时左右,BCHABC仅仅领先2个区块,刚才有一段时间还是BCHSV反超1个区块。
貌似算力投票规则失败了,这是什么原因呢?
还是那句话:出来混总是要还的!这个原因还是要从BCH在2017年的分叉说起,所谓聪明反被聪明误。
大家都知道,BTC的挖矿难度2016个区块(大概14天左右)调整一次,以维持约10分钟左右的出块速度。其中,还有一个重要功效是:硬分叉算力投票时,小算力的分叉出块速度很慢,要等到2016个区块后才能调整难度再正常出块,而这个过程可能需要大几个月甚至几年,矿工往往无法坚持,由于利益驱动算力会越来越小,这样小算力分叉就会死掉,就达到了算力投票的效果。
这个作用就发生在了BCH分叉的时候,BCH如果不修改难度调整算法,当时分叉可能失败。所以当时就出现了一种叫做EDA(Emergency Difficulty Adjustment,紧密难度调整)的算法,即:无论何时矿工需要12个小时只能找到6个区块或更少,采矿难度会减少20%。这样难度就能迅速调整,BCH也就活过来了。
很快,聪明的矿工就发现了EDA的漏洞。矿工在BCH算力低时,突然调动BTC的算力过来挖BCH,BCH需要72小时才能完成难度调整(这个过程矿工将获得更多收益),难度调整到位后再把算力撤走,此后72小时BCH难度又会下降(这个过程挖矿收益会打折)。这样如此往复,BCH就被矿工调戏了,更严重的时,导致BCH整体出块速度加快,最快时达到了恐怖的1-2分钟。从2017年8月1日到17年11月12日,短短100天时间,BCH领先了将近10000个块!出块速度快60%。
在2017年11月13日,BCH不得不再次硬分叉,将难度调整算法修改为DAA(difficulty adjustment algorithm),即:根据已完成的工作量和前144个块的耗用时间,每个块都会调整难度,同时避免了突然的难度下降及峰值,目标是维持BCH的出块间隔在10分钟左右。这样貌似问题解决了,但是BCH仍然暴露了DAA算法的致命缺陷:任何分叉链很容易存活,最长链原则荡然无存。
按照DAA的算法,每块都在调整挖矿难度,所以小算力分叉链能很快适应算力变化,而且能调整为出块间隔仍然接近10分钟。这就是前文所说的BCHSV算力明显落后BCHABC,但是区块高度仍然能追上的根本原因!
通过计算可以证明,算力上下大幅波动才是对出块速度是不利的,这会浪费部分算力。而算力平稳波动(特别是平稳增加)对出块速度有利。但这种优势都不是绝对的,BCH的分叉链只要能挺着出块60个以上,都能存活,区块高度不会落后太多,和算力绝对值无关!
所以说,BCH之前的分叉埋下了一个大地雷,破坏了区块链最长链原则的有效性。一个号称坚持中本聪理念的BCH,本质上却是破坏了最核心的中本聪关于区块链的思想,确实有点讽刺。闹剧过后,恰恰是再一次证明了BTC的伟大。