Is there a way to add a new token to an already-running Cosmos application chain? For example, let’s say the staking token is “ABC”, and the network is running already. Now, let’s say I wanted to add a new token FOO that people could have balances of, and in fact, even have some validators who are willing to accept GAS that is paid for with a minimum gas price, expressed in FOO.
Can I do this? I am not sure. It almost seems like I would have to define FOO in the genesis before the network started – otherwise, how can it FOO even come into existence?
Hope this makes sense. I want to know if I can add arbitrary new tokens to the network, after the fact. I am pretty sure I can do this before hand by simply modifying the accounts.coins section of genesis.json and adding whatever I want in there.
It is possible and in fact, it has been Already done in the past. Last winter, tendermint team has introduced a concept of photinos on one of the gaia testnets.
It is hard to imagine how this would happen without a hardfork where the genesis is re-written to support a new token, and then we use other mechanisms to rebuild the state of the network before the hardfork.
I assume a new token cannot just magically appear in a cosmos wallet with a certain balance.
You can look at tokenfactory module. This is a module deployed on some chains (Osmosis, Neutron, Juno, Chihuahua) - though the exact implementation may deviate between chains, that allows creating a token without a hardfork.
And yes, with the tokenfactory module, a token can magically appear in a cosmos wallet with a certain balance, as the creator (admin) of the token can usually decide to mint tokens in any wallet.