從歷次升級看以太坊協議的演化

來源 | 以太坊愛好者

來源 | 以太坊愛好者

責編 | 晉兆雨

頭圖 | 付費下載於視覺中國

縱觀全局,區塊鏈技術出現的時間並不久。儘管區塊鏈相關的基本概念(密碼學、去中心化、點對點網路和交易)已經被研究了數十年,但直到 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 的去中心化自治組織被駭客攻擊,有價值 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 鏈的後續運行。

兩年來的硬分叉的資訊,增補如下:

伊斯坦布爾」升級

伊斯坦布爾分叉的激活高度為 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:ModExpGas 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:ETH1.0 鏈的手續費市場改革

  • EIP-3198:BASEFEE操作碼

  • EIP-3541:拒絕以0xEF 位元組開頭的新合約

  • EIP-3554:難度炸彈推遲到 2021 年 12 月 1 日

詳見:https://ethfans.org/posts/london-upgrade-overview

相關文章

Hi,兄弟,Web3到底是怎麼回事?

Hi,兄弟,Web3到底是怎麼回事?

致正在一知半解的朋友:本文的知識,你如果自己去摸索,可能需要半年、一年甚至更長時間才能搞明白。本文儘可能讓你在半小時內建立起靠譜的認知。 另...

吊炸天的Web3,到底是個啥🤩

吊炸天的Web3,到底是個啥🤩

本文作者:衛劍釩丨原標題:《Hi,兄弟,Web3到底是怎麼回事》 致正在一知半解的朋友:本文的知識,你如果自己去摸索,可能需要半年、一年甚至...

建設 Web3,現在最需要 Web2 的移民?

建設 Web3,現在最需要 Web2 的移民?

Web3 處在「大規模應用」爆發的前夜 從國際局勢,到新冠疫情,過去三年「新常態」的衝擊,讓外部環境充斥著不確定性,也令這個時代的人們處於前...

在元宇宙裡造車,開什麼玩笑?

在元宇宙裡造車,開什麼玩笑?

金磊 賈浩楠 發自 凹非寺,量子位 | 公眾號 QbitAI 這年頭,連造車都搞進元宇宙裡去了??? 瞧,一位外國小哥頭戴VR,手持設備,就...

Web 3.0,與中國無關!

Web 3.0,與中國無關!

最近看到一篇文章,說中國網際網路大廠員工正在向Web 3.0 (Web3) 公司遷徙。 他們要逃離現有崗位,追尋新的革命理想。 2022年的...

觀點 | 以太坊的黃金時代

觀點 | 以太坊的黃金時代

來源 | 以太坊愛好者 作者 | Anthony Sassano,EthHub聯合創始人 以太坊正以多種方式進行擴展。 以太坊就像一座經濟活...