Evm
為什麼在 sstore 操作碼中將儲存槽的值從零更改為非零成本高於非零到非零?
為什麼將儲存槽的值從零更改為非零比從非零更改為非零、從零更改為零或從非零更改為零成本更高?
預設情況下,所有儲存位置在 EVM 上的值都為零。因此,當您將插槽從零更改為非零時,狀態的整體大小會增加。這意味著,所有節點都必須分配額外的儲存空間來容納您創建的新插槽。但是,當您將一個非零更改為另一個非零時,它不會增加 EVM 狀態的整體大小。儲存速度慢已經佔用了一些空間,它只是被重寫了。因此使用的氣體不同。
此外,當您刪除一些變數時,當執行
SSTORE
orSELFDESTRUCT
操作碼時,會退還一些氣體,因為它釋放了儲存空間。閱讀更多