Insight EIP-1559是以太坊Gas的救星嗎

感謝Automata的Deli Gong給予的寶貴意見!

EIP-1559 前以太坊gas費是怎麼算的?

在以太坊中,交易所需的gas 費計算方式是:

TransactionFee = GasPrice × GasLimit

其中Gas Limit 代表你願意為這筆交易支付的最大gas 量,這通常取決於交易的複雜程度。 Gas Price 指的是Gas 的價格,即你願意為每個單位的gas 所支付的ETH 數量。

目前以太坊費用機制使用的是首價拍賣模式。用戶需要向以太坊網絡提交出價(他們願意支付的Gas Price)。每當生成一個新的區塊時,礦工將把Transaction Fee 最高的那些交易打包進區塊裡。每一筆交易都會按照它的出價來支付gas 費。

我們通常說的“支付更多的Gas 費” 意思是增加某筆交易的Gas Price 以獲得被打包的優先權。例如在Metamask 中,有“慢”、“平均” 和“快” 這3 個Gas Price 選項供用戶選擇,用戶通過這個選項支付更高的Gas Price 來加快自己的交易被打包。

問題在於,用戶與錢包都無法準確估計他們應該支付的gas 費,事實上用戶總在支付高於他們本應支付的價格,來確保交易的順利進行。我們可以從下圖中看出,ETH 交易費的平均值一直高於它的中位數,並且當網絡擁堵的時候差值尤其的大。

ETH 交易費的平均數/ 中位數 (來源: CoinMetrics)

EIP-1559會改變什麼?

EIP-1559 可以稱作是以太坊歷史上最令人期待的提案之一。它對以太坊網絡的交易費機制進行了很大改造,主要可以概括為:

引入彈性區塊大小的機制,每個區塊的最大Gas Limit 被提升至原來的2 倍,礦工可以在網絡擁堵的時候彈性地改變區塊的大小。原本單一的交易費被更改為固定費用(Base Fee)加上小費(Inclusion Fee)的模式,固定費用是必須支付的部分,並且會根據上一個區塊的Gas 使用情況進行動態調整。且每個區塊的固定費用部分都會被燒毀,不會給到礦工。

彈性區塊大小允許礦工動態擴張或縮小區塊大小來處理暫時性的網絡擁堵。有了EIP-1559 之後,每區塊的目標Gas 限值還是15M, 但是最大Gas 限值會從15M 調整到30M(差不多2倍)。如果區塊中使用的gas 量比目標gas 限值少,那麼代表網絡是不擁堵的,下一個區塊的固定費用會降低。如果如果區塊中使用的gas 量比目標gas 限值多,那麼代表網絡是擁堵的,下一個區塊的固定費用會升高。我們會在下文仔細講解這種機制。總的來說,交易量的波動原先會轉化為交易費的波動,而如今轉化為區塊大小的波動。

區塊擁堵程度(來源: IOSG Ventures)

EIP-1559 引入一種新的交易費用機制,來解決首價拍賣模型中的問題。每區塊固定費用是“基礎費用(Base Fee)”,給礦工的額外的激勵是“小費(Inclusion Fee)”。所以交易費變為:

TransactionFee = BaseFee + InclusionFee

進一步分解:

TransactionFee = BaseGasPrice × GasLimit + InclusionFee

Base Gas Price 代表每個區塊的Base Fee 裡的Gas 的單價,每個區塊的Base Gas Price 是固定的,而且價格高低由前一個區塊的擁擠程度來決定,

BaseGasPrice = PreviousBaseGasPrice × (1 + k × CongestionLevel)

其中Congestion Level 代表區塊的擁擠程度,Previous Base Gas Price 代表上一個區塊的Base Gas Price。 k是調整速度係數,0 < k < 2。而根據EIP-1559 的初始設定,k=1/8。擁擠程度會根據每區塊中使用的gas 量是否大於目標gas 限值來決定。

CongestionLevel = (PreviousBlockGas / UsedTargetGasUsed - 1)

總結來說,我們可以看到,

0.875 × PreviousBaseGasPrice ≤ BaseGasPrice ≤ 1.125 × PreviousBaseGasPrice

假設gas 限值相同的情況下,

0.875 × PreviousBaseFee ≤ BaseFee ≤ 1.125 × PreviousBaseFee

當網絡擁堵時,每過一個區塊後Base Fee 最多會增加12.5%,Base Fee 不斷增加直到用戶因為交易不再盈利而減少交易,所以這種機制可以緩解擁堵的網絡;當網絡不擁堵的時候,每過一個區塊後Base Fee 最多會減少12.5%,Base Fee 的下降激勵用戶增加交易。

小費是用戶付給礦工加速交易用的。小費是可選項,可以設置成零。礦工仍然用首價拍賣模式來優先選擇有更多小費的交易來打包進下一個區塊。

通脹還是通縮?

以太坊每年的通脹率為4%,每個區塊會鑄造2 個ETH 作為固定區塊獎勵。在EIP-1559 中,Base Fee 裡的ETH 都會被燒毀,這會對ETH 的價格產生通縮壓力。

區塊獎勵分解(來源: IOSG Ventures)

倫敦升級和EIP-1559 提案已經在區塊高度10499401 部署在了Ropsten 測試網。目前社區正在觀察EIP-1559 的表現,以及gas費會怎麼變化。最近,許多文章和評論都刊登了http://watchtheburn.com/ 這個網站的截圖,這個網站在監測有多少ETH 被Base Fee 燃燒掉。

Ropsten 測試網上燒毀的ETH (來源: watchtheburn.com)

截至目前,從區塊高度10499401 到10512250,總共燒掉了88571 個ETH。也就是說在12859 個區塊中燃燒了88571 個ETH,同時有2 * 12859 = 25698 個ETH 被鑄造。這意味著ETH 確實因為EIP - 1559 變得“通縮”了!

但是EIP-1559 在以太坊主網上線後也會是這個結果嗎?我們覺得不會。

我們認為在Ropsten 上之所以燃燒了這麼多的ETH,是因為網絡有許多不尋常的連續的擁擠的區塊,這些擁擠的區塊將Base Gas Price 推到很高,並且持續了很長一段時間。一個很好的證明是區塊高度10503157 到10504352,Base Gas Price 從98.45 Gwei 增加到了82851 Gwei,在1195 個區塊中增長了841 倍。

Rospten測試網中區塊高度為10499401 到10506825 的基礎費用價格(來源: IOSG Ventures)

這種情況很特殊,更像是開發者在測試網上做的極端測試。

主網上線後不會出現相同的情況,因為逐步提高的Base Fee 會迫使需求不那麼強烈的用戶不進行轉賬,進而把區塊大小恢復到目標大小,從而降低Base Fee。

以太坊社區的@barnabemonnot 做的模擬展示了Base Fee 到達一個峰值之後可能的走勢

Base Fee 模擬(來源: @barnabemonnot)

我們預測當主網高度擁堵的時候,一個常見的規律會是幾個大型區塊後緊接著幾個小型區塊。高度擁堵的情況不會超過5分鐘,以太坊還是會通脹但是通脹率相對較低。

交易費會下降嗎?

EIP-1559 主網上線之後,交易費會下降嗎?是的,我們認為雖然降低交易費並不是EIP-1559 提案的最終目的,但是它確實會降低以太坊網絡的交易手續費。

首先,因為交易費被分為了Base Fee 和小費兩部分。過去人們增加gas 單價來加快交易被打包確認,整個交易費被增大。而現在改成通過增加小費來加速交易被打包,這並不會影響到Base Fee,Base Fee 仍然只是反映著網絡的擁堵情況,小費則反映著用戶對交易能否成功的緊急程度,這兩個部分不會再混在一起了。因此用戶更清楚自己至少需要出多少交易費,用戶變得更加理性後會減少過度競價,這樣就能讓gas 費降下來。

Gas Fee 分解(來源: IOSG Ventures)

第二,可變的區塊大小可以在交易量大的時候作為緩衝,把gas 費的波動轉化為區塊大小的波動。所以當交易量激增時,gas 費會比以前上漲得緩慢。

最後,EIP-1559 上線之初Base Gas Price 會被設置為1 Gwei,相較於最近20+ Gwei 的gas 價格,這會在剛上線的時候把gas 費短暫地拉低。

另一方面降低gas 費並不是EIP-1559 的目的。它的目的更多的是想要讓gas 費的變化變得更加平穩,減少用戶過度競價,並且讓gas費有更高的可預測性。

錢包和用戶會怎麼樣呢?

錢包對gas 費不再是估算而是精準計算,因為現在可以準確計算出下一個區塊的Base Gas Price 了,用戶對交易費用的數額有更清楚的認知。錢包會顯示下個區塊的Base Gas Price,並且允許用戶設置小費來加快打包。

錢包開始設計新的UI模板,以下是Metamask(非官方)和Status(非官方)的模板。

     

錢包頁面模擬(來源: @tvanepps from HackMD)

對用戶來說,最大的不同就是他們不再需要猜測交易費用的高低,他們不用去猜測自己付的交易費夠不夠高,能不能被打包進區塊;或者自己付的交易費用夠不夠低,有沒有白白多支付費用。現在Base Fee 就像一個定價銷售,用戶只需要決定是否能夠接受這個定價。

用戶可以根據下一個區塊的Base Gas Price 來設置一個Base Gas Price Cap,即用戶願意支付的最大Base Gas Price。這麼做的原因是當用戶進行支付時,可能已經有新的區塊生成因此Base Gas Price 發生了改變,而如果用戶設置一個稍微高一點的Base Gas Price Cap 就可以讓他的交易在接下來的幾個區塊裡被順利打包。 Base Gas Price Cap 和交易被打包區塊的Base Gas Price 的差額是會被退回給用戶的。

這就是說,即使用戶高估了下一個區塊的Base Fee,然後設置了一個過高的Base Fee Cap,他也不會過度支付Base Fee。例如下個區塊的Base Gas Price 是200 Gwei,而用戶設置的最大gas 價格是300 Gwei,如果交易是被下一個區塊打包的,那用戶還是只需要按照200 Gwei 的gas 價格來付費!這是一個對用戶友好度的大改進!

礦工會怎麼樣呢?

毫無疑問,一些礦工會認為EIP-1559 是一個壞消息。原本所有交易費都歸礦工所有,而現在只剩下小費會給到礦工,而BaseFee的部分會被燒毀掉,因此礦工們將會失去部分收入。

區塊獎勵流出方向對比 (來源: IOSG Ventures)

毫無疑問,一些礦工會認為EIP-1559 是一個壞消息。原本所有交易費都歸礦工所有,而現在只剩下小費會給到礦工,而BaseFee的部分會被燒毀掉,因此礦工們將會失去部分收入。對於MEV而言,礦工在EIP-1559後仍然有調整交易在區塊中的順序的能力,所以MEV的基本面保持不變。

下圖是Flashbots 基於MEV佔比的礦工收入明細。我們假設對於一個非MEV交易,Base Fee 通常會比小費多很多,所以下圖中大部分的橙色區域會被燒毀,小部分因為小費的存在而留下;而對於礦工MEV收益的部分,大部分MEV收益是來自於Flashbots 裡的searcher 支付的打包費,和礦工通過往區塊裡混入自己的交易得到的收益。被燒毀的Base Fee 和前兩個部分相比十分小。所以下圖中大部分的綠色區域會保留,大部分的MEV收益仍會被捕獲到。

礦工利潤分解 (來源: Flashbots)

從長期前景來看,EIP-1559 給ETH 帶來通縮壓力;ETH 的價格升值最終會讓礦工受益。如果礦工在ETH 數量上損失了25%,但ETH 價格上漲了35%,礦工的美元收入仍然是不變的。

也有提案是說,與其燒掉所有的Base Fee,不如將其中的一小部分與礦工分享。總而言之,所有這些都可以根據EIP-1559 的表現進行協商和調整。

EIP-1559 會對Flashbots 的使用有影響嗎?

Flashbots 的用戶是通過EIP-1559 引入的新費用機制競拍還是繼續使用Flashbots 呢?新費用機制的小費部分似乎可以用於競拍。

Flashbots 提供的一個重要的功能叫做pre-trading privacy,交易只有在被打包進區塊之後才會被公開。 Flashbots 使用首價密封投標拍賣的方式,所有用戶同時提交密封的交易包以及競價,沒有競拍者會提前知道其他人的交易包的內容和所出的競價。所以用戶不用擔心被搶先交易,因為他的交易是全程被密封著的。

因為無法提供pre-trading privacy,所以EIP-1559 不能代替Flashbots。假設套利者提交了一個能夠盈利$100 的交易進入內存池,並附上有90$ 的小費。這個交易在進入池子的時候就會被公開,其他套利者可以復制他的交易,並且提交一個新的有更高小費的交易, 比如帶有$95 的小費的新交易。於是新的交易會被打包進區塊,原來的套利者就因為被搶跑而失去了套利機會。 EIP-1559 沒辦法改變這種情況,無法給用戶提供搶跑保護。

沒錯,即使在EIP-1559 上線之後,以太坊用戶還是會大量使用Flashbots,來尋找進入區塊無風險入口以及搶跑保護。

結論

EIP-1559 引入了新的gas 費機制,用Base Fee + 小費的模式代替了單一的費用機制。以太坊區塊大小具有了彈性,由此將gas 費的變化轉嫁為區塊大小的變化。在EIP-1559 上線後, 以太坊網絡的交易費會變的更低並且有更大的可預測性;ETH 仍會是通脹的狀態但是通脹率會降低;以太坊網絡擁堵的情況會得到緩解;用戶體驗度會得到提升。這些改變會大大提升以太坊的可用性,並讓更多的用戶最終向以太坊傾斜。

雖然礦工短期會損失一些收益,但是長遠來看最終會享受到以太坊價格上漲帶來的更多收益。礦工依然擁有調整區塊中交易順序的自由,所以MEV 的基本面並沒有被改變,但由於Base Fee 的燃燒,礦工在MEV 方面的收益會相應減少;EIP-1559 不能代替Flashbots 提供pre-trading privacy的功能,所以需要防止交易被搶跑的用戶仍然需要使用Flashbots。   

EIP-1559 已經在Ropsten 測試網上線,之後會陸續登陸Goerli、Rinkeby 和Kovan 等測試網。在測試完備後,EIP-1559 預計會在7月底進行主網上線。