从技术角度看为什么ETH PoW分叉不够正统
来源:0xTodd
我看很多朋友经常混淆各种“分叉”,以及 ETH PoW为什么从分叉角度是不太正统的。今天想科普个小概念。
区块链,顾名思义,就是很多个区块串成的链条。新的区块,永不停歇地接到老的区块之后。如果说,咱们现实世界以秒为单位计算时间,区块链上的世界,就以区块为最小单位计算时间。
世界上的分叉有两种:
-
因网络不同步而产生的分叉。
-
因版本有分歧而产生的分叉。
先说第一种,因为网络问题而产生的分叉。这是一个很常见的现象,每天都在发生。举个例子,当两个矿工几乎同时解开难题,打包出新的区块,那到底谁的块,是有资格接到老区块之后呢?分叉就自然而然产生了。
通常来说,矿工们会认为第一个算出来的是合法区块。但是,就怕两个矿工几乎同时算出来,比如相差几毫秒,再算上网络中广播的延迟。那么自然而然,就变成了两个集团。有人先收到了A区块,有人先收到了B区块。
同时收到新区块
为了解决这个问题,行业里有了“最长链原则”。它规定,如果区块链在某高度分叉了,那么就比谁的链更长,谁的区块就有意义,短的则被废弃。
如图所示,从分叉高度开始,两个矿工集团开始做算力竞赛,其他所有矿工都要选边站队。因为是暴力计算哈希,算力更强的一方,通常可以更快算出来。但是理论上,也存在弱的一方运气逆天,能够反超的。
算力竞赛
赢家,赚走所有区块头奖励+手续费,输家什么也得不到,白白浪费了电力。
当然,ETH为了解决这个问题,专门设计了叔块。叔叔是爸爸的弟弟,但是叔叔没有儿子。它让输家也能拿一点点补偿,可以避免一些矿工死磕。
如果一方是恶意的,那就是51%攻击。如果两方都无恶意,那就是正常分叉。这也是交易所要求充值代币时,要等到若干个区块才给上账的原因。
那么,如图所示,最长的链就变成了主链,网络分叉的风波也就过去了。
赢家变成了正统主链
那么再说说第二种,什么是因版本有分歧而产生的分叉。
理论上,ETH分叉过很多很多很多很多次,大多数都是因为系统的版本升级。凡是因为版本升级而产生的分叉,最长链原则都【不】适用。最长链原则只适用于解决网络同步问题。
这里会进一步分为硬分叉和软分叉。
由于升级而产生的硬分叉,如果全网都同意的话,不会诞生出新的分叉链。它其实是新链对旧链的完全取代。代表案例是以太坊的“伦敦升级”,美其名曰升级,其实是伦敦分叉。伦敦升级带来了EIP-1559(手续费燃烧),没有产生新的链。这就好比,清基本继承明的版图,民国又继承了清的版图。
EIP1559是标准的硬分叉升级
但是,如果社区对于版本升级没有达成共识,则会造成分裂。例如ETC分叉,ETC和ETH两条链彻底分家。前者是没有因黑客而回滚的版本,后者则是有的版本。两者版本有分歧,互不认可。这类似于朝鲜和韩国,过去曾是一个国家,但如今已经完全变成两个国家,互不认可。
ETC和ETC同时存在,互不干扰
所以,硬分叉有风险,并不能保证每次都全网皆同意。所以,比特币的世界比较喜欢软分叉,这样的风险会小的多。
什么是软分叉?就是虽然版本有变化,但是属于可升、可不升,大家仍然在一个网络当中。大家都知道美国各州有自己的法律,只不过都遵循美国的宪法。软分叉就好比美国某一个州推出了新的法规,那么不必全国采用,也不会造成分裂。
比特币最著名的软分叉是segwit隔离见证,它可以将见证人信息拿掉一部分以节约比特币的区块空间,不破坏1MB,又不影响安全性。如图所示,如果你认可隔离见证,那么你可以升级,如果你不认可,也可以不升级。不同版本客户端虽有分歧,但仍能一起挖矿。
软分叉:新老版本可以共存
软分叉非常在意“向前兼容”这个问题,而硬分叉没有办法“向前兼容”。所以,你能看到,比特币的改革“似乎”幅度很小,而以太坊的改革都是大刀阔斧。因为软分叉非常考验核心开发者的智慧。
做软件开发的朋友可能深有体会,想上新特性,又想让老版本继续用,是一件多么困难的事。这是带着脚镣跳舞,想要设计两全其美方案非常困难。但是比特币做到了,用了很多政治权衡和开发智慧,每一次软分叉设计都很精妙,让人赞叹。
原因是,比特币是一个“财政政策”绝对稳定的公链。这种感觉是给人非常安心的,比特币在方面追求极致。再过10年甚至100年,比特币和今天不会有什么大区别,就像真正的黄金。未来100年,美元可能会消失,但黄金不会。
而以太坊这边,V神还活着,并且以太坊不追求极致的安全,而追求突破不可能三角,因此每次都在冒着风险做硬分叉升级。要知道,硬分叉容易造成社区的分裂。昔日的ETC,今日的ETH PoW。
按照以前的经验,如图所示,PoS Merge本应该是一次和之前类似的硬分叉升级,本不会诞生新的链,直接继承原来的版本。同时,之前也从来没人问过USDT和USDC的归属。
原来是一次技术升级
但是ETHPoW团队,决心在PoS Merge的同一高度,再搞一次硬分叉升级。这次升级摘除了难度炸弹等等。这里指出大家一个常见的错误:ETH PoW这个分叉并不是ETH的原始PoW链,很多人误以为如下图所示,一个直行,一个左转。
如果这样,ETH PoW的正统性是无容置疑的。
经常被误以为的情况
然而,ETH的原始PoW链,应该是有难度炸弹的那条链,也就是“不升级客户端”的PoW链。而 PoS ETH则是一个“升级了客户端”的新链。而ETH PoW其实,也是一条“升级了客户端”的链!所以,实际情况如下图所示才对,一个左转,一个右转,没人直行。
真实的状况,一个向左,一个向右,没人直行
所以,实际情况是:ETH PoS和ETH PoW其实都是硬分叉产生的新链,只不过恰好在同一高度罢了,而真正的ETH PoW原链则会因为难度炸弹而消亡。
所以ETH PoW 在正统性方面也是较弱的。换句话说,如果它今天就分叉,不和PoS Merge选择同一高度,也是完全可以的。那它为什么非要选择和PoS ETH 同一高度分叉呢?答案司马昭之心,路人皆知。