I would like to understand the rather large difference in gas costs of
transfer operations of the same ERC-20 token. I know that all ETH transactions cost 21000 gas, and I know that all ERC-20 transfer functions have to make a "transaction" call plus some Smart Contract operations, which will generally lead to transfer functions costing ~40 000 to ~60 000 gas. At least, gas cost in that range is what I have observed for USDC, USDT, LINK, OMG and a few others.
Check the ETH Yellow Paper, page 27, where it says that Gtransaction is indeed 21000: https://ethereum.github.io/yellowpaper/paper.pdf. It also details the costs of all other operations.
Smart Contract operations are encoded in the "data" property of an ETH transaction. The
transfer operation takes 2 inputs, the destination address and the value to send.
Here are 2 USDT transfer operations with a 12 gas difference, along with the "data" property value.
- 41,309 gas
- 41,297 gas
In the ETH Yellow Paper page 27 it says a non-zero byte (Gtxdatanonzero) is worth 16 gas, and a zero-byte (Gtxdatazero) 4 so I was guessing that (16 - 4) might be the difference, though I don't see it in the "data" property strings. They seem to be exactly the same amount of bytes.
Here are transactions that cost way more:
- 63,221: https://etherscan.io/tx/0x3fe51993e9840baa36089a930303126848054ee4e574af26e421b51298dd97be
- 46,109: https://etherscan.io/tx/0x3b797e304fc1dce2829d971a72247ead31ad891b08dc94c641e3b49e7e27ea80
Is it the list in the Yellow Paper that explains the differences? If so, which operations exactly are being called? And how would I figure this out?
Related SE posts
- Why does zero to non-zero in storage take higher gas? (thx to @Lauri Peltonen)
- Why do these two Ethereum transactions have different gas usages? Can't explain it from the GETH EVM debug traces
- Calculate transaction costs for storing data
- Explanation on 4800 gas refunds: https://growingdata.com.au/how-to-calculate-gas-fees-on-ethereum/
- Specifics on operations and exact gas costs: https://medium.com/coinmonks/on-efficient-ethereum-addresses-3fef0596e263
- Detailed gas consumption analyzer: https://dashboard.tenderly.co/tx/mainnet/0x9ace5449eb6e06869811160970ae80df6c78303996f37aaef7ed48bbf55d6b18/gas-usage