Skip to main content
This guide walks through issuing a permissioned token on Injective for institutional use cases - regulated stablecoins, tokenized securities, consortium digital money, or any asset that requires compliance controls over who can mint, burn, send, or receive.

What You Get Out of the Box

TokenFactory

Create and admin your own token. Full control over minting, burning, metadata, and admin transfer.

Permissions Module

Role-based access control: MINT, BURN, SEND, RECEIVE, SUPER_BURN. Role managers, policy managers, and global action controls.

Contract Hooks

KYC/AML enforcement via Solidity or WasmVM hooks. Every transfer is validated before execution.

MultiVM Token Standard

One token across EVM and Native Injective. Standard EVM tools (MetaMask, Hardhat) work alongside native modules.

Native CLOB

Launch a compliance-gated secondary market. Only addresses with the right permissions can trade.

Insurance Fund

Native insurance fund for derivative markets. Underwriters absorb liquidation shortfalls.

Consortium Role Mapping

The permissions module maps directly to institutional roles:

Step by Step

1. Create a TokenFactory Denom

The positional arguments are [subdenom] [name] [symbol] [decimals]. This creates factory/{YOUR_ADDRESS}/MYTOKEN. Admin has full control.
--allow-admin-burn defaults to false and can only be set here. It is a one way latch that can never be re-enabled later. Without it, neither the admin nor a SUPER_BURN holder can burn from another address, and a paired ERC20 can never burn at all. Regulatory seizure via SUPER_BURN depends on it, so set it at creation for any asset that may need it. See TokenFactory messages.
See the token launch guide for UI-based and programmatic alternatives.

2. Set Denom Metadata

This sets the name, symbol, and decimals that MetaMask, Blockscout, and Solidity contracts will read. See token metadata for full details.

3. Create Permissions Namespace

Define roles, assign them to addresses, and optionally attach a compliance hook:
Permission values: MINT=1, RECEIVE=2, BURN=4, SEND=8, SUPER_BURN=16. Combine with addition (e.g., MINT+BURN = 5, SEND+RECEIVE = 10).
See how to launch a permissioned asset for the full walkthrough with CLI and TypeScript examples.

4. Create MTS Token Pair

For TokenFactory denoms, the admin can provide a custom ERC20 contract with hardcoded compliance logic:
Or omit --erc20 for the default MintBurnBankERC20 deployment. Three constraints apply to this step specifically, all covered in full on the ERC20 Module reference:
  • Disabled policies force the template. If the namespace from step 3 disables the MINT, BURN or SUPER_BURN policy, the chain deploys FixedSupplyBankERC20 and rejects --erc20 outright. Defining roles alone does not do this, since unspecified policies default to permissive.
  • Custom contracts need empty constructor metadata. Deploy with empty name, empty symbol and zero decimals, or the constructor writes erc20:0x... metadata and pairing fails with ErrExistingERC20DenomSupply.
  • ERC20 ownership is not native mint authority. The precompile submits native mints and burns with the contract address as sender, so that address needs MINT, and SUPER_BURN for burns, in your namespace. See mint and burn authority.
For implementing a custom IPermissionsHook, see permissioned MTS tokens.

5. Launch a Compliant Market

Launch a spot market where only permissioned addresses can trade:
The permissions namespace ensures that only addresses with SEND/RECEIVE roles can hold the token - so all market participants are compliance-gated by default. See the market launch guide.

What You Can Build After

  • Oracle-backed collateral - Publish off-chain asset valuations on-chain via a custom oracle provider, then use them as collateral for lending or margin
  • Cross-border settlement - Instant settlement between member banks using permissioned transfers
  • Yield distribution - Periodic MsgMint to distribute yield to verified holders
  • Regulatory seizure - SUPER_BURN for compliance-mandated asset recovery
  • Secondary markets - Compliance-gated spot and derivatives markets on the native CLOB
  • Cross-chain flows - Bridge proceeds via CCTP (USDC) or IBC

Reference

Permissions Module

Architecture, concepts, roles, hooks, and policy managers.

Permissioned MTS Tokens

Implement IPermissionsHook in Solidity for custom compliance logic.

Permissions API

TypeScript SDK examples for all permissions messages.

Stablecoin Reference

Circle’s USDC permissions hook implementation - the production reference.
Last modified on October 26, 2026