0

I have a doubt about the gas refund concept.

Imagine that I created a smart contract 1 month ago and now I want to call the SELFDESTRUCT because I want to send the current balance to an address and stop using that smart contract. So far I understood that the gas refund will be deducted from the total gas cost of the transaction that is calling the SELFDESTRUCT, am I right? If not, how is the gas refund "payed"?

Josep Bové
  • 279
  • 1
  • 9

2 Answers2

3

I was trying to find a proper reference to this in Solidity docs, but for some reason I couldn't. The only proper thing I found was https://docs.soliditylang.org/en/develop/introduction-to-smart-contracts.html?highlight=selfdestruct#deactivate-and-self-destruct which doesn't say much about refunds.

So, you are correct. The refund is given in the same transaction, and it can't be stored. Also, the refund can never lower the transaction gas usage to under the basic cost of 21000. This is correct for any refund.

Lauri Peltonen
  • 29,391
  • 3
  • 20
  • 57
2

The concept is that it will refund you UP TO a maximum of 50% of the gas used in the transaction.

So if it costs you 100,000 gas to execute a transaction the refund you receive will be a maximum of 50,000 depending on what you destroy.

Another thing is that the gas limit of the transaction must be set to the full 100,000 even if the transaction only ends up costing you 50,000. The refund is only applied at the end of the transaction, so the full gas must be made available in order to execute the full transaction.

CathalMF
  • 273
  • 1
  • 8