Who must hold the ERC-20 Token Initial Supply?

Hello, this is not a question on coding itself but in operation. The question is, assuming you have an ERC-20 token, who must be the holder of the initial and all unassigned supply? In other words, who do I mint to the unasigned tokens?

I find 4 candidates:

  • the owner who deployed the contracts
  • the ICO smart contract if there is an ICO
  • the ERC-20 token address itself
  • another special wallet/smart contract, as an escrow or vault, holding all the unassigned liquidity

Whereas I find enough documentation and discussions on coding, I am not able to find much documentation on operation, e.g. operation with supplies. Can you please point me out to some resources that you know discussing good operation practices?


Response: 3 cases:

  • 1 - Crowdsale owns the tokens => use transfer
  • 2 - MinterRole from ERC20Mintable owns the tokens => use MintedCrowdsale
  • 3 - Other owns the tokens (owner, token smart contract, third party smart contract) =>
    3.1 - use approve + transferFrom or
    3.2 - use AllowanceCrowdsale

It would be interesting to assess each from the point of view of security BTW.


You can have the supply have its ownership unowned or to say owned by the pool itself.

This pattern is used by a protocol called Liquid Gas Token. It is used for gas efficiency.

1 Like

Thanks for making sense of my question. I see your approach is not suitable for a few cases like:

  • it does not allow a crowdsale contract to make the initial token distribution

  • it can only work with one exchange which owns this liquidity pool

  • it can only work with one network and token cannot be crosschain (this would raise another question as I see many tokens mantaining supply integrity across chains manually instead of using bridges, eg USDT)

I would get the same thing by transferring an amount of tokens to the pool manually from the owner

Why should I design the contract centered on the exchange instead of centered on itself and its allocation? ok, gas fees is a reason. But still I see more difficult allocation?