Evm

為什麼在 sstore 操作碼中將儲存槽的值從零更改為非零成本高於非零到非零?

  • January 14, 2022

為什麼將儲存槽的值從零更改為非零比從非零更改為非零、從零更改為零或從非零更改為零成本更高?

預設情況下,所有儲存位置在 EVM 上的值都為零。因此,當您將插槽從零更改為非零時,狀態的整體大小會增加。這意味著,所有節點都必須分配額外的儲存空間來容納您創建的新插槽。但是,當您將一個非零更改為另一個非零時,它不會增加 EVM 狀態的整體大小。儲存速度慢已經佔用了一些空間,它只是被重寫了。因此使用的氣體不同。

此外,當您刪除一些變數時,當執行SSTOREorSELFDESTRUCT操作碼時,會退還一些氣體,因為它釋放了儲存空間。閱讀更多

引用自:https://ethereum.stackexchange.com/questions/118950