編者註:原文發表於2019 年5 月13 號。初版譯本在此處。修改很少,增補了最近幾次硬分叉的信息。

縱觀全局,區塊鏈技術出現的時間並不久。儘管區塊鏈相關的基本概念(密碼學、去中心化、點對點網絡和交易)已經被研究了數十年,但直到2008 年比特幣誕生之後,人們才相信這些概念確實可以組合到一起、創造出可用的產品。尤其是以太坊,直到2015 年才以一種公開的、可用的面貌出現在人們的視野中。儘管預期的發展時間線和具體細節有所變化,以太坊仍堅持按照計劃推進,不斷升級協議,以確保提升可用性、安全性、功能性以及去中心化程度。

隨著今年2 月君士坦丁堡升級的完成,以太坊也就踩在了Serenity(也被稱為以太坊2.0)階段的門檻上,只待再經過一系列硬分叉和階段性升級(包括“以太坊1.x”)便可實現。然而,為了更好地理解以太坊2.0 的目標,我們先要回望一下當初是從何處啟航。這裡提供了一份以太坊大事記,回顧了以太坊歷史上重要的計劃內(外)的硬分叉和升級,為下一階段的發展做準備。

Olympic | 2015 年5 月9 日

以太坊區塊鏈於2015 年7 月正式公開上線。而在這之前的臨門一腳是Olympic——第9 個也是最後一個開放的測試網,用以進行概念驗證(PoC),讓開發者預先探索以太坊區塊鏈發布後的運行情況。 Vitalik 宣布將發放共計25000 枚ETH 來獎勵對網絡進行壓力測試的開發者們。測試要求很明確:嘗試讓網絡超負荷,並“瘋狂操作網絡狀態”,從而了解協議將如何處理流量過高的情況。開發者需要測試四個方面:交易動作、虛擬機運行、挖礦機制以及一般懲罰機制。

Frontier | 2015 年7 月30 日

經過幾個月的壓力測試後,以太坊網絡已經做好了進正式主網發布的準備。 7 月20 日,以太坊的創世塊被挖出,社區開始逐漸擴大。在Frontier 發布前幾個月,Vinay Gupta 發表了一份說明,闡述了以太坊的發布過程。慷慨激昂的陳詞中不乏對以太坊潛在用戶的警示,Gupta 表示Frontier 是“最原始形態” 的以太坊,開發者們應當謹慎行事。就在Frontier 發布的前幾天, Stephen Taul 也像Gupta 一樣對開發者發出了提醒:“與美國拓荒潮期間那些勇敢的開拓者們一樣,以太坊社區的參與者將發現巨大的機會,同時也將面臨許多挑戰。”

Frontier 協議包含以下幾個關鍵特性:

區塊獎勵:當礦工們在以太坊區塊鏈上成功挖到一個區塊時,他們將收到以ETH 發放的獎勵。在Frontier 階段,礦工的區塊獎勵是每區塊5 ETH。 Gas:在Frontier 發布後的初期,每個區塊的Gas 上限被硬編碼為5000 gas。說白了,這就意味著網絡上不會有什麼大動作。這樣就留出了一段緩衝期,以便礦工開始在以太坊上工作,並讓早期用戶安裝客戶端。幾天后,該Gas 上限自動解除,網絡可以按照計劃開始處理交易和智能合約。 Canary 合約:Canary 合約被納入了Frontier ,用以告知用戶哪些鏈已遭受或易遭受攻擊。 Canary 合約被會賦予0 或1 的值。如果合約被賦值1,客戶端就能識別出這是一條出錯的鏈,並在挖礦時避開這條無效鏈。本質上來說,Canary 合約的這些功能使得以太坊核心開發團隊在網絡出現問題時能夠暫停網絡的運行。在以太坊早期階段,Canary 合約是一個極度中心化卻又不可或缺的保護機制。可用性:所有開發者的操作均通過命令行來執行,因為沒有圖形用戶界面。整個網絡是可用的,但用戶界面非常粗糙,只有熟悉以太坊並具備操作經驗的人才有能力使用。

Homestead | 2016 年3 月14 日

Homestead 升級是以太坊網絡的第一個硬分叉計劃,於2016 年3 月14 日在第1,150,000 個區塊上開始實施。總的來說,Homestead 升級主要包括對以太坊的三大重要改進措施。首先,它移除了Canary 合約,去除了網絡中的中心化部分。其次,它在以太坊的合約編程語言Solidity 中引入了新代碼。最後,它引入了Mist 錢包,讓用戶能持有/交易ETH 並編寫/部署智能合約。

Homestead 升級是最早實施的以太坊改進提案(EIP)之一。 EIP 指的是向社區提出的建議,一旦它們得到認可,就會被納入網絡升級中。 Homestead 升級包含三個EIP:

EIP-2:Homestead 核心升級

EIP 2.1:將通過交易創建智能合約的成本從21000 Gas 提高到53000 Gas。之前,通過合約來創建合約(推薦辦法)的成本比通過交易創建合約的成本更高。由於通過交易創建合約的gas 成本提高,EIP 2.1 激勵用戶重新採用通過合約來創建合約的方法。

EIP 2.2:“所有s 值大於secp256k1n/2 的交易簽名被視為無效。預編譯的ECDSA 復原合約保持不變並接受較高的s 值;在有合約需要恢復舊的比特幣簽名之類的情況下,這一功能就派上用場了。” [來源]

EIP 2.3:明確規定了,如果一個合約沒有收到足夠的Gas 來完成整個操作過程,合約創建將會“失敗”,而非創建一個空白合約,使得交易可能的輸出結果由原來的[成功]、 [失敗] 或[空] 變為[成功] 或[失敗]。

EIP 2.4:取消了對用戶創建難度值較高的區塊的激勵,從而提高了網絡挖到區塊的概率。這一升級將出塊時間穩定在10 秒到20 秒,並將整個網絡恢復到大約15 秒的目標出塊時間。

EIP-7

“在0xf4 中新增了一個操作碼,DELEGATECALL。該操作碼與CALLCODE 類似,不同之處在於它將發送方和數值從父作用域發送到子作用域,也就是說,被創建的調用與原始調用擁有相同的發送方和數值。”

EIP-8:面向未來的升級

EIP-8 是一項著眼於未來的網絡升級計劃改進提案。這一改進確保以太坊網絡上所有的客戶端軟件都能適應未來的網絡協議升級。

DAO 分叉| 2016 年7 月20 日

除了計劃內的以太坊升級和硬分叉之外,還有一次計劃外的DAO 事件值得被銘記。在2016 年,一個

名為The DAO 的去中心化自治組織

通過代幣發售籌集了1.5 億美元資金。在6 月,The DAO 被黑客攻擊,有價值5000 萬美元的ETH 被一位不知名的黑客劫走。以太坊社區的大多數參與者決定實行硬分叉,恢復錢包中被盜的ETH 並修補漏洞。然而,硬分叉沒有得到社區內所有參與者的一致認可,還有部分參與者繼續在那條 原始 鏈上挖礦並交易。未恢復被盜ETH 的 原始 鏈被稱為

以太經典(ETC)久而久之,其安全性逐漸降低,挖礦難度也在下降

。社區的大部分參與者以及核心開發者則繼續在分叉鏈上工作—— 被竊的ETH 回到了它們原本的持有者手中—— 這就是我們現在熟知的以太坊區塊鏈。

大都會:拜占庭分叉| 2017 年10 月16 日

以太坊路線圖的下一步被稱為大都會(Metropolis),它將分為兩個階段進行:拜占庭(Byzantium)和君士坦丁堡(Constantinople)。拜占庭分叉於2017 年在437 萬區塊高度上激活,包含了以下9 個EIP:

EIP 100

調整區塊難度評估公式,將叔塊納入參考範圍。新的公式使得貨幣增發率變得更加穩定,並確保無法通過操縱叔塊來強制提高發行率。

EIP 658

對於拜占庭硬分叉升級後的區塊,交易收據內會包含一個狀態字段來標誌成功(賦值為1)或失敗(賦值為0)。

EIP 649

“難度炸彈”是這樣一種機制:一旦被激活,每新挖出一個區塊所需的成本(即難度)都會提高,直到難度達到不可能挖出新的區塊為止。一旦達到這個難度,以太坊網絡將“凍結”。難度炸彈最初於2015 年9 月被納入以太坊網絡,旨在幫助以太坊網絡從PoW 轉型為PoS。一旦實行了PoS 機制,礦工們從理論上來說依然可以選擇支持舊的PoW 鏈,這就會導致社區分裂並產生兩條獨立的鏈—— 一條由權益所有者(staker)維護,另一條由礦工維護。為了防止這種情況發生,難度炸彈機制應運而生,它會讓挖礦效率變得越來越低,最終確保整個網絡完成向PoS 機制的過渡,而不會出現硬分叉的情況。在該提案中,難度炸彈(也稱冰河世紀)將推遲一年,此外區塊獎勵從5 ETH 降至3 ETH。

其餘拜占庭分叉EIP 的具體內容(140、196、197、198、211、214)

大都會:君士坦丁堡| 2019 年2 月28 日

大都會升級的第二階段君士坦丁堡( Constantinople )原定於2019 年1 月中旬在第708 萬個區塊高度上線。 1 月15 日,一家名為ChainSecurity 的獨立安全審計公司發布了一份報告,指出五個主要的系統升級中有一個會讓攻擊者有竊取資金的機會。針對該報告提出的問題,以太坊核心開發者和社區的其他成員投票決定暫緩升級,直到該安全問題得到解決。在1 月末,核心開發者們宣布將於728 萬區塊高度上激活升級。 2 月28 日, 728 萬區塊高度上執行了君士坦丁堡硬分叉。以太坊網絡目前正處於君士坦丁堡階段。

EIP 145:按位移動指令

按位移動指令被添加至以太坊虛擬機(EVM)。這些指令讓二進制信息中的比特可以以動到左邊和右邊。這一改進意味著智能合約的按位移動操作將便宜10 倍。

EIP 1052:智能合約驗證

智能合約能夠通過檢查另一個智能合約的哈希值來驗證其本身。在君士坦丁堡分叉之前,智能合約必須提取另一個合約的完整代碼才能進行驗證,這種驗證方式將耗費大量的時間和資源。

EIP 1014:CREATE2

狀態通道的可實施性變得更強。狀態通道是一種基於鏈下交易的以太坊擴容方案。

EIP 1283:SSTORE

降低SSTORE 操作所需消耗的Gas 成本。這一舉措使得交易中多個更新操作的成本更低。

EIP 1234:區塊獎勵以及暫緩難度炸彈

由兩部分組成:減少區塊獎勵以及暫緩難度炸彈。

區塊獎勵減少礦工得到的出塊獎勵從每區塊3 ETH 降至2 ETH。這一舉措被稱為“ 1/3 獎勵削減(Thirdening )”。

難度炸彈暫緩EIP 1234 將難度炸彈的激活再次推遲了十二個月,屆時將再一次進行投票。

前景:伊斯坦布爾(Istanbul)以及寧靜(Serenity)

展望未來,“寧靜(Serenity)” 將是以太坊區塊鏈的最後階段,不過要先經歷伊斯坦布爾分叉和“以太坊1.x.” 階段。伊斯坦布爾硬分叉將主要圍繞關於ProgPoW 的決策。 Serenity 將完成從PoW 到PoS 的轉化,以及其他一些重要升級。其中尤其要關注的是:信標鍊和分片概念的引入,以及用eWASM(Ethereum-flavored Web Assembly)替代以太坊虛擬機(EVM)。 Serenity 的所有升級將分階段進行,與此同時,以太坊1.x 也將不斷完善,從而確保原PoW 鏈的後續運行。我會在下一篇文章中講解後續硬分叉計劃和Serenity ,敬請關注。

編者註:遺憾的是,作者在此處期望的未來,到本次校對(2021 年7 月)為止,尚未成為現實。 2020 年底,信標鏈正式推出,ETH 持有者可以在以太坊區塊鏈上把資金鎖定,從而成為信標鏈驗證者、參與PoS 的共識過程。但是,信標鏈還不具備任何的功能,甚至信標鏈驗證者的獎勵也無法轉賬,資金也無法退出。信標鏈仍需經歷一個叫做“Merge(合併)” 的過程,才能真正用於承載當前由PoW 共識機制來承載的區塊鏈上活動。 (“Merge” 的實施尚無明確的時間表。樂觀估計可能在明年的第一季度。)此外,在原文發表之後,以太坊區塊鏈又經歷了多次硬分叉,我們把這幾次硬分叉的信息,增補如下:

“伊斯坦布爾” 升級伊斯坦布爾分叉的激活高度為9, 069, 000 號區塊,激活時間是2019 年10 月8 號(UTC 時間)。升級內容:EIP-152:增加BLAKE2 壓縮函數 F 預編譯功能增加在以太坊合約內驗證Equihash PoW 的功能。這就開啟了 Zcash 和以太坊之間中繼交易以及原子化互換交易的可能。 EIP-1108:降低alt_bn128 曲線的預編譯Gas 消耗量讓zk-SNARKs 運算變得更便宜,讓更便宜的擴展和隱私應用能開發出來。例如 Matter labs、Aztec Protocol、Rollup 以及 Zether。 EIP-1344:ChainID 操作碼為合約增加一種跟踪自己所在以太坊鏈的方式,好讓合約(尤其是Layer-2 方案如狀態通道和Plasma 所用的合約)跟踪正確Layer-1 鏈,尤其是在硬分叉期間。 EIP-1884:給與默克爾樹大小相關的操作碼重新定價改變了一些EVM 操作碼的Gas 耗用量,以防止濫發交易攻擊並更好地平衡每個區塊的計算開銷。在以太坊網絡上,一個操作所需耗用的Gas 數量往往跟這個操作所需付出的計算開銷相匹配。該EIP 提高了一些計算密集但當前的Gas 耗用量較少的操作碼的耗用量,即SLOAD、BALANCE 以及EXTCODEHASH。 EIP-2028:降低交易數據Gas 消耗量通過降低在交易內調用數據的Gas 消耗量來讓zk-SNARKs 和zk-STARKs 的應用更便宜。這樣做還可以幫助Layer-2 解決方案提高吞吐量。 Starkware 就是一個例子。 EIP-2200:改變SSTORE 操作的Gas 淨耗用量計量方式改變EVM 數據存儲操作的Gas 耗用量計量方式,讓合約能夠引入一些新的函數,比如重入鎖(re-entry lock)以及same- contract multi-send。見:https://ethfans.org/posts/istanbul-upgrade-eip-explainer

“繆爾冰川” 升級伊斯坦布爾分叉的激活高度為920 萬號區塊,激活時間是2020 年1 月2 號(UTC 時間)。升級內容:EIP 2384將難度炸彈推遲400 萬個區塊,約611 天。見:https://ethfans.org/posts/ethereum-muir-glacier-upgrade-announcement

“柏林” 升級伊斯坦布爾分叉的激活高度為1224 4000 號區塊,激活時間是2021 年4 月15 號(UTC 時間)。升級內容:EIP-2565:ModExp Gas Cost降低使用ModExp (0x00..05) 預編譯模塊的Gas 消耗量EIP-2929:提高狀態訪問操作碼的Gas 消耗量提高一筆事務(transaction)中首次使用SLOAD 、*CALL、BALANCE、EXT* 以及SELFEDESTRUCT 的Gas 消耗量EIP-2718:標準化的事務信封引入一種新的、作為信封的事務類型,從而能夠更好地支持多種事務類型EIP-2930:可選的訪問列表加入一種新的事務類型,該種類型的事務會包含一個訪問列表:該事務計劃訪問的地址和存儲項鍵的列表。這可以在一定程度上緩解由EIP-2929 帶來的Gas 消耗量增加。詳見:https://ethfans.org/posts/the-berlin-upgrade-overview

即將到來的“倫敦” 升級時間未確定。內容已確定:EIP-1559:ETH 1.0 鏈的手續費市場改革EIP-3198:BASEFEE 操作碼EIP-3541:拒絕以0xEF 字節開頭的新合約EIP-3554:難度炸彈推遲到2021 年12 月1 日詳見:https://ethfans.org/posts/london-upgrade-overview