
EIP-8212:區塊範圍的瞬時存儲
本提案引入了 BSTORE 與 BLOAD 兩個新指令,為 EVM 提供區塊範圍的瞬時存儲;這些數據在同個區塊的所有交易中持續存在,但在區塊完成後自動捨棄,旨在填補交易級瞬時存儲與永久存儲之間的空白並降低 Gas 成本。
EIP-8212 的討論主題
本 EIP 提案內容
本 EIP 引入了兩個新的操作碼:BSTORE 和 BLOAD,為 EVM 提供區塊級別的暫態存儲(block-scoped transient storage)。透過 BSTORE 寫入的值在區塊內的所有交易中持續存在,但在區塊完成(finalized)時會自動丟棄。這填補了交易級別暫態存儲(來自 EIP-1153 的 TSTORE/TLOAD,在每筆交易後清除)與永久存儲(SSTORE/SLOAD,寫入磁碟並永久保存)之間的空白。區塊級別存儲對所屬合約是私有的,並遵循與現有存儲類型相同的回滾(revert)語義。
動機
需要在區塊內追蹤狀態的合約(例如每區塊速率限制、交易量累加器或區塊局部註冊表),目前必須使用永久存儲,為那些在區塊完成後即變得無關緊要的數據支付完整的磁碟序列化成本。這造成了不必要的昂貴開銷。由於區塊級別暫態存儲永遠不會接觸磁碟,因此可以以顯著較低的 Gas 成本提供,同時實現 EIP-1153 交易級別存儲無法實現的跨交易協作新模式。
需要反饋的事項
BSTORE 和 BLOAD 的適當 Gas 成本是一個開放性問題。雖然本 EIP 目前提議為 100 Gas(與 TSTORE/TLOAD 一致),但區塊級別存儲跨越了交易邊界,這意味著值必須在整個區塊期間保留在記憶體中,而非僅單一交易。這種較長的生命週期增加了節點的記憶體負擔,可能需要更高的 Gas 成本以反映額外的資源消耗。
從實作的角度來看,需要關於區塊級別暫態存儲在客戶端實作中與交易級別暫態存儲有何差異的反饋。交易級別存儲可以在交易之間簡單地清除,但區塊級別存儲必須在整個區塊生命週期中維持,同時仍需支援每筆交易的回滾語義。
關於本 EIP 是否作為一種更廣義的形式會更有價值存在疑問——即持續 n 個區塊而非僅一個區塊的存儲。n 個區塊的生命週期將開啟其他用例。歡迎針對「n 個區塊生命週期增加的複雜性是否因擴展的用例而具備合理性」,或者「區塊級別存儲是否為正確的粒度」提供反饋。
更新日誌
- 2026-04-02: 初步草案,提交 Add EIP: Block-scoped transient storage opcodes by monokh · Pull Request #11467 · ethereum/EIPs · GitHub
外部審閱
截至 2026-04-03 尚無。
待解決問題
截至 yyyy-mm-dd 尚無。
參考資料
-
1 則貼文 - 1 位參與者 [閱讀完整主題](https://ethereum-magicians.org/t/eip8212-block-scoped-transient-storage/28137)