OKCoin

【彻底终结软硬分叉之争】安全硬分叉就是软分叉扩容

江卓尔 发布在 币圈子 4 1921

作者:莱比特矿池,江卓尔
利益相关:BTC/LTC矿池+矿工+屯币者

01 毛线团

扩容之争发展到现在,已经变成了一个其乱无比的毛线团,各派的意见和利益缠绕在一起,让人难以看清事件的本质。本文的目的,是将软硬分叉之争这条和扩容无关的支线彻底剔除出扩容之争,还扩容之争以本来面目。

简单地说,扩容是目的,软硬分叉是手段,扩容并不一定要通过硬分叉来完成,完全可以通过软分叉的方法来完成扩容,反对硬分叉≠反对扩容
不信?软分叉也能扩容?被Core灌输了太久“扩容=硬分叉=币分裂=危险”?让我们来看看软硬分叉的本质。

01

简单地说,旧节点是否接受新区块,是软硬分叉的本质不同。软分叉因为规则范围是缩小的,所以旧节点自然会接受新区块。

但这个定义是不完备的,定义里并没有讨论规则以外的变化,例如Core开发组在隔离见证(SW)分叉中,将交易的签名数据从原有区块数据结构中取出,放在一个新的,旧节点读不到的数据结构中。简单说就是在规则外,放了一些旧节点读不到的数据,那这个分叉还是软分叉吗?按目前业内态度和Core定义,这也是软分叉——因为旧节点被欺骗接受了新区块。

然后再看硬分叉,eth在DAO被盗事件后,硬分叉失败,分出了两个币,导致很多人变成对硬分叉畏之如虎,甚至开始称赞Core的“高明远见”,还真是让人有点哭笑不得。

eth硬分叉失败,很大程度上是因为分叉执行上的失误——没有考虑对小分叉的处理。eth在争议中决定分叉,先是决定软分叉,之后因软分叉的复杂性(最后被发现有BUG),在最后几天仓促转用硬分叉。eth社区也不像BTC社区这样成熟,以至于根本就没考虑对小分叉的处理。

一开始eth硬分叉看似一切顺利,原链也几乎没剩下多少算力,但之后Poloniex交易所出人意料地上线原链(etc币),原链支持者和投机资金大量涌入,抬高了etc价格,并进而吸引矿工回来挖收益更高的etc,最终导致小分叉原链有足够的算力继续生存,eth硬分叉失败。

那正确的硬分叉姿势应该是怎样呢?

02

“基于实施”很简单,早在7月4日我就发过一篇文章《呼吁蚁池承诺作废25%以下分叉,维护比特币统一》,建议对小分叉发起51%攻击(不打包任何交易,并孤立作废任何含有交易的区块),确保小分叉上无法进行任何交易,从而杀死小分叉

“基于实施”的优点是不需要在代码上做改动,缺点是人为实施可能存在变数。“基于实施”在eth硬分叉发生前是可行的,但eth硬分叉失败后,可以预测如果BTC硬分叉,必然会出现大量投机分子在算力和价格上支持原链,给人为实施增加更大的变数,因此从目前情况看,“基于代码”显得更为稳妥。

03

非技术人员可能看得不是很懂,我详细解释一下伪装法:
① 假设原来的区块交易数据是放在房间A(1M大小)里的,节点下载区块后,去房间A获取交易。
② 伪装法的新版客户端,另新加了一个旧客户端看不到的房间B(2M大小),把所有的交易都移到房间B放。
③ 升级后,还是一条链,没有出现新链旧链分叉的问题。
④ 新客户端可以正常地从房间B取交易。旧客户端能正常同步,但下载区块后,按规则去房间A取交易,发现房间A没有任何交易。
⑤ 也就是说,旧客户端如果不升级的话,看到的所有区块都将是空块,由此迫使旧客户端必须升级。

安全硬分叉可以保证在75%算力分叉后,彻底杀死小分叉。当然这时候肯定有人会表示抗议:“你凭什么杀死小分叉?既然有人支持,为什么不放小分叉一条生路,让他自己发展?”“你这是多数派裹挟少数派,是邪恶的!是不正义的!”。

嗯嗯多数派裹挟少数派这个帽子太大,讨论起来又得一篇文章,我们就说实际情况:软分叉之所以“安全”,靠的就是多数派裹挟少数派

大家都知道软分叉有个激活阀值,比如90%算力激活,那激活后剩下的10%算力会发生什么呢?举例说从1M缩容到0.5M的软分叉,90%算力挖出的0.5M块会被10%算力接受,10%算力会在90%算力挖出的块链上继续挖。但反过来,10%算力挖出的1M块会被90%算力认为是无效块(规则范围缩小到0.5M),10%算力挖出的任何块都会被孤立作废,这在技术和本质上都是90%算力对10%算力发起的攻击

因此,指责多数派裹挟少数派么?那比特币不要进行任何升级好了。进一步从逻辑上来说,任何规则改变(不管是规则范围扩大还是缩小),都不可能有100%一致,是选分裂成两条链的硬分叉呢?还是选裹挟少数派的软分叉呢?:)

更有意思的是,安全硬分叉和软分叉之所以在裹挟少数派上完全一致,是因为安全硬分叉从定义上来说,和软分叉完全一致,安全硬分叉就是软分叉。

04

准确地说,安全硬分叉是硬分叉和软分叉的一个交集,既有软分叉不分裂的优点,又有硬分叉不留技术债务,彻底升级的优点。
众所周知向前兼容是有代价的,所有网页开发者都痛恨的IE6就是一个典型的例子。软分叉要向前兼容,甚至像Core的隔离见证(SW)软分叉那样,靠欺骗旧节点来完成向前兼容,存在着巨大的技术风险。

05 扭曲的软分叉

对非技术人士打个不是很准确的比方,Core要在底层数据结构已经改变的情况下,还欺骗旧节点,让旧节点看起来好像一切都没变,其难度相当于造出图上那只扭曲的手,其技术风险,和以后将背上的技术债务不言而喻,以后要在这只扭曲的手上做进一步开发,难度可想而知。

为什么Core开发会说“隔离见证软分叉几乎修改了比特币的每一行代码”?
为什么根据香港圆桌会议,应该在2016年4月发布,7月上线的隔离见证软分叉,在共识协议和矿工矿池的巨大压力下,到现在10月份还没影?
因为Core试图造出的,是图上那样一只扭曲的手。

安全硬分叉就完全没有这样的技术风险,既不会导致分裂成两条链,又督促所有旧节点都必须升级(不升级无法进行任何交易),不必背上向前兼容的技术债务

因此,让我们扩容归扩容,软硬分叉归软硬分叉。同意扩容但担心分裂的话,完全可以用软分叉(安全硬分叉)来完成扩容。不同意扩容的话,也可以集中讨论扩容到底有什么利弊,而不是“我反对硬分叉,所以我反对扩容”。


 

扩容&牛市系列文章:

【基础科普】比特币能承载全人类的交易吗?
也谈4000元才是比特币牛市的开端

版权声明: by nc" sa 作者保留权利。文章为作者独立观点,不代表巴比特立场。
发文时比特币标准价格 买价:¥4350.00 卖价:¥4345.00

评论:4

您需要登录后才可以回复 登录|注册
    Author Image
    枫叶 54 天前

    这篇文章的作者对区块链一窍不通,巴比特怎么让发这样的文章
    如果可以建议矿工攻击原链,那为啥不直接建议所有矿工都支持分叉链,那问题就不存在了,矿工有自己的利益链,支配矿工行为的永远的收益激励
    双链法怎么个实现方法,首先这还要涉及矿工是否乐意,如果挖双链,需要同步两条链的数据吧,即便矿工乐意,分叉链的区块头又如何设计,目前只能应用的只有coinbase字段了,可别类比狗币和莱特的联合挖矿,那是狗币修改了规则乐意接受的……再说即便真搞出了联合挖矿,我更相信矿工通吃,而不是攻击
    所谓的伪装法就更离谱,现在的比特币链条如果不改动,已经可以永久运行下去了,任何规则的改动都是硬分叉,也是分家,原链上的所有交易,分叉前的或者分叉后的,都不存在隐藏看不到交易的说法,也许你会说可以增加一条隐藏的规则,问题是增加了这条规则就是硬分叉了呀

    +1
    +1
    我要点评
      Author Image
      开启的瓶盖300 54 天前

      文章都不让发了,难不成所有的文章都要让你审核一下在发!党员出身吧。

      +1
      +1
      我要点评
      Author Image
      漆园小吏 54 天前

      是这么个道理,看作者一本正经的态度真搞笑,可能是收钱写文

      +1
      +1
      我要点评
    Author Image
    wb_1844709502 55 天前

    我反对扩容!!!!你所指的扩容的巨大
    技术风险是指什么呢?

    +1
    +1
    我要点评