原文标题:《为什么从技术角度看 ETH PoW 分叉不够正统》
原文作者: @0xTodd, Nothing Research 合伙人
我看很多朋友经常混淆各种「分叉」,以及 ETH PoW 为什么从分叉角度是不太正统的。今天想科普个小概念。
区块链,顾名思义,就是很多个区块串成的链条。新的区块,永不停歇地接到老的区块之后。如果说,咱们现实世界以秒为单位计算时间,区块链上的世界,就以区块为最小单位计算时间。
世界上的分叉有两种:
1、因网络不同步而产生的分叉。
2、因版本有分歧而产生的分叉。
先说第一种,因为网络问题而产生的分叉。这是一个很常见的现象,每天都在发生。举个例子,当两个矿工几乎同时解开难题,打包出新的区块,那到底谁的块,是有资格接到老区块之后呢?分叉就自然而然产生了。
通常来说,矿工们会认为第一个算出来的是合法区块。但是,就怕两个矿工几乎同时算出来,比如相差几毫秒,再算上网络中广播的延迟。那么自然而然,就变成了两个集团。有人先收到了 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 同一高度分叉呢?答案司马昭之心,路人皆知。
有人可能会问,Todd 你把这些东西厘这么清干什么呢?我是觉得其实每一条链都是一个国家。你生活一个国家,务必要搞清它的正统性和制度。既然忝用 0x 开头,作为 ETH 世界的公民,自然是要刨根问底的。
共识,决定一个链的天花板高低,失去了正统性,也就失去了很多的共识。