Solidity
Solidity 中的陣列成本
為什麼第一次在數組中儲存固態成本比其他時間高?其他時候,它的成本是恆定的,比第一次要少。
(我敢肯定這已經出現過。如果有人能找到以前的答案,那麼請複制……)
在黃皮書的附錄 G 中,您將看到以下行:
G sset - 20000 - 當儲存值從零設置為非零時,為 SSTORE 操作付費。
這意味著當你第一次將變數寫入儲存時,它會貴 20,000 gas。對變數的後續更新更便宜。
編輯:
正如 JBrouwer 在評論中指出的那樣,對於
結構數組,您還需要儲存長度,因此您要寫入兩個初始歸零的儲存槽而不是一個,這相當於 40,000 個額外的氣體。