簡單總結
移除 SELFDESTRUCT 的 gas 返還,減少 SSTORE 的 gas 返還到一個較低水平,使得返還的量仍然相當大,但不會像現在高到可以被利用的地步。
原因
最初引入 SSTORE 和 SELFDESTRUCT 的 gas 返還是為了鼓勵應用開發者寫應用時能踐行“良好的狀態衛生”,清理不再需要的存儲槽與合約。但是,結果證明這項技術帶來的效率遠低于預期,gas 返還還帶來多項未預料到的有害后果:
gas 返還導致 GASToken 的出現。GasToken 有益于把 gas 空間從低費用階段轉移到高費用階段,但它也對網絡有壞處,尤其是加劇狀態大小膨脹 (由于狀態槽被有效用作“電池”來積攢 gas) 和低效地堵塞區塊鏈 gas 使用。
gas 返還加劇區塊大小變化。一個區塊實際消耗的 gas 量的理論最大值是接近名義上的 gas limit (因為返還會增加同一區塊里后面交易的 gas 空間,盡管返還的 gas 最多是該筆交易消耗 gas 的50%)。這一點不是致命的,但影響還是相當不好,特別是返還可以被用來維持比 EIP-1559 使用兩倍 gas limit 更長的峰期。
以太坊核心開發者共識會議:即將上線 EIP-4844 專用短期測試網絡 Devnet #7:7月1日消息,Galaxy 研究副總裁 Christine Kim 發文總結第 112 次以太坊核心開發者共識會議,本周開發人員討論了在 Engine API 中包含 builder override flag,將目標 blob 限制 從 2 上調到 3,將最大 blob 限制從 4 上調到 6,以及圍繞更改驗證器最大有效余額的持續研究。Blob 容量的增加是由以太坊基金會研究 Dankrad Feist 在進行數據實驗測試處理大塊的網絡容量后提出的。
以太坊基金會 DevOps 團隊的 Parithosh Jayanthi 表示,所有 EL 和 CL 客戶端團隊都通過了 Devnet #7 的相關 Hive 測試。他的團隊計劃最早在 6 月 30 日或 7 月 3 日推出 Devnet #7。Devnet #7 是 EIP-4844 的專用短期測試網絡,不會測試其他代碼更改。
另外,開發人員正準備在今年年底前棄用公共 Goerli 測試網絡。為了取代 Goerli,以太坊客戶團隊正在啟動一個名為 Holesky 的新測試網,測試網將托管一個大于 Goerli 和以太坊主網的活動驗證器集。[2023/7/1 22:12:05]
規范
數據:以太坊實施EIP-1559以來,新出產ETH總量的56%通過基礎費用被銷毀:11月19日消息,以太坊自實施EIP-1559以來,截止11月4日,共節省用戶8.44億美元的交易費用(通過base fee refunds)。以太坊平均交易費用在實施EIP-1559之后有所上升,截止10月26日,該費用以美元計算為實施之前的3倍,但礦工的總收入卻增長了33%。此外,自EIP-1559之后,代幣通脹有所降低,新出產ETH總量的56%被銷毀(通過基礎費用)。[2021/11/19 6:59:49]
參數
對于存在 block.number >= FORK_BLOCK 的區塊,需要作下列變更。
1. 移除 SELFDESTRUCT 的返還
2. 用 SSTORE_RESET_GAS + ACCESS_LIST_STORAGE_KEY_COST (EIP-2929 + EIP-2930 合力下的 4,800 gas) 取代 SSTORE_CLEARS_SCHEDULE ( EIP-2200 定義的)
以太坊EIP-1559進展更新:DoS風險仍是落地最大障礙:近日,ConsenSys高級產品經理Tim Beiko發文更新以太坊EIP-1559提案進展。文中稱,EIP-1559所面臨的最大落地障礙依然是DoS風險問題,但目前已經有了一些解決方案。
此外他表示:1.Besu和Nethermind客戶端正同步到1559測試網,正在調試Geth共識問題,大量研發工作正在進行當中;下一步,在GethBesuNethermind測試網上有更多進展,希望通過啟動一個PoW網絡來測試支持EIP-1559的挖礦;2.主網就緒檢查表上線;3.社區中以太坊貓牧人(Ethereum Cat Herders)已發布關于EIP-1559提案的社區調查報告;下一步,以太坊貓牧人將與錢包商和交易所進行更多的聯系,以收集有關1559的反饋。4.下一步可以期待一系列EIP,用于在JSON-RPC規范中添加對1559的支持。[2020/10/19]
3. 把交易后的最大返還 gas 量減少到 gas_used // NEW_MAX_REFUND_QUOTIENT
原理闡釋
EIP-2200 引入了返還的三種情況:
1. 如果原始值是非零,新值是零,添加 SSTORE_CLEARS_SCHEDULE (當前是15,000)的 gas 量到返還計算器
動態 | 以太坊EIP 2515提議用“難度凍結”取代“難度炸彈”:以太坊硬分叉協調員James Hancock最近發布的EIP 2515試圖用“難度凍結(Difficulty Freeze)”取代長期存在的“難度炸彈(Difficulty Bomb)”。
Hancock表示,“難度凍結是一種易于預測和建模的機制,核心開發人員和客戶端維護人員更容易感受到失去它的壓力。客戶端維護人員也被定位為最有能力應對即將到來的難度凍結的群體。”
EIP 2515提議使用難度凍結替換難度炸彈,主要由于最近硬分叉繆爾冰川面臨的問題。 Hancock解釋,EIP背后的動機是簡單地消除難度炸彈的復雜模型,該模型在意想不到的時間出現,造成了技術困難,對礦工造成了負面影響。
如果實施新的EIP,將簡化區塊時間重定目標機制。Hancock還提到該EIP會對其產生影響的一些安全考慮因素。然而,并非每個人都對新EIP感到滿意,有一些批評者傾向于舊方式。(AMBCrypto)[2020/2/17]
2. 如果原始值是零,當前值是非零,新值為零,添加 SSTORE_SET_GAS - SLOAD_GAS (當前是 19,900) 的 gas 量到返還計算器
3. 如果原始值是非零,當前值是一個不一樣的非零值,新值等于原始值,添加 SSTORE_RESET_GAS - SLOAD_GAS (當前是 4,900)的 gas 到返還計算器
動態 | ETC核心開發者就將EIP-161納入Atlantis硬分叉達成共識:據ETC核心開發團隊Medium博客消息,5月30日,ETC核心開發者在有關Atlantis系統升級的電話會議中就將EIP-161納入Atlantis升級達成了共識。據悉,以太坊平臺存在一個DoS攻擊漏洞,有人可以通過創建空帳戶來增加區塊鏈的大小。EIP-161可以通過低成本刪除空賬戶。刪除空帳戶會減少區塊鏈狀態的大小,從而提高網絡性能。[2019/6/1]
在這三種情況里,只有 (1) 會啟動 gastoken 且允許區塊在執行上消耗超過區塊 gas limit 的 gas。(2) 不具有這個特點,因為要獲得 19,900 的 gas 返還,同一個存儲槽必須在之前從零改為非零,這需要消耗 20,000 gas。無法從一個存儲槽獲得 gas 并用它來編輯另一個存儲槽,意味著它不能被用作 gas token。另外,獲得返還需要恢復存儲的寫入和擴展,使得返還的 gas 不會增加客戶端處理區塊的工作量。(3) 是相似的:只有當同一個存儲槽在之前已經消耗了 5,000 gas 的時候才能獲得 4,900 gas 返還。
此 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 的另一個原因是,清除還未被讀取的數據 (通常是“無用”數據) 是不會有凈返還的,但清除被讀取過的數據 (通常是“有用”數據) 還繼續會有凈返還。
向后兼容性
返還當前僅在交易執行后應用,因此無法對執行中任何特定可用的調用框架造成影響。因此,清除它們將不會破壞任何代碼的執行,盡管它將使得一些應用變得經濟上不可行。
Gas token 會變得沒有價值。DeFi 套利機器人今天經常不是使用已有的 gas token 方案就是一個定制的,以減少鏈上的開銷,這得益于重寫它們的代碼以清除對那些不再有用的 gas 存儲機制的調用。
然而,完全保留在 new = original = 0 != current ?里的返還,以及保留在其他 nonzero -> zero 情況里的一些返還能確保一些接收 (和值得) 更好的 gas 開銷待遇的關鍵用例能持續獲益。例如,zero -> nonzero -> zero 的存儲設置模式保持只需消耗大約 100 gas。這些模式包括兩個重要實例:
? 反重入鎖 (通常在一個子調用開始前從 0 變為 1,當子調用結束時再變回 0)
? ERC20 授權與發送 (當代幣轉移得到授權,"授權值"會從零變成非零,然后在代幣轉移過程中恢復到零)
對清除存儲激勵的影響
對之前關于移除返還的 EIP (EIP-3298 和 EIP-3403) 的批評是這些 EIP 完全消除了把一個值設為零的激勵,相當于鼓勵用戶不要完全清除一個存儲槽 (即使他們想這么做),哪怕他們想再次使用該存儲槽的幾率是最小的。
舉一個例子,如果你有一個單位的 ERC20 代幣,且你要送出或賣出你的所有余額,你可以只給出 0.999999 個單位,把剩余的留下。如果你想在未來重新放入更多該種代幣到同一個賬戶,你僅需要為 SSTORE 支付 5,000 gas (2,100用于讀取 + 2,900用于非零變為非零的設置) 而不是22,100 (20,000 用于零到非零值的設置)。今天,這部分的 gas 會被清除存儲獲得的 15,000 gas 返還所抵消,因此,如果你有超過 15000 / 17100 = 87.7% 的把握會再使用這個存儲槽,你才會有動力這樣做;按照 EIP 3298 或 EIP 3403 的設定,抵消激勵這部分是不存在的,因此,如果你再次使用該存儲槽的可能性是大于 0 的,設為非零值會更好。
對于剩下的 4,800 gas 返還,如果你覺得再次使用某個存儲槽的幾率大于 4800 / 17100 = 28.1% ,你才有保持該存儲槽為非零的動力。這并不是完美的,但它可能高于一般人在清除了他們的全部余額后在同一個地址重新獲得同一代幣的幾率。
gas 返還的上限是所消耗 gas 量的1/5,這意味著這種返還僅夠用于增加處理一個區塊所需的存儲寫入操作量最多為25%,限制了利用這個機制進行以存儲寫入為重點的拒絕服務攻擊。
測試用例
EIP-2929 的 gas 開銷
注意,“熱”和“冷”存儲槽之間是有區別的。這個表展示了 EIP-2929 下的值,假定所有變動過的存儲槽都已經是“熱”狀態 (區別是一次性消耗 2,100 gas)。
減少了的返還后
如果通過把 SSTORE_CLEARS_SCHEDULE 從 15,000 變為 4,800 (以及去除 selfdestruct 的返還) ,減少了部分的返還,下面是是一個對比表。
安全考慮
返還對于事務執行時不可見的,因此這不會對事務執行邏輯產生任何影響。
如果我們不計算后來重置回零的零到非零的 SSTORE,在一個區塊里執行的最大 gas 消耗量受到 gas limit 的限制。不計算這些事可以的,因為如果這樣的 SSTORE 被重置了,存儲不會被擴展,客戶端實際上不需要調整默克爾樹;gas 消耗是可以返還的,但客戶端對這些操作碼的處理通常也會被取消。如果 new_value = original_value,客戶端應該保證不會進行存儲寫入;這是自以太坊創世以來的一次謹慎優化,但它現在變得更重要了。
來源 |?eips.ethereum.org
作者 | Vitalik Buterin & Martin Swende
Tags:GASSTOSTORTOR0xGaslessstorj幣總量多少Blockchain Store TokenTORK
編者注: 時間倒退到2013年,進入區塊鏈世界不久后的程序員Vitalik Buterin發現了比特幣的弊端,他認為,應該給比特幣加上圖靈完備的編程語言,這樣任何人都能在上面開發去中心化應用.
1900/1/1 0:00:00金色財經 區塊鏈5月25日訊??自五月中旬加密貨幣市場出現暴跌之后,黃金價格出現明顯回升。根據TradingView數據,本周二黃金價格持續小幅上漲,并于美國東部時間凌晨3:00達到每盎司1,8.
1900/1/1 0:00:00Polkadot 的階段上線即將進入另一個篇章。在我們即將推出平行鏈功能以及其背后的拍賣和眾貸時,讓我們來看看接下來會發生什么.
1900/1/1 0:00:00弗朗西斯福山在《大斷裂》一書中揭示了當代文明中秩序誕生的本質來源:“不再認為是或宗教方面的等級體系權威自上而下的授受,而認作是在分散的個體基礎上實行自組織的結果”.
1900/1/1 0:00:00比特幣「支持者」、特斯拉創始人埃隆·馬斯克凌晨發推,稱比特幣耗能過高,使用過多不可再生能源且造成惡略環境影響,因此特斯拉停止比特幣作為支付手段。比特幣應聲下跌 15%,全網爆倉超 20 億美金.
1900/1/1 0:00:00拿不住的交易員在恐慌性拋售,但比特幣長期持有者以前就見過這種情況。雖然比特幣市場的新參與者一直在恐慌性虧本拋售,但最近的市場下滑并沒有讓老手感到煩惱.
1900/1/1 0:00:00