比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads

GAS:EIP-3529:減少gas返還

Author:

Time:1900/1/1 0:00:00

簡單總結

移除SELFDESTRUCT的gas返還,減少SSTORE的gas返還到一個較低水平,使得返還的量仍然相當大,但不會像現在高到可以被利用的地步。

原因

最初引入SSTORE和SELFDESTRUCT的gas返還是為了鼓勵應用開發者寫應用時能踐行“良好的狀態衛生”,清理不再需要的存儲槽與合約。但是,結果證明這項技術帶來的效率遠低于預期,gas返還還帶來多項未預料到的有害后果:

gas返還導致GASToken的出現。GasToken有益于把gas空間從低費用階段轉移到高費用階段,但它也對網絡有壞處,尤其是加劇狀態大小膨脹(由于狀態槽被有效用作“電池”來積攢gas)和低效地堵塞區塊鏈gas使用。

gas返還加劇區塊大小變化。一個區塊實際消耗的gas量的理論最大值是接近名義上的gaslimit(因為返還會增加同一區塊里后面交易的gas空間,盡管返還的gas最多是該筆交易消耗gas的50%)。這一點不是致命的,但影響還是相當不好,特別是返還可以被用來維持比EIP-1559使用兩倍gaslimit更長的峰期。

目前已有10萬個獨立地址幫助EIP-4844進行隨機數據采樣:5月31日消息,以太坊研究人員提出一項計劃以使存儲來自Layer 2匯總的數據成本更低,第一階段需要將 EIP-4844(稱為 proto-danksharding)引入以太坊主網,預計將在年底前與Dencun升級一起進行。目前已有10萬個獨立地址幫助以太坊EIP-4844引入“blob-carrying交易”進行隨機數據采樣。[2023/5/31 11:50:36]

規范

參數

對于存在block.number>=FORK_BLOCK的區塊,需要作下列變更。

1.移除SELFDESTRUCT的返還

2.用SSTORE_RESET_GAS+ACCESS_LIST_STORAGE_KEY_COST(EIP-2929+EIP-2930合力下的4,800gas)取代SSTORE_CLEARS_SCHEDULE

以太坊社區圍繞EIP-1559提案討論仍陷膠著狀態:據Cointelegraph 3月15日消息,以太坊社區針對EIP-1559提案討論仍處于膠著狀態。針對3月13日,礦工提出針對EIP-1559的提案EIP-3368,即擬將當前區塊獎勵從2ETH增加至3ETH,已有礦池Red Panda Mining表示支持該提議,并承諾不再參與51小時算力轉移示威活動。雖然這表明部分以太坊礦工和開發者可能準備達成某種形式的妥協,但根據以太坊社區論壇關于EIP-3368提案的討論表明,以太坊社區當前仍然呈現分裂態勢。與此同時,礦工群體內部似乎也對EIP-3358提案產生了抵制,許多人在Twitter上回復表示,許多礦工仍然希望展示自己的力量。此前3月11日消息,ETH礦工計劃發起51小時算力轉移示威活動以反對EIP-1559,隨后有礦工提出針對EIP-1559的提案EIP-3368,擬將當前區塊獎勵從2ETH增加至3ETH。[2021/3/15 18:45:17]

3.把交易后的最大返還gas量減少到gas_used//NEW_MAX_REFUND_QUOTIENT

原理闡釋

少數以太坊礦池正在聯合抵制EIP-1559提案的實施:1月22日消息,一些以太坊礦工組成了一個卡特爾組織,以阻止一項目前存在爭議的提案EIP-1559的實施。他們表示,這一提議不公平地削減了他們的利潤。(CoinDesk)[2021/1/22 16:44:37]

EIP-2200引入了返還的三種情況:

1.如果原始值是非零,新值是零,添加SSTORE_CLEARS_SCHEDULE的gas量到返還計算器

2.如果原始值是零,當前值是非零,新值為零,添加SSTORE_SET_GAS-SLOAD_GAS(當前是19,900)的gas量到返還計算器

3.如果原始值是非零,當前值是一個不一樣的非零值,新值等于原始值,添加SSTORE_RESET_GAS-SLOAD_GAS的gas到返還計算器

在這三種情況里,只有(1)會啟動gastoken且允許區塊在執行上消耗超過區塊gaslimit的gas。(2)不具有這個特點,因為要獲得19,900的gas返還,同一個存儲槽必須在之前從零改為非零,這需要消耗20,000gas。無法從一個存儲槽獲得gas并用它來編輯另一個存儲槽,意味著它不能被用作gastoken。另外,獲得返還需要恢復存儲的寫入和擴展,使得返還的gas不會增加客戶端處理區塊的工作量。(3)是相似的:只有當同一個存儲槽在之前已經消耗了5,000gas的時候才能獲得4,900gas返還。

分析:以太坊競價升級算法EIP-2593提案是以用戶為主導的策略:加密貨幣研究員hasufl和gakonst聯合發布了對EIP-2593 區塊空間市場提案的分析,分析稱,EIP-2593 更廣為人知名字是競價升級算法或者簡稱為自動扶梯,被稱為改進以太坊交易費機制的 EIP-1559 提案的替代品,因為在設計目標上有很大的重疊。在自動扶梯方案中,用戶繼續參與區塊空間的第一價格拍賣。不過每一筆交易都可以選擇為逐步提高的出價提供參數,從而為區塊生產者創建一個基于時間的拍賣,以便納入這筆交易。EIP-2593 引入了用戶必須指定的參數,包括用戶愿意為交易支付的最低價格、交易有效的第一個區塊、發送方為處理此交易愿意支付的最大價格、用戶愿意等待處理交易的最后一個區塊。EIP-2593 機制向交易中附加一個不斷升級的出價,以緩慢地測試最佳出價。從較低的費用開始,有助于避免支付過高的價格,因為礦工應以他們愿意接受的最低價格進行交易。不斷升級的價格確保了一筆交易最終被包括在內,前提是交易價格高于網絡 gas 費,有助于防止支付不足。不過自動扶梯算法比 EIP-1559 小得多,并且設計范圍不同。EIP-1559 拍賣范圍也相對較小,即使在目標重疊的地方,結果也很難比較。這兩個提案是相輔相成的,盡管不一定是在基礎層,但都應該贊同。現在自動扶梯算法已經被使用了,無論是用戶手動操作,還是在以太坊進行大量交易的專業服務公司的內部使用。這證明了自動扶梯是用戶的主導策略。因此,應該關注的不是自動扶梯算法是否有用,而是它們是否應該在協議內部或外部實現。[2020/6/25]

此EIP處理第一種情況。我們可以通過使用一個相似的“配對”變元來確定在何種條件下gastoken是不可用的(例如,你不可以在一個存儲槽里獲得比你的輸入更多的gas),將每一筆返還映射到同一筆交易的同一個存儲槽的前一筆支出。當一個存儲槽的原始值是非零值,如果它被改為0時,有兩個可能性:

動態 | 以太坊開發人員對伊斯坦布爾升級實施EIP-1884表示擔憂:以太坊伊斯坦布爾升級的日期尚未確定,但開發人員對其中EIP-1884的實施提出了擔憂。該EIP建議對某些操作碼重新定價,以在gas支出和資源消耗之間取得良好的平衡,該EIP建議提高這些操作碼的gas成本。據此前消息,V神建議在伊斯坦布爾硬分叉時提高gas limit。(ambcrypto)[2019/8/31]

1.這可能是存儲槽第一次被設置為零。在這種情況下,我們可以把這個時間與SSTORE_RESET_GAS+ACCESS_LIST_STORAGE_KEY_COST第一次讀取和編輯存儲槽的最小開銷進行配對。

2.這可能是存儲槽第二次被設置為零或被設置為零后的情況。在這種情況下,我們可以把這個事件與最近一次數值從零改為其他值,且SSTORE_CLEARS_SCHEDULE的gas從返還中被移除的變元進行配對。

對于第二次或之后的情況,SSTORE_CLEARS_SCHEDULE?的值是什么并不重要,因為那個gas大小的返還是與相同大小的清除返還相匹配的。這就只剩下第一種情況了。為了確保存儲槽上消耗的gas總量為正,我們需要SSTORE_CLEARS_SCHEDULE<=SSTORE_RESET_GAS+ACCESS_LIST_STORAGE_KEY_COST。因此,此EIP只把SSTORE_CLEARS_SCHEDULE減少到那兩項開銷的總和。

此EIP的另一個原因是,清除還未被讀取的數據(通常是“無用”數據)是不會有凈返還的,但清除被讀取過的數據(通常是“有用”數據)還繼續會有凈返還。

向后兼容性

返還當前僅在交易執行后應用,因此無法對執行中任何特定可用的調用框架造成影響。因此,清除它們將不會破壞任何代碼的執行,盡管它將使得一些應用變得經濟上不可行。

Gastoken會變得沒有價值。DeFi套利機器人今天經常不是使用已有的gastoken方案就是一個定制的,以減少鏈上的開銷,這得益于重寫它們的代碼以清除對那些不再有用的gas存儲機制的調用。

然而,完全保留在new=original=0!=current?里的返還,以及保留在其他nonzero->zero情況里的一些返還能確保一些接收(和值得)更好的gas開銷待遇的關鍵用例能持續獲益。例如,zero->nonzero->zero的存儲設置模式保持只需消耗大約100gas。這些模式包括兩個重要實例:

?反重入鎖(通常在一個子調用開始前從0變為1,當子調用結束時再變回0)

?ERC20授權與發送(當代幣轉移得到授權,"授權值"會從零變成非零,然后在代幣轉移過程中恢復到零)

對清除存儲激勵的影響

對之前關于移除返還的EIP(EIP-3298和EIP-3403)的批評是這些EIP完全消除了把一個值設為零的激勵,相當于鼓勵用戶不要完全清除一個存儲槽(即使他們想這么做),哪怕他們想再次使用該存儲槽的幾率是最小的。

舉一個例子,如果你有一個單位的ERC20代幣,且你要送出或賣出你的所有余額,你可以只給出0.999999個單位,把剩余的留下。如果你想在未來重新放入更多該種代幣到同一個賬戶,你僅需要為SSTORE支付5,000gas(2,100用于讀取+2,900用于非零變為非零的設置)而不是22,100(20,000用于零到非零值的設置)。今天,這部分的gas會被清除存儲獲得的15,000gas返還所抵消,因此,如果你有超過15000/17100=87.7%的把握會再使用這個存儲槽,你才會有動力這樣做;按照EIP3298或EIP3403的設定,抵消激勵這部分是不存在的,因此,如果你再次使用該存儲槽的可能性是大于0的,設為非零值會更好。

對于剩下的4,800gas返還,如果你覺得再次使用某個存儲槽的幾率大于4800/17100=28.1%,你才有保持該存儲槽為非零的動力。這并不是完美的,但它可能高于一般人在清除了他們的全部余額后在同一個地址重新獲得同一代幣的幾率。

gas返還的上限是所消耗gas量的1/5,這意味著這種返還僅夠用于增加處理一個區塊所需的存儲寫入操作量最多為25%,限制了利用這個機制進行以存儲寫入為重點的拒絕服務攻擊。

測試用例

EIP-2929的gas開銷

注意,“熱”和“冷”存儲槽之間是有區別的。這個表展示了EIP-2929下的值,假定所有變動過的存儲槽都已經是“熱”狀態(區別是一次性消耗2,100gas)。

減少了的返還后

如果通過把SSTORE_CLEARS_SCHEDULE從15,000變為4,800(以及去除selfdestruct的返還),減少了部分的返還,下面是是一個對比表。

安全考慮

返還對于事務執行時不可見的,因此這不會對事務執行邏輯產生任何影響。

如果我們不計算后來重置回零的零到非零的SSTORE,在一個區塊里執行的最大gas消耗量受到gaslimit的限制。不計算這些事可以的,因為如果這樣的SSTORE被重置了,存儲不會被擴展,客戶端實際上不需要調整默克爾樹;gas消耗是可以返還的,但客戶端對這些操作碼的處理通常也會被取消。如果new_value=original_value,客戶端應該保證不會進行存儲寫入;這是自以太坊創世以來的一次謹慎優化,但它現在變得更重要了。

來源|?eips.ethereum.org

作者|VitalikButerin&MartinSwende

Tags:GASSTOTORSTOREthereum Gas LimitSTONK價格Jeet Detector BotStorage Coin

歐易交易所app官網下載
加密貨幣:傳幣安交易所面臨美國司法部、國稅局調查 再度引發加密貨幣市場震動

來源:財聯社 作者:史正丞 距離馬斯克感嘆比特幣“不環保”引發加密貨幣市場震動還不到24小時,這個熱度爆棚但基本不受監管的領域再度出現利空.

1900/1/1 0:00:00
UET:融資新聞 |Duet Protocol完成300萬美元戰略輪融資

據Zycrypto5月10日消息,將傳統股票資產遷移到加密資產的合成資產協議DuetProtocol宣布完成第一輪融資,獲得了著名戰略投資者的300萬美元投資.

1900/1/1 0:00:00
EFI:DeFi周刊 | DEX聚合平臺ParaSwap已支持UniswapV3

DeFi周刊是金色財經推出的一檔每周DeFi領域的總結欄目,內容涵蓋本周重要的DeFi數據、DeFi項目動態等.

1900/1/1 0:00:00
RAC:融資新聞 |去中心化推薦網絡Attrace完成250萬美元種子擴展輪融資,Deribit創始人領投

要點: 去中心化推薦網絡初創公司Attrace籌集了250萬美元,Deribit創始人領投。Attrace首席執行官ErwinWerring表示,該網絡旨在成為“代幣經濟中區塊鏈代幣化資產的推薦.

1900/1/1 0:00:00
比特幣:金色早報 | ETH昨日平均算力超591.09 TH/s 刷新歷史新高

頭條 ETH昨日平均算力超591.09TH/s刷新歷史新高據OKlink數據,截止5月14日,ETH平均算力達到591.09TH/s,再次刷新歷史新高.

1900/1/1 0:00:00
區塊鏈:金色趨勢丨與趨勢為伍 自然是贏家

據合約帝數據顯示,最近24小時BTC全網合約成交量中開多比例為50.74%,開空比例為49.26%.

1900/1/1 0:00:00
ads