作者: 0xTodd ,Nothing Research 合夥人
原文: 《 為什麼從技術角度看ETHPoW 分叉不夠正統? 》
我看很多朋友經常混淆各種“分叉”,以及ETH PoW 為什麼從分叉角度是不太正統的。今天想科普個小概念。
區塊鏈,顧名思義,就是很多個區塊串成的鏈條。新的區塊,永不停歇地接到老的區塊之後。如果說,咱們現實世界以秒為單位計算時間,區塊鏈上的世界,就以區塊為最小單位計算時間。
世界上的分叉有兩種:
- 因網絡不同步而產生的分叉。
- 因版本有分歧而產生的分叉。
先說第一種,因為網絡問題而產生的分叉。這是一個很常見的現象,每天都在發生。舉個例子,當兩個礦工幾乎同時解開難題,打包出新的區塊,那到底誰的塊,是有資格接到老區塊之後呢?分叉就自然而然產生了。
通常來說,礦工們會認為第一個算出來的是合法區塊。但是,就怕兩個礦工幾乎同時算出來,比如相差幾毫秒,再算上網絡中廣播的延遲。那麼自然而然,就變成了兩個集團。有人先收到了A 區塊,有人先收到了B 區塊。
如圖所示,從分叉高度開始,兩個礦工集團開始做算力競賽,其他所有礦工都要選邊站隊。因為是暴力計算哈希,算力更強的一方,通常可以更快算出來。但是理論上,也存在弱的一方運氣逆天,能夠反超的。
贏家,賺走所有區塊頭獎勵+手續費,輸家甚麼也得不到,白白浪費了電力。
當然,ETH 為了解決這個問題,專門設計了叔塊。叔叔是爸爸的弟弟,但是叔叔沒有兒子。它讓輸家也能拿一點點補償,可以避免一些礦工死磕。
如果一方是惡意的,那就是51% 攻擊。如果兩方都無惡意,那就是正常分叉。這也是交易所要求充值代幣時,要等到若干個區塊才給上賬的原因。
那麼,如圖所示,最長的鏈就變成了主鏈,網絡分叉的風波也就過去了。
那麼再說說第二種,什麼是因版本有分歧而產生的分叉。
理論上,ETH 分叉過很多很多很多很多次,大多數都是因為系統的版本升級。凡是因為版本升級而產生的分叉,最長鏈原則都【不】適用。最長鏈原則只適用於解決網絡同步問題。
這裡會進一步分為硬分叉和軟分叉。
由於升級而產生的硬分叉,如果全網都同意的話,不會誕生出新的分叉鏈。它其實是新鏈對舊鏈的完全取代。代表案例是以太坊的“倫敦升級”,美其名曰升級,其實是倫敦分叉。倫敦升級帶來了EIP-1559(手續費燃燒),沒有產生新的鏈。這就好比,清基本繼承明的版圖,民國又繼承了清的版圖。
但是,如果社區對於版本升級沒有達成共識,則會造成分裂。例如ETC 分叉,ETC 和ETH 兩條鏈徹底分家。前者是沒有因黑客而回滾的版本,後者則是有的版本。兩者版本有分歧,互不認可。這類似於朝鮮和韓國,過去曾是一個國家,但如今已經完全變成兩個國家,互不認可。
所以,硬分叉有風險,並不能保證每次都全網皆同意。所以,比特幣的世界比較喜歡軟分叉,這樣的風險會小的多。
什麼是軟分叉?就是雖然版本有變化,但是屬於可升、可不升,大家仍然在一個網絡當中。大家都知道美國各州有自己的法律,只不過都遵循美國的憲法。軟分叉就好比美國某一個州推出了新的法規,那麼不必全國採用,也不會造成分裂。
比特幣最著名的軟分叉是segwit 隔離見證,它可以將見證人信息拿掉一部分以節約比特幣的區塊空間,不破壞1MB,又不影響安全性。如圖所示,如果你認可隔離見證,那麼你可以升級,如果你不認可,也可以不升級。不同版本客戶端雖有分歧,但仍能一起挖礦。
軟分叉非常在意“向前兼容” 這個問題,而硬分叉沒有辦法“向前兼容”。所以,你能看到,比特幣的改革“似乎” 幅度很小,而以太坊的改革都是大刀闊斧。因為軟分叉非常考驗核心開發者的智慧。
做軟件開發的朋友可能深有體會,想上新特性,又想讓老版本繼續用,是一件多麼困難的事。這是帶著腳鐐跳舞,想要設計兩全其美方案非常困難。但是比特幣做到了,用了很多政治權衡和開發智慧,每一次軟分叉設計都很精妙,讓人讚嘆。
原因是,比特幣是一個“財政政策” 絕對穩定的公鏈。這種感覺是給人非常安心的,比特幣在方面追求極致。再過10 年甚至100 年,比特幣和今天不會有什麼大區別,就像真正的黃金。未來100 年,美元可能會消失,但黃金不會。
而以太坊這邊,V 神還活著,並且以太坊不追求極致的安全,而追求突破不可能三角,因此每次都在冒著風險做硬分叉升級。要知道,硬分叉容易造成社區的分裂。昔日的ETC,今日的ETH PoW。
按照以前的經驗,如圖所示,PoS Merge 本應該是一次和之前類似的硬分叉升級,本不會誕生新的鏈,直接繼承原來的版本。同時,之前也從來沒人問過USDT 和USDC 的歸屬。
如果這樣,ETH PoW 的正統性是無容置疑的。
所以,實際情況是:ETH PoS 和ETH PoW 其實都是硬分叉產生的新鏈,只不過恰好在同一高度罷了,而真正的ETH PoW 原鏈則會因為難度炸彈而消亡。所以ETH PoW 在正統性方面也是較弱的。換句話說,如果它今天就分叉,不和PoS Merge 選擇同一高度,也是完全可以的。那它為什麼非要選擇和PoS ETH 同一高度分叉呢?答案司馬昭之心,路人皆知。
有人可能會問,Todd 你把這些東西厘這麼清幹什麼呢?我是覺得其實每一條鏈都是一個國家。你生活一個國家,務必要搞清它的正統性和製度。既然忝用0x 開頭,作為ETH 世界的公民,自然是要刨根問底的。
共識,決定一個鏈的天花板高低,失去了正統性,也就失去了很多的共識。