Contract-Design

什麼類型的操作有負 gas 成本?

  • June 10, 2016

我了解某些操作會消耗負 gas,因為它們釋放了區塊鏈上的空間,例如自毀。可以產生負氣體的操作有哪些?這僅僅是因為該操作最終釋放了區塊鏈上的空間,還是有其他原因它有負氣體?

僅有的兩個負 gas 成本的 OPCODE 是 STORAGEKILL(-15000) 和 GSUICIDEREFUND(-24000)。

當儲存值被刪除或聯繫人被自殺時,就會發生這些情況。

這些 OPCODE 授予 gas 退款,因為它們釋放了區塊鏈中的空間。

所有 OPCODE 的價格都可以在 這裡找到

selfdestruct作為對 Tjaden 回答的實際恭維,在 Solidity 中,當或delete基於現有數據時會發出 gas 退款:

delete a將類型的初始值分配給a。即對於整數,它等價於a= 0,但它也可以用於數組,其中它分配長度為零的動態數組或相同長度的靜態數組,所有元素都重置。對於結構,它分配一個所有成員都重置的結構。

delete對整個映射沒有影響(因為映射的鍵可能是任意的並且通常是未知的)。因此,如果您刪除一個結構,它將重置所有不是映射的成員,並且還會遞歸到成員中,除非它們是映射。但是,可以刪除單個鍵及其映射的內容。

需要注意的是,它的delete a行為實際上類似於對 的賦值a,即它在 中儲存了一個新對象a

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