以太坊價格 以太坊價格
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更長的峰期。

賬戶抽象提案EIP-4337聯合發起人Kristof Gazso創立Web3基礎設施項目Pimlico:2月23日消息,賬戶抽象提案 EIP-4337 聯合發起人 Kristof Gazso 在推特上表示,已辭去在以太坊客戶端 Nethermind 的職務,并創立了 Web3 基礎設施項目 Pimlico,該項目將專注于成為支持以太坊向智能合約錢包過渡的底層基礎設施層。

據此前消息,以太坊創始人Vitalik 聯合 Kristof Gazso、yoav.eth、DrorTirosh、NamraPatel、TomaszK.Stanczak 等人發布賬戶抽象提案 EIP-4337,該提案可在不改變以太坊共識層協議的情況下實現驗證邏輯,并可以通過簽名聚合為 rollups 降低數據成本。[2023/2/23 12:25:33]

規范

參數

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

以太坊牧貓人項目管理人員:伴隨對冰河期進行修復,希望沒有EIP-1559的礦工將無法進行簡單的鏈分叉:3月6日消息,以太坊牧貓人項目管理人員、以太坊生態系統貢獻者Edson Ayllon表示,EIP-1559將在以太坊倫敦網絡升級中啟動,同時將對即將到來的冰河期(Ice Age)進行修復。希望沒有EIP-1559的礦工將無法進行簡單的鏈分叉,但需要在冰河期(Ice Age)取消后分配新客戶端。

此前2月11日消息,隨著以太坊逐漸進入冰河期(Ice age)使得挖礦難度不斷加大,每日新挖出的以太坊總量已經從20000個減少到了13000個,下降了近一半,降至歷史最低點。

據悉,以太坊的冰河期(Ice Age)是以太坊的PoW機制對難度(difficulty)的調整策略。以太坊里PoW對難度的調整將根據區塊高度不斷增加,而這個增加是指數級的,算力發展的速度將遠跟不上難度增加的速度。以太坊是不能進入冰河期的,進入冰河期意味著以太坊將失去功能。以太坊設置冰河期是為了表明其要轉向PoS的態度和決心。[2021/3/7 18:22:48]

1.移除SELFDESTRUCT的返還

V神:EIP1559可幫助解決交易費收入過高問題:金色財經報道,V神剛剛發推文稱,目前交易費收入已接近區塊獎勵的一半,這使得以太坊鏈冒著更不安全的風險。針對費用市場的提案(例如EIP1559)就是為了解決這個問題,這也說明了該EIP為何如此重要。[2020/7/22]

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

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

原理闡釋

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

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

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

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

以太坊2.0測試網頻現存款失敗現象 EIP-2537或成解決方案:據ConsenSys研究員Ben Edgington最新透露,以太坊2.0的0階段測試工作目前正進入高峰時期,開發者們在測試網上觀察到了很多存款失敗的情況,導致存入的32 ETH永久丟失。由于存款合約已經過形式化驗證,開發者們并不想重新設計該合約,因此提出的解決方案是在以太坊1.0中引入EIP-2537,此外還會涉及到一個代理合約,它可以收取存款人的存款,在檢查無誤的情況下,再轉發給存款合約。最終這一方案取決于參與者是否愿意接受。[2020/6/15]

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

動態 | 以太坊君士坦丁堡升級修改為兩個名稱,并刪除改進提案EIP1283:以太坊官方網站今日更新了關于以太坊君士坦丁堡升級的最新公告,并表示,以太坊網絡將按原定計劃在區塊高度達到7,280,000時發生。預計將于2019年2月28日(周四)進行。具體的日期可能會根據時間段的不同而變化,可以在1-2天之前或之后激活。這次網絡升級的名稱變為君士坦丁堡/圣彼得堡。此次網絡升級有兩個名稱的原因是原來的君士坦丁堡網絡升級被推遲了,需要在相同的區塊上進行兩個協議升級,以修復各種以太坊測試網絡上的問題。圣彼得堡變化主要體現在,在對以太坊主網執行網絡升級之前,將對測試網絡(如Ropsten)進行升級測試更改。此文章中列出的原始君士坦丁堡更改,在推遲之前應用于測試網絡,并且需要第二次網絡升級以撤消原始君士坦丁堡的更改。這被稱為圣彼得堡,它出現在與君士坦丁堡相同的區塊上。查詢發現,使用圣彼得堡網絡升級從測試網絡中刪除了提案EIP1283。(華爾街見聞)[2019/2/23]

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

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:GASSTO以太坊STORUGAS-JUN21幣Moon Stop以太坊最新價格Storage area network anywhere

歐易交易所
數字人:數字人才景氣指數報告:全國平均年薪約15萬元

人工智能、區塊鏈、云計算和大數據等數字技術以迅雷不及掩耳之勢將人類社會帶入了數字經濟時代,第四次工業革命以勢不可擋之勢由此拉開了大幕.

1900/1/1 0:00:00
FTX:FTX創始人SBF:狗狗幣距離比特幣還很遠,不構成威脅

律動BlockBeats消息,5月11日,FTX創始人SBF接受了彭博社直播采訪,就加密貨幣與傳統金融的區別與金融時代變化發表了自己的見解.

1900/1/1 0:00:00
EFI:數據透視DAO:資金半年增長523%,風投類DAO增速顯著

去中心化自治組織DAO,顧名思義,是指通過代碼執行的自動化程序來實現與現實世界中的公司或組織一樣的功能。DAO無需分層級管理,人人皆可參與,其最終愿景是提供一種取代傳統經濟和社會協調機制的方式.

1900/1/1 0:00:00
ART:藝術新表達,池磊首個跨界巨幅NFT作品將在UniArts Network首發

池磊作品《天真無邪先鋒隊》中國潮流藝術家池磊首個跨界巨幅NFT作品《天真無邪先鋒隊》將于UniArtsNetwork進行首發,預計于5月下旬登錄飯團密畫.

1900/1/1 0:00:00
FORM:融資新聞 | 抗量子混合區塊鏈平臺QANplatform完成210萬美元戰略輪融資,即將上線Uniswap

據U.Today5月11日報道,抗量子混合區塊鏈平臺QANplatform完成210萬美元風險融資。根據路線圖,QANplatform計劃5月12日上線Uniswap.

1900/1/1 0:00:00
SEC:SEC 的新玩具 “加密印鈔機”,7 年罰款17億美元

一份新報告顯示,截止2020年12月31日,美國證券交易委員會在過去7年里總計發起了75次與加密市場有關的執法行動.

1900/1/1 0:00:00
ads