Solidity

Solidity 中的陣列成本

  • December 3, 2019

為什麼第一次在數組中儲存固態成本比其他時間高?其他時候,它的成本是恆定的,比第一次要少。

(我敢肯定這已經出現過。如果有人能找到以前的答案,那麼請複制……)

黃皮書的附錄 G 中,您將看到以下行:

G sset - 20000 - 當儲存值從零設置為非零時,為 SSTORE 操作付費。

這意味著當你第一次將變數寫入儲存時,它會貴 20,000 gas。對變數的後續更新更便宜。

編輯:

正如 JBrouwer 在評論中指出的那樣,對於結構數組,您還需要儲存長度,因此您要寫入兩個初始歸零的儲存槽而不是一個,這相當於 40,000 個額外的氣體。

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