I was reading a comment on another post on Ethereum SE and found the following statement:
21,000 is for sending Ether, not anything else.
The user suggested to "just set it to a large enough value (which you are willing to pay in the worst case)"
I'm perplexed. When sending ECR20 tokens (such as USDC and USDT) is the gas limit arbitrary? Or is it fixed? Setting it to an arbitrarily large number and hoping it will get accepted by the network might work but it doesn't address the fundamental question of how gas fees are calculated when sending ECR20 based tokens?
Another user suggested in a different thread that the gas fee is in fact fixed by the creator of the token:
You will have control over the gasPrice however a standard ERC20 token transfer's gasUsed will be "fixed" (or at least out of your control).
What is the right answer? How should I calculate the gas fee when sending USDT and USDC?