作者: 0xTodd ,Nothing Research 合夥人

原文: 為什麼從技術角度看ETHPoW 分叉不夠正統? 》

我看很多朋友經常混淆各種“分叉”,以及ETH PoW 為什麼從分叉角度是不太正統的。今天想科普個小概念。

區塊鏈,顧名思義,就是很多個區塊串成的鏈條。新的區塊,永不停歇地接到老的區塊之後。如果說,咱們現實世界以秒為單位計算時間,區塊鏈上的世界,就以區塊為最小單位計算時間。

世界上的分叉有兩種:

  1. 因網絡不同步而產生的分叉。
  2. 因版本有分歧而產生的分叉。

先說第一種,因為網絡問題而產生的分叉。這是一個很常見的現象,每天都在發生。舉個例子,當兩個礦工幾乎同時解開難題,打包出新的區塊,那到底誰的塊,是有資格接到老區塊之後呢?分叉就自然而然產生了。

通常來說,礦工們會認為第一個算出來的是合法區塊。但是,就怕兩個礦工幾乎同時算出來,比如相差幾毫秒,再算上網絡中廣播的延遲。那麼自然而然,就變成了兩個集團。有人先收到了A 區塊,有人先收到了B 區塊。

從技術層面分析ETHPoW分叉的正統性
同時收到新區塊
為了解決這個問題,行業裡有了“最長鏈原則”。它規定,如果區塊鏈在某高度分叉了,那麼就比誰的鏈更長,誰的區塊就有意義,短的則被廢棄。

如圖所示,從分叉高度開始,兩個礦工集團開始做算力競賽,其他所有礦工都要選邊站隊。因為是暴力計算哈希,算力更強的一方,通常可以更快算出來。但是理論上,也存在弱的一方運氣逆天,能夠反超的。

從技術層面分析ETHPoW分叉的正統性
算力競賽

贏家,賺走所有區塊頭獎勵+手續費,輸家甚麼也得不到,白白浪費了電力。

當然,ETH 為了解決這個問題,專門設計了叔塊。叔叔是爸爸的弟弟,但是叔叔沒有兒子。它讓輸家也能拿一點點補償,可以避免一些礦工死磕。

如果一方是惡意的,那就是51% 攻擊。如果兩方都無惡意,那就是正常分叉。這也是交易所要求充值代幣時,要等到若干個區塊才給上賬的原因。

那麼,如圖所示,最長的鏈就變成了主鏈,網絡分叉的風波也就過去了。

從技術層面分析ETHPoW分叉的正統性
贏家變成了正統主鏈

那麼再說說第二種,什麼是因版本有分歧而產生的分叉。

理論上,ETH 分叉過很多很多很多很多次,大多數都是因為系統的版本升級。凡是因為版本升級而產生的分叉,最長鏈原則都【不】適用。最長鏈原則只適用於解決網絡同步問題。

這裡會進一步分為硬分叉和軟分叉。

由於升級而產生的硬分叉,如果全網都同意的話,不會誕生出新的分叉鏈。它其實是新鏈對舊鏈的完全取代。代表案例是以太坊的“倫敦升級”,美其名曰升級,其實是倫敦分叉。倫敦升級帶來了EIP-1559(手續費燃燒),沒有產生新的鏈。這就好比,清基本繼承明的版圖,民國又繼承了清的版圖。

從技術層面分析ETHPoW分叉的正統性
EIP1559 是標準的硬分叉升級

但是,如果社區對於版本升級沒有達成共識,則會造成分裂。例如ETC 分叉,ETC 和ETH 兩條鏈徹底分家。前者是沒有因黑客而回滾的版本,後者則是有的版本。兩者版本有分歧,互不認可。這類似於朝鮮和韓國,過去曾是一個國家,但如今已經完全變成兩個國家,互不認可。

從技術層面分析ETHPoW分叉的正統性
ETC 和ETC 同時存在,互不干擾

所以,硬分叉有風險,並不能保證每次都全網皆同意。所以,比特幣的世界比較喜歡軟分叉,這樣的風險會小的多。

什麼是軟分叉?就是雖然版本有變化,但是屬於可升、可不升,大家仍然在一個網絡當中。大家都知道美國各州有自己的法律,只不過都遵循美國的憲法。軟分叉就好比美國某一個州推出了新的法規,那麼不必全國採用,也不會造成分裂。

比特幣最著名的軟分叉是segwit 隔離見證,它可以將見證人信息拿掉一部分以節約比特幣的區塊空間,不破壞1MB,又不影響安全性。如圖所示,如果你認可隔離見證,那麼你可以升級,如果你不認可,也可以不升級。不同版本客戶端雖有分歧,但仍能一起挖礦。

從技術層面分析ETHPoW分叉的正統性
軟分叉:新老版本可以共存

軟分叉非常在意“向前兼容” 這個問題,而硬分叉沒有辦法“向前兼容”。所以,你能看到,比特幣的改革“似乎” 幅度很小,而以太坊的改革都是大刀闊斧。因為軟分叉非常考驗核心開發者的智慧。

做軟件開發的朋友可能深有體會,想上新特性,又想讓老版本繼續用,是一件多麼困難的事。這是帶著腳鐐跳舞,想要設計兩全其美方案非常困難。但是比特幣做到了,用了很多政治權衡和開發智慧,每一次軟分叉設計都很精妙,讓人讚嘆。

原因是,比特幣是一個“財政政策” 絕對穩定的公鏈。這種感覺是給人非常安心的,比特幣在方面追求極致。再過10 年甚至100 年,比特幣和今天不會有什麼大區別,就像真正的黃金。未來100 年,美元可能會消失,但黃金不會。

而以太坊這邊,V 神還活著,並且以太坊不追求極致的安全,而追求突破不可能三角,因此每次都在冒著風險做硬分叉升級。要知道,硬分叉容易造成社區的分裂。昔日的ETC,今日的ETH PoW。

按照以前的經驗,如圖所示,PoS Merge 本應該是一次和之前類似的硬分叉升級,本不會誕生新的鏈,直接繼承原來的版本。同時,之前也從來沒人問過USDT 和USDC 的歸屬。

從技術層面分析ETHPoW分叉的正統性
原來是一次技術升級
但是ETHPoW 團隊,決心在PoS Merge 的同一高度,再搞一次硬分叉升級。這次升級摘除了難度炸彈等等。這裡指出大家一個常見的錯誤:ETH PoW 這個分叉並不是ETH 的原始PoW 鏈,很多人誤以為如下圖所示,一個直行,一個左轉。

如果這樣,ETH PoW 的正統性是無容置疑的。

從技術層面分析ETHPoW分叉的正統性
經常被誤以為的情況
然而,ETH 的原始PoW 鏈,應該是有難度炸彈的那條鏈,也就是“不升級客戶端” 的PoW 鏈。而PoS ETH 則是一個“升級了客戶端” 的新鏈。而ETH PoW 其實,也是一條“升級了客戶端” 的鏈!所以,實際情況如下圖所示才對,一個左轉,一個右轉,沒人直行。
從技術層面分析ETHPoW分叉的正統性
真實的狀況,一個向左,一個向右,沒人直行

所以,實際情況是:ETH PoS 和ETH PoW 其實都是硬分叉產生的新鏈,只不過恰好在同一高度罷了,而真正的ETH PoW 原鏈則會因為難度炸彈而消亡。所以ETH PoW 在正統性方面也是較弱的。換句話說,如果它今天就分叉,不和PoS Merge 選擇同一高度,也是完全可以的。那它為什麼非要選擇和PoS ETH 同一高度分叉呢?答案司馬昭之心,路人皆知。

有人可能會問,Todd 你把這些東西厘這麼清幹什麼呢?我是覺得其實每一條鏈都是一個國家。你生活一個國家,務必要搞清它的正統性和製度。既然忝用0x 開頭,作為ETH 世界的公民,自然是要刨根問底的。

共識,決定一個鏈的天花板高低,失去了正統性,也就失去了很多的共識。