Token Origins
A token reaches Injective through one of four origins. The origin determines the denom format, which account controls metadata, and what is required to make the token visible to the EVM.
Each origin produces a bank denom. The exchange, auction, insurance and permissions modules all operate
on bank denoms, so origin does not constrain what a token can later be used for.
MultiVM Token Standard describes the underlying model.
Compliance gated assets follow the TokenFactory sequence below with a permissions namespace layered on
top. Issue Permissioned Assets covers roles, policies and KYC
hooks.
Settings Fixed at Creation
Three properties of a TokenFactory denom cannot be changed once set. Decimals cannot be changed after bank metadata records a non-zero value. Later changes fail withcannot update denom metadata decimals, so an incorrect value is permanent.
Admin burn is set by --allow-admin-burn on create-denom and can only ever be turned off.
Re-enabling it fails once it is false or has been disabled. While false, no account can burn from
another address, and a paired ERC20 cannot burn at all, since an ERC20 burn always reaches the chain
as a burn from the holder rather than from the contract. Setting the flag does not by itself authorize
the paired contract to burn; that requires the separate native authority described under EVM Access.
Admin authority is unrecoverable once renounced. Setting the admin to the zero address
inj1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqe2hm49 freezes supply, which is frequently the intent. It also
leaves MsgSetDenomMetadata with no authorized sender, governance included, and removes the mint
authority that a paired ERC20 depends on.
Creating the Denom
The creation fee is paid by the creator and differs between networks. At time of writing it is 0.1 INJ on mainnet and 1 INJ on testnet. The current value is held in the module params:Web applications
Injective Hub and DojoSwap both create and manage tokens and can launch a market for them. TokenStation adds airdrop and launch tooling.injectived
--chain-id=injective-1 and
--node=https://sentry.tm.injective.network:443.
SDKs and contracts
- TypeScript: TokenFactory SDK examples
- Wasm contracts:
injective-cosmwasmexposescreate_new_denom_msg,create_set_token_metadata_msg,create_mint_tokens_msgandcreate_burn_tokens_msg - Message reference: TokenFactory messages
Metadata
Wallets, explorers and Solidity callers read name, symbol and decimals from bank metadata. A denom without metadata displays blank with zero decimals.true.
Token metadata documents the individual fields.
Supply
EVM Access
A TokenFactory denom is not visible to MetaMask or Solidity contracts until an ERC20 pair is registered for it.--erc20 omitted, the
chain deploys a MintBurnBankERC20 owned by the pair creator. Supplying a contract address instead is
subject to further constraints, documented in ERC20 Module.
Registering a pair does not alter the contract, grant it any native authority, or change who controls
metadata. It records a mapping between the denom and the address, and nothing else.
Discovery
On-chain metadata does not make a token appear in dApp frontends, which read from registries. injective-lists supplies logos and labels across Injective dApps, and is documented at Injective List. Symbols are not unique across tokens. Integration instructions identify an asset unambiguously only by network, bank denom and ERC20 address.Markets
A spot market can be created on the native orderbook once supply exists and metadata is set. See Launch a Market.Reference
Token Factory
Module capabilities and the scope of admin control.
TokenFactory Messages
Message and state specification, including authorization rules.
MultiVM Token Standard
One balance across the native layer and the EVM.
Issue Permissioned Assets
Compliance gated launches with roles, policies and hooks.
