扩容之争发展到现在,已经变成了一个其乱无比的毛线团,各派的意见和利益缠绕在一起,让人难以看清事件的本质。本文的目的,是将软硬分叉之争这条和扩容无关的支线彻底剔除出扩容之争,还扩容之争以本来面目。
简单地说,扩容是目的,软硬分叉是手段,扩容并不一定要通过硬分叉来完成,完全可以通过软分叉的方法来完成扩容,反对硬分叉≠反对扩容。
不信?软分叉也能扩容?被Core灌输了太久“扩容=硬分叉=币分裂=危险”?让我们来看看软硬分叉的本质。
简单地说,旧节点是否接受新区块,是软硬分叉的本质不同。软分叉因为规则范围是缩小的,所以旧节点自然会接受新区块。
但这个定义是不完备的,定义里并没有讨论规则以外的变化,例如Core开发组在隔离见证(SW)分叉中,将交易的签名数据从原有区块数据结构中取出,放在一个新的,旧节点读不到的数据结构中。简单说就是在规则外,放了一些旧节点读不到的数据,那这个分叉还是软分叉吗?按目前业内态度和Core定义,这也是软分叉——因为旧节点被欺骗接受了新区块。
然后再看硬分叉,eth在DAO被盗事件后,硬分叉失败,分出了两个币,导致很多人变成对硬分叉畏之如虎,甚至开始称赞Core的“高明远见”,还真是让人有点哭笑不得。
eth硬分叉失败,很大程度上是因为分叉执行上的失误——没有考虑对小分叉的处理。eth在争议中决定分叉,先是决定软分叉,之后因软分叉的复杂性(最后被发现有BUG),在最后几天仓促转用硬分叉。eth社区也不像BTC社区这样成熟,以至于根本就没考虑对小分叉的处理。
一开始eth硬分叉看似一切顺利,原链也几乎没剩下多少算力,但之后Poloniex交易所出人意料地上线原链(etc币),原链支持者和投机资金大量涌入,抬高了etc价格,并进而吸引矿工回来挖收益更高的etc,最终导致小分叉原链有足够的算力继续生存,eth硬分叉失败。
那正确的硬分叉姿势应该是怎样呢?
“基于实施”很简单,早在7月4日我就发过一篇文章《呼吁蚁池承诺作废25%以下分叉,维护比特币统一》,建议对小分叉发起51%攻击(不打包任何交易,并孤立作废任何含有交易的区块),确保小分叉上无法进行任何交易,从而杀死小分叉。
“基于实施”的优点是不需要在代码上做改动,缺点是人为实施可能存在变数。“基于实施”在eth硬分叉发生前是可行的,但eth硬分叉失败后,可以预测如果BTC硬分叉,必然会出现大量投机分子在算力和价格上支持原链,给人为实施增加更大的变数,因此从目前情况看,“基于代码”显得更为稳妥。
安全硬分叉可以保证在75%算力分叉后,彻底杀死小分叉。当然这时候肯定有人会表示抗议:“你凭什么杀死小分叉?既然有人支持,为什么不放小分叉一条生路,让他自己发展?”“你这是多数派裹挟少数派,是邪恶的!是不正义的!”。
嗯嗯多数派裹挟少数派这个帽子太大,讨论起来又得一篇文章,我们就说实际情况:软分叉之所以“安全”,靠的就是多数派裹挟少数派。
大家都知道软分叉有个激活阀值,比如90%算力激活,那激活后剩下的10%算力会发生什么呢?举例说从1M缩容到0.5M的软分叉,90%算力挖出的0.5M块会被10%算力接受,10%算力会在90%算力挖出的块链上继续挖。但反过来,10%算力挖出的1M块会被90%算力认为是无效块(规则范围缩小到0.5M),10%算力挖出的任何块都会被孤立作废,这在技术和本质上都是90%算力对10%算力发起的攻击。
因此,指责多数派裹挟少数派么?那比特币不要进行任何升级好了。进一步从逻辑上来说,任何规则改变(不管是规则范围扩大还是缩小),都不可能有100%一致,是选分裂成两条链的硬分叉呢?还是选裹挟少数派的软分叉呢?:)
更有意思的是,安全硬分叉和软分叉之所以在裹挟少数派上完全一致,是因为安全硬分叉从定义上来说,和软分叉完全一致,安全硬分叉就是软分叉。
准确地说,安全硬分叉是硬分叉和软分叉的一个交集,既有软分叉不分裂的优点,又有硬分叉不留技术债务,彻底升级的优点。
众所周知向前兼容是有代价的,所有网页开发者都痛恨的IE6就是一个典型的例子。软分叉要向前兼容,甚至像Core的隔离见证(SW)软分叉那样,靠欺骗旧节点来完成向前兼容,存在着巨大的技术风险。
对非技术人士打个不是很准确的比方,Core要在底层数据结构已经改变的情况下,还欺骗旧节点,让旧节点看起来好像一切都没变,其难度相当于造出图上那只扭曲的手,其技术风险,和以后将背上的技术债务不言而喻,以后要在这只扭曲的手上做进一步开发,难度可想而知。
为什么Core开发会说“隔离见证软分叉几乎修改了比特币的每一行代码”?
为什么根据香港圆桌会议,应该在2016年4月发布,7月上线的隔离见证软分叉,在共识协议和矿工矿池的巨大压力下,到现在10月份还没影?
因为Core试图造出的,是图上那样一只扭曲的手。
而安全硬分叉就完全没有这样的技术风险,既不会导致分裂成两条链,又督促所有旧节点都必须升级(不升级无法进行任何交易),不必背上向前兼容的技术债务。
因此,让我们扩容归扩容,软硬分叉归软硬分叉。同意扩容但担心分裂的话,完全可以用软分叉(安全硬分叉)来完成扩容。不同意扩容的话,也可以集中讨论扩容到底有什么利弊,而不是“我反对硬分叉,所以我反对扩容”。
声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。