以太坊主網 2021 年終回顧:Rollup成擴展計算的最佳短期解決方案
原文標題:以太坊主網 2021 年終回顧
原文作者:ECN
以太坊基金會的 Tim Beiko 在 11 月做了一次主題為《理解轉換到權益證明的過程》的演講。在這次的分享裡,他回顧並整理了以太坊主網在 2021 年裡進行的四次硬分叉,分別概述進行了哪些方面的改進;梳理了以太坊2.0路線圖的演變過程,解釋了為什麼目前以 rollup 為中心以及採用可執行信標鏈的架構;詳細剖析了合併後的以太坊架構以及過渡的發生過程;最後回顧了2021年客戶端團隊探索合併的實現和進行測試的歷程,並交代了當前的進度以及未來的實現計劃。
這個演講非常適合作為以太坊主網在過去一年的總結,ECN 特此譯製了這個視頻的演講部分,並附上相關的文章資源作為補充和索引,方便讀者重溫與整理。
2021 年以太坊的四次硬分叉
柏林升級 (四月)
納入的 EIP:
➤ EIP-2565:模幂運算 Gas 開銷 (ModExp Gas Cost)
對之前引入模幂運算預編譯模塊的 EIP-198 (大數模幂運算) 進行重新重定價,該模塊使我們能引入許多需要模幂運算的密碼學算法,比如 RSA 簽名驗證。EIP - 2565 提議降低了該模塊 ModExp (0x00..05) 的 gas 開銷,使其與執行其他操作的開銷水平相仿。
➤ EIP-2718:類型化的交易信封 (Typed Transaction Envelop)
這份提案引入一種新的交易類型,它是一種交易信封,可以更易於支持多種交易類型。以太坊一開始上主網時只有一種交易類型,帶有字段"To"(指定交易發送的目的地) 和"Data"(在交易中包含任意數據),這使得以太坊客戶端必須步調一致,確保在完全相同的時間做完全相同的變更。後來,隨著交易類型發生變化,在偽龍 (Spurious Dragon) 硬分叉時納入了 EIP-155 (重放攻擊的簡單防護),允許客戶端對字段有不同的解讀。EIP-2718 無法解決由 EIP-155 引入的複雜性,但可以防止未來再引入更多的複雜性,使得加入新的交易類型變得更簡單,例如 EIP-1559 類型的交易。
➤ EIP-2929:提高狀態訪問操作碼的 Gas 開銷 (Gas cost increases for state access opcodes)
這份 EIP 提高了一筆交易在首次調用 SLOAD, CALL, BALANCE, EXT 和 SELFEDESTRUCT 時的 gas 開銷。但值得注意的是,對每個地址或存儲槽,這樣的高開銷僅發生在第一次觸發,隨後的多次調用每次僅消耗 100 gas。提高這些 gas 開銷一方面可以化解以太坊協議上仍保有的最大 DoS 攻擊向量的影響,另一方面是為以後實現無狀態以太坊限制見證數據的大小。
➤ EIP-2930:可選的訪問列表 (Optional access lists)
這份提案的目的是修正 EIP-2929 對現有合約帶來的破壞,並緩解 gas 開銷增大帶來的問題。此提案新增一個交易類型,它包含一個交易計劃會訪問的訪問列表 (內容是地址和存儲項鍵)。通過指定一個訪問列表,客戶端可以更容易處理交易,而 gas 消耗量也因此可以安全地降低。
相關閱讀:
《柏林硬分叉後的 gas 成本》
《以太坊柏林升級公告》
倫敦升級 (八月)
納入的 EIP:
➤ EIP-1559: Eth1.0 費用市場變更 (Fee market change for ETH1.0 chain)
EIP-1559 是以太坊史上最令期待的變更之一,也是倫敦升級裡帶來最大變更的EIP。這份 EIP 將在網絡區塊裡引入"基本費用 (basefee)",它會追蹤 gas 價格,這些價格來自網絡將接受的、基於對區塊空間需求的交易。這意味著錢包和用戶將可以更容易預測他們交易的價格。另外,EIP-1559 新增了一種交易類型,用戶可以指定他們願意支付的最高限額,當他們把這個最高限額費用發送給礦工時,會獲得最高限額費用減去基本費用與礦工小費之和的差值退款。最後,這份 EIP 還將導致部分交易費被燒毀,這一點被社區的大部分人認為是以太坊網絡經濟上的一個重要改善舉措。
➤ EIP-3198: BASEFEE 操作碼 (BASEFEE opcode)
這份 EIP 是與 EIP-1559 搭配的。它只是簡單添加了一個 BASEFEE 操作碼,它返回的是執行交易所在的區塊的基本費用。這將使得智能合約可以在鏈上訪問這個值,這有助於提交欺詐證明和創建去信任的 gas 價格衍生品。
➤ EIP-3529: 減少 gas 返還 (Reduction in refunds)
在倫敦引入的另一個重大變更是取消了操作碼SELFDESTRUCT 的 gas 返還和減少了操作碼 SSTORE 的 gas 返還。雖然設立返還的初衷是希望激勵開發者在可能的情況下清除狀態,然而現實是,這導致了Gas Token的出現,反而增加了狀態大小。利用這些返還的 gas,Gas Token 可以在 gas 價格很低的時候填滿狀態,然後在 gas 價格上升的時候獲得執行這些交易的返還。此外,gas 返還還會導致區塊執行時間的變化。EIP-3529 把"執行 gas 返還"從 50% 下調到最多 20%。這一變更將有助於抵消由 EIP-1559 引入的額外區塊大小變化,因為 EIP-1559 允許區塊使用的 gas 是現在 gas limit 的兩倍。
➤ EIP-3541: 拒絕以 0xEF 字節開頭的新地址 (Reject new contracts starting with the 0xEF byte)
這份 EIP 將使得倫敦升級後,以 0xEF 字節開頭的新合約就無法部署,它們會被保留下來以後作為識別符合 EIP-3540 語義的方式。EIP-3540 提出的 EVM 對象格式 (EVM Object Format, EOF) 是一種可擴展和版本化的 EVM 字節碼容器格式,會在部署時進行一次性驗證。因此,EIP-3541 是為以後更廣泛的 EVM 改良奠定基礎。
➤ EIP-3554: 難度炸彈延遲至2021年12月 1 日 (Difficulty Bomb Delay to December 1st 2021)
EIP-3554 延遲難度炸彈,也以冰河時代為人所知。難度炸彈或冰河時代是以太坊引入的一種機制,在網絡過渡到權益證明時"凍結"挖礦。由於權益證明的過渡還未準備好,我們需要推遲炸彈的"爆炸"時間。這在過去已經進行過三次:在大都會(EIP-649)、君士坦丁堡 (EIP-1234) 和穆爾冰川 (EIP-2384)。
相關閱讀:
《倫敦升級概覽》
《倫敦主網升級公告及相關代碼變更》
《為什麼需要 1559》
《為什麼我認為 EIP-1559 的區塊容量變化無須擔心》
《MEV 與 EIP-1559》
《從 MEV 視角分析 EIP-1559 下的交易打包市場》
《以太坊倫敦升級完成時 (第 37 期以太七日談)》
《EIP-3529:減少 GAS 返還》
信標鏈 Altair 升級 (十月)
Altair 是信標鏈的一次升級,它新增的功能包括:
支持輕客戶端的同步委員會
為了減少規範複雜性的激勵計算改革
修改證明獎勵,以提高激勵兼容性
單獨核算每個驗證者的怠工懲罰
懲罰參數更新為原定的懲罰水平
相關閱讀:
《Altair 主網升級公告》
《建模分析 Altair 升級的影響》
《Finalized no.24》
《Altair 升級講解 (第 30 期以太七日談)》
各期的《共識層進展更新》
Arrow Glacier 升級 (十二月)
Arrow Glacier 是另一個類似於 Muir Glacier 的網絡升級。它將只包括一份 EIP------把難度炸彈推遲到明年夏天,以防區塊鏈凍結,即"冰河時代 (ice age)"。
相關閱讀:
以太坊 2.0 路線圖演變過程
在 2018 年台北的一次研討會上,以太坊的核心開發者做出了一個分三個階段的以太坊 2.0 路線圖,每個階段交付的內容是:
階段 0 將帶來信標鏈
在階段 1,會加入數據分片
在階段 2,在每個分片加入虛擬機,以在系統裡實現計算。
到了 2020 年末,在信標鏈快可以啟動之前,儘管階段 1 的工作進展順利,但將在階段 1 引入的分片上實現計算功能的階段 2 仍然有很多未解決的問題。同時,rollup (即二層的擴容方案) 方面正發生非常快速的進展。多個團隊公布要上測試網,且取得令人鼓舞的早期成果。大約在這個時候,Vitalik 在 Ethereum Magicians 论坛上發表了長文,論述我們應該把短期和中期的擴容工作集中在 rollup 上。它們不僅會在階段 2 完成前上主網,還會是階段 1 的最大受益者。
同年 11 月,Mikhail Kalinin 發表的《可執行信標鏈 (Executable Beacon Chain)》,提出了目前的合併架構,帶出了幾點洞見:
信標鏈已經啟動了,現在可以作為共識引擎來使用;
Rollup 是擴展計算的最佳短期解決方案;
當前的 Eth1 客戶端是作為合併後執行層的最佳基礎;
搬到權益證明可以通過對當前運行的應用影響最小的方式實現
在文章裡,Mikhail 提議直接把權益證明作為客戶端使用的新共識算法。
相關閱讀:
《詳解以太坊2.0信標鏈》
《Vitalik:以 rollup 為中心的以太坊路線圖》
《可執行信標鏈》
《以太坊核心開發者會議更新 006》
《Vitalik:以 rollup 為中心的以太坊最終圖景》
合併後的架構與合併過程
概括來說,合併後,客戶端將從根據 PoW 鏈轉為根據 PoS 鏈來決定以太坊的最新有效區塊。此外,客戶端大多數的功能,以及更重要的 EVM、它的狀態,和它是如何執行交易的,都保持不變。現在的 Eth1 和 Eth2 客戶端分別變成以太坊的執行層和共識層 (或叫做引擎)。這意味著 Eth1 或信標鏈客戶端的節點運行者將需要運行堆棧的"另一半",以擁有一個完整的驗證節點。
在合併的過程中,信標節點將監測當前的 PoW 鏈,當有區塊的 Total Difficulty 觸達設定的 TERMINALTOTALDIFFICULTY (終結總難度) 時,該區塊就成為最後的 PoW 區塊,隨後的區塊都開始由信標鏈上的驗證者構建和證明。當這個區塊在信標鏈上被最終敲定時,合併就完成了。
相關閱讀:
實現合併的歷程與計劃
實現合併的三次標誌性事件為:四月進行的 Rayonism 黑客松、十月進行的 Amphora 工作坊,以及十一月開啟的 Kintsugi 計劃。
為了驗證可執行信標鏈架構的可行性,在長達一個月的 Rayonism 黑客松裡,客戶端團隊進行了原型設計,搭建了測試網 Nocturne,證明了可執行信標鏈是一個可行的架構。
到了十月,在 Amphora 工作坊活動中,客戶端團隊再次聚集在一起解決規範上懸而未決的問題。活動最後,客戶端團隊搭建了一個開發測試網,它跑完了所有客戶端組合的轉換過程,並對合併後的區塊做了最後敲定。
Amphora 活動後,經歷了四個短暫的開發測試網,開發者推出了 Kintsugi 測試網計劃。在十一月到十二月中旬這段期間,每週開發者會上線一個新的開發測試網,並基於上個進行改進。在聖誕假期期間,已經上線了一個長期的公共測試網,並鼓勵大家參與測試。
目前實現工作已經完成了80%~90%,Arrow Glacier 把難度炸彈推遲到明年六月,也就是說明年六月前更多的是測試工作。
相關閱讀: