邁向ETH 2.0:從“Olympic”到“倫敦”,看ETH歷次升級中協議的演化

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

邁向ETH 2.0:從“Olympic”到“倫敦”,看ETH歷次升級中協議的演化

縱觀全局,區塊鏈技術出現的時間並不久。儘管區塊鏈相關的基本概念(密碼學、去中心化、點對點網絡和交易)已經被研究了數十年,但直到 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 是一項着眼於未來的網絡升級計劃改進提案。這一改進確保以太坊網絡上所有的客戶端軟件都能適應未來的網絡協議升級。

邁向ETH 2.0:從“Olympic”到“倫敦”,看ETH歷次升級中協議的演化

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

本文鏈接:https://www.8btc.com/article/6659399

轉載請註明文章出處

(0)
上一篇 2021-07-11 12:12
下一篇 2021-07-11 12:33

相关推荐