2023 年3 月,以太坊將推出預期的上海昇級。
撰文: Beosin
以太坊上海昇級,也被眾多媒體稱為Web3 下一場新的敘事,這也是目前大家討論最多的一熱點。
2023 年3 月,以太坊將推出預期的上海昇級,截止發稿前,本次升級主要包括EIP-3540、EIP-3651、EIP-3670、EIP-3855、EIP-3860、EIP-4895、EIP-4200、EIP-4750 以及EIP-5450。而備受矚目的EIP-4844 將推遲到5 月至6 月進行更新。
圖片:Shutterstock
首先,在以太坊生態中,我們經常聽到一個詞“EIP”,這個詞是什麼意思呢?
EIP 全稱是Ethereum Improvement Proposal。它是一系列以太坊平台上推薦使用的標準和協議的統稱。它所包含的具體標準和協議涉及以太坊的核心協議、客戶端API、智能合約標準等。每一個EIP 包含對某個標准或協議的定義。
我們先來了解以太坊上海昇級將涉及的幾個標準。
EIP-3540
該EIP 主要是針對EVM 對象格式(EOF) 合約字節碼進行的更新,為EVM 引入了一種可擴展和版本控制的容器格式。在合約字節碼中添加了代碼和數據的標記,實現了代碼與數據的分離,這種分離對於鏈上代碼驗證器特別有利,因為驗證器可以區分代碼和數據。(詳細參考:https://eips.ethereum.org/EIPS/eip-3540)
EIP-3651
該EIP 主要目的是將「COINBASE」地址由冷地址變為熱地址。目前,COINBASE 直接交易正變得越來越流行,因為它們允許有條件的支付,這提供瞭如隱式取消交易等好處。但是訪問COINBASE 的價格過高,原因是最初在EIP-2929 中引入的訪問列錶框架下COINBASE 是按冷地址訪問成本來進行gas 計算的,而冷地址訪問成本相比於熱地址訪問成本相對較高。 (詳細參考:https://eips.ethereum.org/EIPS/eip-3651)
EIP-3670
該EIP 主要是配合上述EIP-3540 合約創建時引入代碼驗證。拒絕包含截斷PUSH 數據或未定義指令的合約字節碼。 (詳細參考:https://eips.ethereum.org/EIPS/eip-3670)
EIP-3855
該EIP 主要是增加了PUSH0 指令,作用是將常量0 壓入堆棧。目前只有將1 字節到32 字節壓入堆棧的PUSH1-PUSH32 指令,而將常量0 壓入堆棧,需要使用PUSH1 0 指令進行操作,而該指令在runtime 中需要消耗3 gas,並且額外需要消耗2 字節的存儲成本費用2*200 gas。目前大約存在11.5% 的PUSH 指令壓入了一個常量0 到堆棧,而新增PUSH0 指令後,可以節約一定量的gas 費用。 (詳細參考:https://eips.ethereum.org/EIPS/eip-3855)
EIP-3860
該EIP 主要是對initcode 的最大值進行了修改。目前initcode 的最大值在之前EIP-170 中設置為MAX_CODE_SIZE: 24576,在EIP-3860 中,新的initcode 的最大值為MAX_INITCODE_SIZE = 2 * MAX_CODE_SIZE = 49152。這使得合約大小的最大值擴展了一倍,合約可以擁有更加豐富的功能。但initcode 每字節將添加0.0625 gas 的成本,合約部署gas 成本微微上漲。 (詳細參考:https://eips.ethereum.org/EIPS/eip-3860)
EIP-4895
該EIP 主要是激活以太坊信標鏈質押提款的功能。 (詳細參考:https://eips.ethereum.org/EIPS/eip-4895)
EIP-4200
該EIP 引入了三個新的EVM 靜態跳轉指令,分別為RJUMP、RJUMPI 和RJUMPV,其目的是為了優化網絡以及降低成本。目前EVM 僅擁有動態跳轉機制,這雖然能讓字節碼非常靈活,但是也同樣增加了代碼分析的複雜程度。這些靜態指令的主要好處是降低了gas 成本(在部署和執行時)以及擁有更好的分析屬性。 (詳細參考:https://eips.ethereum.org/EIPS/eip-4200)
EIP-4750
該EIP 主要是對代碼的優化。主要是在上述EOF 格式(EIP-3540) 的基礎上引入了在字節碼中包含多個代碼段的能力,每個代碼段所代表的是一個單獨的子程序或函數。在字節碼中引入了CALLF 以及RETF 兩個新操作碼來負責調用和返回這種子程序或函數。此外,該EIP 還引入了JUMPF 指令來執行跳轉到這種子程序或函數的操作。 (詳細參考:https://eips.ethereum.org/EIPS/eip-4750)
EIP-5450
該EIP 主要是改變了代碼的驗證過程,對網絡進行了優化。目前EVM 對每條執行的指令進行大量的有效性檢查,例如溢出、gas 是否充足等,而該EIP 將使得合約在部署時便進行相關驗證,從而減少代碼在運行的時候進行的此類驗證次數。 (詳細參考:https://eips.ethereum.org/EIPS/eip-5450)
本次上海昇級主要分為以下幾個大的類型
1、EVM 細節優化
主要有兩個細節改進的EIP,分別是:EIP-3651 以及EIP-3860。
主要是針對現有的細節問題以及優化體驗方面進行的細節改動,其中EIP-3860 能夠緩解目前智能合約字節碼長度限制導致部分複雜的合約必須拆分成多個合約才能夠部署到主網的問題,該EIP 的引入將會顯著增加智能合約功能的豐富性與多樣性。
2、信標鏈提款
主要通過EIP-4895 進行實現。
目前,信標鏈上的ETH 質押數量超1500 萬枚,佔以太坊流通總量的近13%,本次升級之後,將開放這超1500 萬枚以太坊的提取功能。
本次提取功能將採用“推”的方式將款項從共識層(信標連)推送到執行層(主網),將定義一個分叉時間戳FORK_TIMESTAMP,從該時間戳開始,執行層便要對提款進行處理。共識層會定義一個負載級對象withdrawal,該對象會提供包括:index(計數器,記錄提款次數)、validator_index(驗證者數據)、address(提款目標地址)以及amount(以太坊數量)的關鍵信息,會主動推送到執行層。執行層中也將定義一個新字段withdrawals,該字段保存的是withdrawal 對象的列表,執行負載獲取到一個withdrawal 對像後,添加到withdrawals 列表。在經過驗證之後,便會對address 地址增加amount 數量的以太坊,從而實現以太坊的提取。
3、字節碼改進
主要有六個字節碼相關改進的EIP,分別是:EIP-3540、EIP-3670、EIP-3855、EIP-4200、EIP-4750 以及EIP-5450。
這類升級主要是增加部分新字節碼指令,包括:PUSH0、RJUMP、RJUMPI、RJUMPV、CALLF、RETF、JUMPF。還對字節碼進行了分類,添加字節碼的標記用於區分字節碼的類型,並對字節碼每個類型進行了模塊化。另一方面,更新了字節碼的驗證機制,優化了網絡以及使用費用。
這部分升級是本次上海昇級的主要內容,將會對以太坊虛擬機系統產生相對較大的影響。 Beosin 會將本次上海昇級中的所有指令同步納入Beosin-VaaS 智能合約代碼檢測工具中。
以太坊可擴展解決方案是什麼?
另一方面,備受矚目的EIP-4844 被推遲到了今年5 月至6 月進行更新,其功能是引入一種“攜帶blob 的交易”的新交易格式,該格式是為L2 數據傳輸所專門設計出的數據類型。
Rollups 是一種擴展解決方案, 在短期、中期甚至可能在長期內,該方案是以太坊唯一的去信任擴展解決方案。近期幾個月中,L2 向L1 傳輸數據的費用一直高居不下,而Rollups 很明顯的降低了許多以太坊用戶的交易費用,其中Optimism 和Arbitrum 擁有比以太坊基礎層本身低3-8 倍費用的功能,而ZK rollups 甚至擁有比以太坊基礎層本身低40-100 倍費用的功能。
然而,即使是這樣的費用,對於許多用戶來說也太貴。長遠看,數據分片是解決rollups 自身不足的很好的解決方案,可以為使用rollups 的鏈的每個區塊增加16MB 的專用數據空間。但是,數據分片功能的實施和部署需要漫長的時間才能實現。
該EIP 提供了一個解決方案,通過實現“攜帶blob 的交易”這一新的交易類型,該交易類型是為了承載L2 的原始交易壓縮數據,相當於之前的calldata。由於L2 的交易壓縮數據上傳的目的只是為了供其他人下載驗證,所以calldata 其實並不需要被L1 執行從而產生gas 費用。新交易類型blob 便不會像calldata 那樣被EVM 讀取,其會保留在共識層,並在30 天的延遲之後被刪除。簡單來講,就是將之前的calldata 數據保留到共識層,而不會像之前那樣發送到執行層,從而產生高昂的gas 費用,也正是Rollup 費用能因此降低的原因。 (詳細參考:https://eips.ethereum.org/EIPS/eip-4844)
聲明:本內容為作者獨立觀點,不代表0x财经 立場,且不構成投資建議,請謹慎對待,如需報導或加入交流群,請聯繫微信:VOICE-V。
來源: Beosin