为什么从技术角度看ETH PoW分叉不够正统
0xTodd
0x17f3
August 9th, 2022

我看很多朋友经常混淆各种“分叉”,以及ETH PoW为什么从分叉角度是不太正统的。今天想科普个小概念。

区块链,顾名思义,就是很多个区块串成的链条。新的区块,永不停歇地接到老的区块之后。如果说,咱们现实世界以秒为单位计算时间,区块链上的世界,就以区块为最小单位计算时间。

世界上的分叉有两种:

  1. 因网络不同步而产生的分叉。
  2. 因版本有分歧而产生的分叉。

**先说第一种,因为网络问题而产生的分叉。**这是一个很常见的现象,每天都在发生。举个例子,当两个矿工几乎同时解开难题,打包出新的区块,那到底谁的块,是有资格接到老区块之后呢?分叉就自然而然产生了。

通常来说,矿工们会认为第一个算出来的是合法区块。但是,就怕两个矿工几乎同时算出来,比如相差几毫秒,再算上网络中广播的延迟。那么自然而然,就变成了两个集团。有人先收到了A区块,有人先收到了B区块。

同时收到新区块
同时收到新区块

为了解决这个问题,行业里有了“最长链原则”。它规定,如果区块链在某高度分叉了,那么就比谁的链更长,谁的区块就有意义,短的则被废弃。

如图所示,从分叉高度开始,两个矿工集团开始做算力竞赛,其他所有矿工都要选边站队。因为是暴力计算哈希,算力更强的一方,通常可以更快算出来。但是理论上,也存在弱的一方运气逆天,能够反超的。

算力竞赛
算力竞赛

赢家,赚走所有区块头奖励+手续费,输家什么也得不到,白白浪费了电力。

当然,ETH为了解决这个问题,专门设计了叔块。叔叔是爸爸的弟弟,但是叔叔没有儿子。它让输家也能拿一点点补偿,可以避免一些矿工死磕。

如果一方是恶意的,那就是51%攻击。如果两方都无恶意,那就是正常分叉。这也是交易所要求充值代币时,要等到若干个区块才给上账的原因。

那么,如图所示,最长的链就变成了主链,网络分叉的风波也就过去了。

赢家变成了正统主链
赢家变成了正统主链

那么再说说第二种,什么是因版本有分歧而产生的分叉。

理论上,ETH分叉过很多很多很多很多次,大多数都是因为系统的版本升级。凡是因为版本升级而产生的分叉,最长链原则都【不】适用。最长链原则只适用于解决网络同步问题。

这里会进一步分为硬分叉和软分叉。

由于升级而产生的硬分叉,如果全网都同意的话,不会诞生出新的分叉链。它其实是新链对旧链的完全取代。代表案例是以太坊的“伦敦升级”,美其名曰升级,其实是伦敦分叉。伦敦升级带来了EIP-1559(手续费燃烧),没有产生新的链。这就好比,清基本继承明的版图,民国又继承了清的版图。

EIP1559是标准的硬分叉升级
EIP1559是标准的硬分叉升级

但是,如果社区对于版本升级没有达成共识,则会造成分裂。例如ETC分叉,ETC和ETH两条链彻底分家。前者是没有因黑客而回滚的版本,后者则是有的版本。两者版本有分歧,互不认可。这类似于朝鲜和韩国,过去曾是一个国家,但如今已经完全变成两个国家,互不认可。

ETC和ETC同时存在,互不干扰
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 同一高度分叉呢?答案司马昭之心,路人皆知。

有人可能会问,Todd你把这些东西厘这么清干什么呢?我是觉得其实每一条链都是一个国家。你生活一个国家,务必要搞清它的正统性和制度。既然忝用0x开头,作为ETH世界的公民,自然是要刨根问底的。

共识,决定一个链的天花板高低,失去了正统性,也就失去了很多的共识。

Subscribe to 0xTodd
Receive new entries directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.