Gas
就 SSTORE 而言,storage_location 是什麼?
我注意到氣體表狀態:
((value != 0) && (storage_location == 0)) ?20000 : 5000
為
SSTORE
. 這是什麼意思storage_location
?
((value != 0) && (storage_location == 0)) ?20000 : 5000
這基本上是說將任何給定的儲存位置(即儲存槽)從 0 設置為 20,000 gas 需要花費 20,000 gas,
value
之後更改其值需要 5,000 gas。因此
storage_location
,以上將意味著我們正在考慮的儲存中的任何插槽。例如,如果我們正在考慮儲存中的插槽號 5,那麼在上面的虛擬碼
storage_location
中將設置為 5,我們正在檢查其目前值是否為 0。黃皮書的附錄 G 是這樣說的:
Gsset 20000 Paid for an SSTORE operation when the storage value is set to non-zero from zero. Gsreset 5000 Paid for an SSTORE operation when the storage value’s zeroness remains unchanged or is set to zero