我查阅了很多关于“硬分叉”的说明:比较统一的解释是硬分叉是向后兼容的分叉,新协议不再兼容旧矿机,导致新协议下的区块无法获得旧矿机的共识,然后会导致新旧矿机无法达成共识进而分道扬镳。
对于这样的技术解释,尽管新协议不兼容旧矿机(比如新协议区块大小提升至 8MB),但是由于向后兼容,所以新矿机是可以接纳旧区块的,这是否说明 BCH 矿机是可以对 BTC 协议的区块达成共识的?那这样对于新链 BCH,想保证其能够存活的条件就是新链 BCH 长度始终大于旧链 BTC,否则新矿机会转向旧链挖矿。
这是我对硬分叉向后兼容性的理解,不知道我的理解是否正确,因为我查阅很多资料没见过有人提到“ BCH 不再是最长链,他会被自然销毁”这样的情况,所以我开始质疑自己是否理解错误。BCH 是否做了一些其他措施导致其不是严格定义下的“向后兼容”?还是说 BCH 这个风险客观存在,但是通过其新的挖矿难度调整算法规避了?
感谢各位!
1
Laforet 2018-03-28 16:46:54 +08:00
BCH 区块头里加入了 SIGHASH_FORKID 这个值,用来实现双向的重放保护。
现在 BTC 和 BCH 除了共享部分历史区块数据之外是互不兼容的,也不存在共识。任何一条链只要还有 1 个节点在挖就不会消亡。 |
3
Laforet 2018-03-31 08:02:45 +08:00
|
4
acess 2018-06-21 16:02:32 +08:00
BCH 不是因为“长”才存在的。
首先,节点接受一条链的时候,要用自己的规则对区块进行验证,不符合规则的区块节点不会接受,并不是某条链长就一定会被接受。 其次,比特币白皮书里的最长链规则其实是一个错误。算力和难度都是一直在涨的。如果真的只认最长链,那攻击者直接用创世时的最低难度挖,分分钟就爆出比主链更长的假链了。 很早的时候就有人提出这个问题,中本聪就修正了这个漏洞,改成跟随积累工作量最多的链,而不是最长链。 关于软分叉和硬分叉,推荐你看看这篇文章: http://www.8btc.com/bitcoin-softfork-and-hardfork BCH 刚分叉出来的时候,算力支持很少,就改了难度调整算法来“保命”,也就是传说中的 EDA ——大体上就是长时间不出块就让难度暴降,降到一定程度,挖 BCH 就比 BTC 更有利可图,这样就可以吸引矿工过来挖。然后,这个机制就被矿工玩坏了(而且还被怀疑是有意为之,是个 feature 而不是 bug ),有时几个小时才出一个块,有时 1 分钟出一个块、几天时间就刷掉 2015 个块(本来应该是两周才能挖完的),也就是“算力暴击”。最疯狂的时候,七八成算力都从 BTC 叛逃去挖 BCH 了,但是刷完 2015 个块之后,BCH 难度暴增,矿工就又跑回来了。 BCH 就是在 EDA 的加持(以及大矿工的有意操纵)下,才搞出比 BTC 更长的链的。实际上积累工作量仍然是 BTC 更多,而且,即使 BCH 链积累的工作量超过 BTC,BTC 也不会被覆盖的。 当时有很多说法在流传……比如,认为“暴击”的时候可以让 BTC 拥堵加剧、用户恐慌抛售、陷入恶性循环,从而让 BCH 有机会杀死 BTC 而上位;或者,就是认为“暴击”不过是国内大矿工基团造势已久的市场操纵行为,是一次拉高出货骗局。 |