以太坊網路升級Dencun 測試網版本在2024年1月17日上線了Goerli測試網,1月30日成功上線了Sepolia 測試網,Dencun 升級離我們越來越近。
再經歷一次2月7日的Holesky測試網升級之後,就會是主網升級,目前坎昆升級主網上線已經正式確定在3月13日。
每次以太坊升級幾乎都會伴隨一波主題行情,追溯以太坊的上一次還是2023年4月12日的上海昇級,POS相關的項目都受到了市場的追捧。
如果按照先前經驗,本次Dencun 升級也會有事先佈局的機會。
而由於Dencun 升級背後涉及的技術內容比較晦澀,並不能像Shanghai 升級那樣用一句話「以太坊從PoW轉向PoS」一言以蔽,難以抓住佈局的重點。
因此,本文將以簡單易懂的語言解釋Dencun 升級的技術細節,為讀者梳理本次升級與數據可用性DA 和Layer 2 等賽道之間的脈絡。
EIP 4484
EIP-4844 是這次Dencun 升級中最重要的提案,標誌著以太坊在以去中心化方式擴展的道路上邁出了切實而重要的一步。
通俗來講,目前以太坊二層需要將二層發生的交易提交到以太坊主網的calldata之中,供節點驗證二層網路出塊的有效性。
這樣做帶來的問題是,雖然交易資料已經被盡可能的壓縮,但二層龐大的交易量再乘以以太坊主網高昂儲存成本基數,對於二層節點和二層用戶來講依舊是一筆不小得開銷。光是價格因素,就會讓二樓失去大量用戶,流向側鏈。
而EIP 4484 建立了一個更為便宜的新型的儲存區域BLOB(Binary Large Object ,二進位大型物件),並用一種可以指向BLOB 儲存空間的名為”BLOB-Carrying Transaction” 的新交易類型來替代升級之前需要存入calldata 的交易數據,幫助以太坊生態二層實現節省Gas 成本。
BLOB 儲存便宜的原因
眾所周知便宜是要付出代價的,BLOB 資料比類似大小的普通以太坊Calldata 成本更低的原因是,以太坊執行層(EL, EVM)實際上無法存取BLOB 資料本身。
相反,EL 只能存取BLOB 資料的引用,而BLOB 本身的資料只能由以太坊的共識層(CL,又稱信標節點)下載和存儲,儲存起來耗費的記憶體與計算量遠小於普通以太坊Calldata 。
而且BLOB 還有一個特性,只能儲存有限的一段時間(通常約18 天),不會像以太坊帳本大小那樣無限膨脹。
BLOB 的儲存有效期限
與區塊鏈永久的帳本相反,BLOB 是暫時的存儲,其可用時間為4096 個紀元,約18 天。
過期後,大多數共識客戶端將無法擷取BLOB 中的特定資料。但是,它之前存在的證據將以KZG 承諾的形式保留在主網上,並且永久存儲在以太坊主網上。
為什麼選擇18 天?這是在衡量儲存成本和有效性之間的折衷方案。
首先要考慮此次升級最直觀的受益對象Optimistic Rollups(如:Arbitrum 和Optimism,),因為根據Optimistic Rollups 的設定,有7 天的故障證明(Fruad Proof)的時間窗口。
而blob所儲存的交易數據,正是Optimistic Rollups 發起挑戰的時候所需要的資料。
因此,Blob 的有效期限必須確保Optimistic Rollups 故障證明可以訪問,為了簡單起見,以太坊社群選擇了2 的12次冪(4096 個紀元由2^12 推導而來,一個紀元大概6.4分鐘)。
BLOB-Carrying Transaction 與BLOB
理解這兩者之間的關係,對於理解BLOB 在資料可用性(DA)方面的作用十分重要。
前者是EIP-4484 提案的整體,是一種新型交易,而後者可以理解成一種針對layer 2 臨時儲存交易的位置。
兩者關係可以理解為,前者中的大部分資料(layer2 交易資料)儲存在後者之中。而剩下的資料也就是BLOB 資料的承諾(Commitment)則會存在主網的calldata之中。也就是說,承諾是可以被EVM 讀取的。
可以將Commitment 想像為將BLOB 中的所有交易建構成一個Merkle 樹,然後只有Merkle 根也就是Commitment 可以被合約存取。
如此做可以巧妙的實現:雖然EVM 無法得知BLOB 的具體內容,但EVM 合約可以透過知曉Commitment 進而可以驗證交易資料的真實性的目的。
BLOB 與Layer2 的關係
Rollup 技術透過將資料上傳到以太坊主網來實現資料可用性(DA),但這並不是為了讓L1 的智慧合約直接讀取或驗證這些上傳的資料。
上傳交易資料到L1 的目的,只是為了讓所有參與者都可以查看這些資料。
在Dencun 升級以前,如上所述,Op-rollup 會將交易資料作為Calldata 發佈到以太坊。所以任何人都可以使用這些交易資訊來復現狀態,驗證二層網路的正確性。
不難看出,Rollup 交易資料需要便宜+公開透明,Calldata 並不是為二層專門存放交易資料的好地方,而BLOB-Carrying Transaction 才正是為Rollup 量身定制的。
讀到這裡,可能大家心裡有個疑問,這種交易數據看起來不重要,它有什麼用?
其實,交易資料只會在少數情況下才會用到:
-
對於Optimistic Rollup,基於信任假設,有一定可能會出現不誠實問題,此時Rollup上傳的交易記錄才派上用場,用戶可以利用這個數據發起交易挑戰( Fraud proof);
-
對於ZK Rollup,零知識證明已經證明狀態更新是正確的,上傳資料只是為讓使用者自己計算出完整狀態,在二層節點無法正確運作時啟用逃生艙機制(Escape Hatch,需要完整的L2 狀態樹,最後一節會講到)。
這意味著,交易資料被合約實際使用的場景非常有限。即使在Optimistic Rollup 的交易挑戰中也只需要當場提交證明交易資料「存在過」的證據(狀態),而不需要那一筆交易詳情事先就儲存在主網。
所以如果我們把交易資料放在BLOB 元素中,雖然合約無法訪問,但主網合約可以儲存這個BLOB 的Commitment。
未來如果挑戰機制需要某一筆交易,我們只需提供該交易的數據,只要能對應。這就能說服合約,並將交易數據提供給挑戰機制使用。
這樣既利用了交易資料的公開透明性,也規避了把所有資料提前錄入合約的龐大gas 成本。
透過僅記錄Commitment,達成交易資料可驗證性的同時又大幅優化了成本。這是Rollup 技術上傳交易資料的一個巧妙且有效率的解決方案。
需要說明的是,在Dencun 實際操作之中,並沒有採用同Celestia 類似的Merkle 樹的方式產生Commitment,而是採用巧妙KZG (Kate-Zaverucha-Goldberg,多項式承諾)演算法。
相較於Merkle 樹證明,生成過程KZG Proof 的過程相對複雜, 但其驗證的體積更小,驗證步驟也更簡單,但缺點是需要進行可信任設定(ceremony.ethereum.org 現在已經結束)且不具防量子計算攻擊能力(Dencun 使用了Version Hash的方法,如果需要可以更換其他驗證方法)。
對於現在大熱的DA 專案Celestia ,其採用的正是Merkle 樹變體,相較於KZG,有一定程度要依賴節點的誠信,而卻有助於降低節點之間運算資源的門檻要求,維持網路的去中心化特徵。
Dencun 的機會
Eip4844為二層降本增效的同時,卻也引出了安全隱患,這也帶來新機會。
要理解原因,我們需要聊回上文提到的逃生艙機製或強制提款機制。
當Layer 2 節點失能時,此機制可確保使用者資金安全回到主網。啟動這個機制的前提是使用者需要獲得Layer 2 完整的狀態樹。
依照正常情況,使用者只要找一個Layer2 全節點索取數據,產生merkle Proof ,再提交給主網的合約,以證明自己提款的正當性。
但不要忘了使用者想要啟動逃生艙機制退出L2恰恰是因為L2節點作惡,節點都作惡了,那大機率就不會從節點哪裡取得到想要的資料。
這就是Vitalik常提到的資料扣留攻擊。
EIP-4844 之前,主網上記錄了永久的Layer2 記錄,當沒有Layer2 節點可以提供完整的鏈下狀態時,使用者可以自行部署一個全節點。
這個全節點可以透過與以太坊主網獲取Layer 2 排序器在主網上發布的所有歷史數據,用戶就可以構造出所需的Merkle 證明,將證明提交給主網上的合約,就能安全地完成L2 資產撤離。
而EIP-4844 之後,Layer 2 資料只存在以太坊全節點的BLOB 中,18天之前的歷史資料將會自動刪除。
因此,上一段中的透過同步主網獲取整棵狀態樹的方法不再可行,想要獲取Layer 2 的完整狀態樹,只能透過第三方為愛發電的儲存了以太坊BLOB 全部資料(本該18天自動刪除)的主網節點,或Layer 2 原生節點(很少)。
由此4844 上線後,使用者透過完全可信的方式取得Layer 2 完整狀態樹將會變得十分困難。
使用者沒有穩定途徑取得Layer 2 狀態樹,就沒法在極端條件下進行強制提款操作。因此,4844 在某種程度上造成了Layer 2 的安全短板/缺失。
要補足這塊的安全缺失,我們需要有一個有正向經濟循環的無須信任儲存方案。這裡的儲存,主要是指以一種無需信任的方式保留以太坊中的數據,和過去的儲存賽道不太一樣,因為還存在「無需信任」這個關鍵字。
Ethstorage 就可以解決無需信任這個問題,並得到了兩輪以太坊基金會的資助。
可以說這個概念真正的可以迎合/彌補Dencun 升級的賽道,非常值得關注。
首先,Ethstorage 最直觀意義在於,能夠以完全去中心化的方式延長DA BLOB 的可用時間,補上了4844 後Layer 2 的安全最短板。
此外,大多數現有的L2 解決方案主要專注於擴展以太坊的運算能力,即增加TPS。然而,在以太坊主網上安全儲存大量資料的需求激增,特別是由於NFT 和DeFi 等dApp 的流行。
例如,鏈上NFT 的儲存需求非常明顯,因為使用者不僅擁有NFT 合約的令牌,還擁有鏈上影像。 Ethstorage 可以解決將這些影像儲存在第三方會帶來額外的信任問題。
最後,Ethstorage 還能解決去中心化dApp 的前端的需求。目前現有的解決方案主要是由中心化伺服器(帶DNS)進行託管,這種設定使網站容易受到審查和其他問題的影響,如DNS 劫持、網站駭客攻擊或伺服器崩潰,龍捲風現金等事件就是證明。
現在Ethstorage 還在初期網測試階段,看好這條賽道的前景的用戶可以體驗一下。