There is a Smart Contract call called SSTORE (See ETH Yellow Paper page 27: https://ethereum.github.io/yellowpaper/paper.pdf).
It costs 20000 gas if a zero byte is set to a non-zero byte. It costs 5000 gas if a non-zero byte is set to another non-zero byte.
Here are 2 transactions where one does, and the other one doesn't pay 20000:
- 63,221 gas: https://etherscan.io/tx/0x3fe51993e9840baa36089a930303126848054ee4e574af26e421b51298dd97be
- 41,309 gas: https://etherscan.io/tx/0x9ace5449eb6e06869811160970ae80df6c78303996f37aaef7ed48bbf55d6b18
So then what if I adopt a policy that me and those people I interact with, must always keep at least 1 (in lowest units) of every of the ERC-20 tokens that are relevant to us? If I understand this correctly it would mean that nobody would ever have to pay 20000 gas anymore for the SSTORE operation.
I could keep 0.000001 USDT / USDC, and 0.000000000000000001 LINK, and then if someone would send me either of those tokens, they'd always have to pay only 5000 gas for the SSTORE operation.
Am I correct in thinking this, or am I missing something? Is this already being considered or implemented in the wild?