以太坊Gas費為何阻礙了DeFi發展?怎麼辦?

Winkrypto
本文约7493字,阅读全文需要约30分钟
一覽以太坊擴展性的挑戰。

編者按:本文來自鏈聞ChainNews(ID:chainnewscom)編者按:本文來自

鏈聞ChainNews(ID:chainnewscom)

編者按:本文來自

鏈聞ChainNews(ID:chainnewscom)

圖片描述

編者按:本文來自

圖片描述

,撰文:Remco Bloemen,0x 技術專家,編譯:Leo Young,經授權發布。

小額交易手續費有時會高達10%

Gas 使用

我們想要創造一個所有價值可自由流動的代幣化世界,區塊鏈的局限卻正在阻礙我們實現這一使命。這就是為什麼0x Labs 專門成立工程師團隊,力圖解決這些局限性的問題。通過我們的研究,我們希望通過本文來探討以太坊的局限性,及其如何影響DeFi 用戶。此外,本文也會簡單論及下一代區塊鏈。在未來,我們還將撰寫文章,探討不同的解決方案Layer 2 ,並演示我們滿足DeFi 需求的策略。

首先要說明,以太坊交易的大小以gas 計算。區塊中收集交易,大約每13 秒一個區塊。每個區塊所容納的交易數量空間有限,也就是「 ga s 上限」。目前每個區塊大約有1,200 萬gas 交易空間。純ERC-20 代幣轉賬大約需要五萬gas。也就是每個區塊可容納最多240 筆代幣轉賬,約每秒18 筆轉賬。 DeFi 轉賬通常涉及多筆代幣轉賬和簿記,造成交易成本翻倍,進而限制區塊吞吐量。 「gas 上限」和區塊時間意味著需要持續提供交易所需的gas。

圖片描述

首先,我們來看以太坊歷史上gas 供應及其使用如何增長。

圖片描述

每天以太坊上約有六千區塊挖出,有幾十億價值gas 交易空間。主要由於「gas 上限」增加,gas 交易數量也隨著時間改變、增加。同時,交易消耗總gas 費也會隨著以太坊上的交易增多、變大而增長。

圖片描述

二級標題

從上圖可以看出,以太坊是企業級應用,因為辦公時間應用最高

在「 冰河時代」,出塊時間大幅增加,造成單日出塊量減少,gas 供應降低。當然這種情況非常不受歡迎,迫使網絡硬分叉來調整。這樣做的目的就是:迫使硬分叉帶來升級改進,防止陷入創新停滯。伊斯坦布爾(Istanbul) 硬分叉沒有重設「難度炸彈」,所以很快進行了繆爾冰川硬分叉。即將進行的柏林(Berlin) 硬分叉考慮更改這一機制(EIP 2515) 。

二級標題

看用量情況(黑色) ,以太坊自從2017 年ICO 熱潮以來,gas 用量始終佔60% 以上。之後「gas 上限」幾次增長到四倍,每次上限增長後gas 用量也成比例增長。過去幾個月,以太坊用量一直卡在95%。

要理解以太坊gas 用量為何不會超過95%,需要先了解「 空塊」 (empty block) 和「 叔塊」 (ommer block) 的概念。

二級標題

「空塊」和「叔塊」

以太坊歷史上,即使需求再高,gas 用量也從未超過上限95% 。讓人驚訝的是,剩餘5% 浪費在完全空的區塊。這些空塊定期出現,大約每二十個塊有一個。有交易要付款進入打包入塊,為什麼還會有人要挖空塊?先看以下數據:

一個解釋就是,礦工一獲得新區塊頭,在完整個區塊沒打包完成前便開始挖下一個區塊。這種操作在比特幣裡稱為SPV 挖礦,讓礦工可以沒完成一個區塊驗證可即刻開始找下一個區塊,但只能加入空區塊。新區塊完全打包完成後,就可以添加下一個完整區塊,並切換去挖。

這種解釋的進一步證據就是,如果同一礦工快速連續挖到兩個區塊,空塊率就會降低25% 。

2018 年gas 用量達到峰值期間,「叔塊」率也到新高,但之後佔比降到所有挖出區塊的5% 。這與礦工可能此時更改挖礦策略造成空塊率升高相吻合。

二級標題

空塊率對以太坊可擴展性的傷害沒有立即表現出來,但確實有影響。自從拜占庭升級的EIP-100提案,難度調整維持一定主幹鏈區塊和「叔塊」比率。所以「叔塊」率高就表示浪費的「叔塊」增多,主鏈增加的塊減少。這就表現為每日出塊時間延長,每日總gas 量減少。 (造成出塊時間延長的另一個原因是「難度炸彈」)

有方法可以降低空塊率和「叔塊」率。推定根本原因就是,由於網絡和處理延遲,礦池沒有最新的狀態可用。一個簡單但不太讓人滿意的解決方案就是,讓礦池更中心化,最近的狀態就會集中在一起。

二級標題

更去中心化一點的解決方案就是bloXroute 那樣,創建礦池間專用連接。受「 間諜挖礦」 (spy mining) 啟發,可以讓礦池預先分享目前在挖的區塊。其他礦池會準備可能會挖的後續區塊。礦池成功挖完自己的塊後,就已經知道後續可以挖哪些塊,立即切換。在堆棧上方,改進節點通訊協議和處理算法也有效,這些地方仍有改進空間。最終,降低空塊率和「叔塊」率才能單日提升最多5% gas 供應量。

所以似乎有95% gas 上限,但如果有人想要使用超過95% 的量怎麼辦?

Gas 價格

以太坊gas 上限到頂會怎樣?礦工可以自由選擇打包交易(後續詳述) ,但實際上礦工按「 高gas 費優先原則」打包交易,因為這樣利潤最高。這樣就產生對可用gas 的第一價格拍賣現象。

乍一看,對以太坊都興趣增加,只會推升價格,不會造成用量增長。實際上,高價值使用會驅逐低價值使用,便宜的遊戲類非同質化代幣(NFT) 交易減少, 大額DeFi 交易更多。

二級標題

Gas 上限

根據提案EIP-1559,長期仍有固定gas 發行率,意味著gas 價格會持續上升,直到需求足夠小。 EIP-1559 仍舊鼓勵同一區塊內支付溢價的優先打包處理(假設礦池繼續按原先順序挖區塊) 。這就意味著搶先交易、gas 競價和礦工牟利的情況仍舊存在。

二級標題

圖中的數字代表下個區塊內可打包交易的最低價格。你願意等得越久,gas 價格會越低。歷史數據表明,若你願意等兩分鐘或更久,那價格便會很低。 EIP-1559 有助於降低溢價,便於更快處理交易。

二級標題

Gas 上限

下面來看以太坊上礦池份額的發展情況:

圖片描述

目前由於缺少礦工實際操作的詳細信息,我們會用簡單的方法: 投票系統。 […] 希望未來我們可以軟分叉,變為更精確的算法。

圖片描述

圖片描述

二級標題

Gas 成本

最近兩大礦池一致決定提升gas 產量25% ,頗有爭議。目的本是通過增加gas 供應來緩解高交易費壓力。目前我們所看到的,交易需求增長快過gas 上限增長速度。這就造成價格暫時趨緩,最終還是會上升。

二級標題

所以,gas 上限促使gas 價格上升。似乎我們不該一味增加gas 上限。那該怎麼做?或許可以降低交易所需的gas 成本?

二級標題

交易的gas 成本主要由EVM 運行成本組成。交易是由眾多EVM 操作組成,每次運行成本由EIP 和硬分叉決定。過去幾次硬分叉中,有些操作的gas 成本已經增加(EIPs 150、160、1884) ,有些降低(EIPs 1108、2028、2200) 。計劃中的柏林硬分叉也在在考慮變更一些特定操作的gas 成本。

二級標題

所有變更的目標是要讓費用更準確反應操作的真實成本。這就意味著,隨著計算機和算法變快,計算運行成本會降低。

這就意味著,存儲仍舊是DeFi 應用的大額成本。創建新的餘額要兩萬gas,修改現有餘額要五千gas。轉賬至少要修改兩次餘額,匯兌至少要修改四次,DeFi 交易所需的狀態費用更高。似乎沒有簡單方法能降低相關存儲量,有需求,存儲費就會上升。好的一面, Layer 2 擴展解決方案偏向輕量存儲和高計算量,似乎更有優勢。

最後,隨著gas 上限提高,也會出現相同的安全擔憂:糟糕情況影響大。本地優化gas 成本達到當前操作的平均成本很危險。

這樣就很清楚為何以太坊擴展性的問題這麼棘手。在給出解決方案前,還需提及目前以太坊傷害DeFi 用戶的另一局限之處。

礦工牟利

二級標題

區塊打包者遵守共識規則。共識規則保證交易選擇和排序等重要自由。對於普通代幣轉賬,問題不大。但對交易所等DeFi 交易, 搶先交易就有很高經濟價值。目標交易兩面受攻擊,便會出現更複雜的牟利行為。 Daian 等人(2019) 稱之為「 礦工牟利」 (miner extractable value) 。

其他情況下,恰好接著一筆交易會有價值,例如價格預言機更新後第一個清算倉位。這稱為「 back-running 」,結果也是礦工獲益。

  1. 二級標題

  2. 大價差、價格偏離、高手續費及更多失敗交易,最終會讓DeFi 用戶受損,礦工牟利。要有更好的DeFi 體驗,這個問題就得解決。解決這個問題就要限制交易排序自由,例如要求一個區塊內最低gas 價格的交易優先。

  3. 現在已完全了解以太坊的局限,及其如何影響DeFi 。當然所有致力於擴展性的明星團隊終將解決這個問題,對吧。

二級標題

強化底層,著眼二層

有很多出眾的團隊致力於不同可擴展性解決方案。解決方案有兩種: Layer 1 和Layer 2 。 Layer 1 解決方案的目標是構建擴展性更好的以太坊,Layer 2 解決方案是要在以太坊的基礎上構建更具可擴展性的基礎設施。

從最明顯的問題開始:提升現有以太坊的性能——這是Eth1x 要做的事情。改進以太坊客戶端性能,仍舊可以有很多提高。糟糕的是,Eth1x 幾乎沒有得到任何應有的支持,所有進展很慢。

要了解Eth1x 可以達到何種性能,可以先來看看Solana 。 Solona 吞吐量可達到以太坊千倍以上,還有提升空間。這種方法的主要劣勢是,運行全節點的硬件要求很高。

多數其他解決方案都有三個共同點:

使用WebAssembly 作為虛擬機,極簡狀態架構,和最重要的分片。目前以太坊上的所有交易都按序列執行。交易排序毫無疑問是區塊鏈的關鍵。這種模式的缺點是,很難並行處理,所以投入更多資源也無法輕鬆解決可擴展性問題。這就是下一代區塊鏈Eth2.0 要解決的。

通過更改交易執行方式,讓交易平行處理。將區塊鏈分為多個鬆散連接的域,也就是稱作「 分片」的處理程序,來實現這一方案。一個分片內的交易仍舊按順序排列,但分片之間是異步進行。這就允許所有分片平行運行,依分片數量擴展網絡。

用以分離的域不一定與分片相匹配,同一個分片可以有多個域,甚至可以遷移域,達到負載平衡。如需深入了解分片技術,讀者請瀏覽Near 協議的「 夜影」論文。

兩個項目各佔粒度光譜兩邊: Dfinity 在細粒度一端,每個代理人有自己的域,每次代理人交互都是異步。 Near 協議細粒度化稍小,每個合約都有自己的域。粗粒度一端是波卡,其域是就是整個分片,這種情況稱為「平行鏈」更準確。從DApp 開發者角度判斷以太坊2.0 為時尚早。 Eth1EE (Eth2 上的Eth1 執行環境) 將為粗粒度,有與分片一致的界限,目前的以太坊會成為一個分片。細粒度解決方案的優勢是透明;合約間調用無論是否跨分片邊界,都能看上去一樣。這就進而允許在分片間移動合約來輕鬆平衡負載。

參考

  1. Daniel Perez & Benjamin Livshits (2019). “Broken Metre: Attacking Resource Metering in EVM.”

  2. Daian et al. (2019). “Flash Boys 2.0: Frontrunning, Transaction Reordering, and Consensus Instability in Decentralized Exchanges.”

  3. Brian Nigito (2017). “How to Build an Exchange.”

  4. Danny Ryan (2020). “The State of Eth2, June 2020.”

  5. Scott Shapiro & William Villanueva (2020). “ETH 2 Phase 2 WIKI.”

  6. Near Protocol sharding design