Injective | Documentation
InjectiveGithub
Injective | Documentation
Injective | Documentation
  • About Injective
  • Getting Started
    • Wallet
      • Create a wallet
      • Accounts
      • Staking
      • Governance
      • Auction
    • Token Standards
      • INJ coin
      • Token Factory
      • CW20 Standard
    • Transactions
      • Gas and Fees
  • Guides
    • Create a Wallet
    • Bridge
      • From Ethereum
      • Using Wormhole
      • Using IBC
      • From Solana
    • Launch a Token
    • Launch a Market
    • Denom Metadata
    • Get INJ
  • Toolkits
    • injectived
      • Install injectived
      • Using injectived
      • Commands
    • Injective TS SDK
    • Injective Go SDK
    • Injective Python SDK
    • Injective CW SDK
    • Injective Rust
    • The Graph
  • References
  • Glossary
  • Developers
    • Getting Started
      • Guides
        • Testnet Proposals
        • Convert addresses
        • Calculations
          • Min Price Tick Size
          • Min Quantity Tick Size
        • Testnet Faucet Integration
    • Exchange Developers
      • Build a DEX
      • Provider Oracle
    • EVM Developers
      • Your First Smart Contract
      • Guides
        • Testnet Deployment
      • Technical Information
        • Network Information
        • EVM Equivalence
        • MultiVM Token Standard
        • Precompiles
          • Bank Precompile
          • Exchange Precompile
        • ERC20 Module
        • Infrastructure & Tooling
      • EVM Testnet Faucet
      • EVM Testnet Explorer
    • Cosmwasm Developers
      • Your First Smart Contract
      • Guides
        • Local Development
        • Mainnet Deployment
        • Whitelisting deployment address
        • Create your Swap Contract
        • Creating UIs
      • Using Injective Queries and Messages
      • CW20 Adapter
      • Injective Test Tube
    • Modules
      • Injective
        • Auction
          • State
          • Messages
          • EndBlock
          • Events
          • Params
          • Errors
        • Exchange
          • Derivative Markets Concepts
          • Spot Markets Concepts
          • Binary Option Markets Concepts
          • Other Concepts
          • State
          • State Transitions
          • Messages
          • Proposals
          • BeginBlock
          • EndBlock
          • Events
          • Params
          • MsgPrivilegedExecuteContract
          • Errors
        • Insurance
          • State
          • State Transitions
          • Messages
          • EndBlock
          • Events
          • Params
          • Improvements
          • Errors
        • OCR
          • Concepts
          • State
          • Messages
          • Proposals
          • BeginBlock
          • Hooks
          • Events
          • Params
          • Errors
        • Oracle
          • State
          • Keeper
          • Messages
          • Proposals
          • Events
          • Improvements
          • Errors
        • Peggy
          • Definitions
          • Workflow
          • State
          • Messages
          • Slashing
          • EndBlock
          • Events
          • Params
          • Relay Semantics
          • Improvements
          • Errors
        • Permissions
          • Concepts
          • State
          • State Transition
          • Errors
        • TokenFactory
          • Concepts
          • State
          • Messages
          • Events
          • Params
          • Errors
        • WasmX
          • Concepts
          • Data
          • Proposals
          • Messages
          • Params
          • Errors
        • Lanes
        • TxFees
      • Core
        • Auth
        • AuthZ
        • Bank
        • Consensus
        • Crisis
        • Distribution
        • Evidence
        • Feegrant
        • Gov
        • Group
        • Mint
        • NFT
        • Params
        • Slashing
        • Staking
        • Upgrade
        • Circuit
        • Genutils
    • dApps Documentation
  • Nodes
    • Getting Started
      • Interact with a node
      • Running a node
        • Setting up the keyring
        • Join a network
        • Cosmovisor
        • Upgrade your node
    • Validators
      • Mainnet
        • Peggo
        • Canonical Chain Upgrades
          • Upgrade to 10002-rc1
          • Upgrade to 10002-rc2
          • Upgrade to 10003-rc1
          • Upgrade to 10004-rc1
          • Upgrade to 10004-rc1-patch
          • Upgrade to 10005-rc1
          • Upgrade to 10006-rc1
          • Upgrade to 10007-rc1
          • Upgrade to 10008 - Camelot
          • Upgrade to 10009
          • Upgrade to v1.10
          • Upgrade to v1.11
          • Upgrade to v1.12.0 - Volan
          • Upgrade to v1.12.1
          • Upgrade to v1.13.0 - Altaris
          • Upgrade to v1.13.2
          • Upgrade to v1.13.3
          • Upgrade to v1.14.0
          • Upgrade to v1.14.1
          • Upgrade to v1.15.0
      • Testnet
        • Testnet Peggo
    • Public Endpoints
    • Premium Endpoints
    • Injective Indexer Setup
  • Traders
    • Getting Started
    • Documentation
    • API Reference
  • Useful Links
    • Injective 101
    • Injective Hub
    • Injective Explorer
    • Chain API Reference
    • Indexer API Reference
    • Testnet Faucet
Powered by GitBook
On this page
  • What is MultiVM Token Standard (MTS)?
  • Why is MTS Important?
  • Architecture
  • Creating an MTS-Compliant Token
  • Interoperability and Cross-Chain Integration
  • Performance, Gas, and Security Considerations
Edit on GitHub
Export as PDF
  1. Developers
  2. EVM Developers
  3. Technical Information

MultiVM Token Standard

Understanding token representation in Injective's multi-VM architecture

PreviousEVM EquivalenceNextPrecompiles

Last updated 16 hours ago

What is MultiVM Token Standard (MTS)?

MTS (MultiVM Token Standard) ensures that every token on Injective—whether deployed using Cosmos modules or via the Ethereum Virtual Machine (EVM)—has one canonical balance and identity. This unified approach prevents fragmentation and eliminates the need for bridging or wrapping tokens, thereby enabling seamless interoperability and unified liquidity for decentralized finance (DeFi) and dApp interactions.

Why is MTS Important?

  • Seamless Interoperability: Tokens remain consistent across Cosmos and EVM environments.

  • Unified Liquidity: A single source of truth avoids liquidity fragmentation.

  • Enhanced Developer Experience: Standard tools like Hardhat, Foundry, and MetaMask work out of the box.

  • Security & Efficiency: All token state is maintained centrally in the bank module, ensuring robust security.

Architecture

The system comprises two main components:

  • :

    • Developed in Go, this precompile is embedded directly in the Injective EVM.

    • It provides a Solidity interface that proxies ERC20 operations—such as mint, burn, and transfer—to the bank module.

  • :

    • This module maps native bank denoms (e.g., INJ, IBC tokens, Peggy assets) to an ERC20 contract within the EVM.

    • It deploys MTS-compliant ERC20 contracts that always reflect the canonical token balance as maintained by the bank module.

Creating an MTS-Compliant Token

    • Start with the provided Solidity templates, such as BankERC20.sol, MintBurnBankERC20.sol, or FixedSupplyBankERC20.sol.

    • Deploy your MTS token contract on the Injective EVM network.

    • The contract automatically interacts with the Bank Precompile to update the canonical state.

Interoperability and Cross-Chain Integration

Native Interoperability

Injective’s EVM is integrated directly into the Cosmos-based chain.

  • EVM smart contracts, when using MTS, perform operations that reflect immediately on native modules (such as the exchange, staking, and governance modules).

Cross-Chain Operations

  • Bridging Alternatives: While many blockchains require separate bridge operations (lock, mint, unlock), MTS avoids these steps by natively synchronizing states.

Allowances & Extended ERC20 Functions

  • MTS contracts maintain standard ERC20 functionalities such as allowances (approve/transferFrom).

  • Note that while the allowance mechanism is maintained within the EVM contract for convenience, the ultimate balance is managed by the bank module, preserving integrity.

Performance, Gas, and Security Considerations

Gas Costs and Efficiency

  • Gas fees are paid in INJ. While MTS operations via the EVM introduce an abstraction layer that may slightly increase gas usage compared to native transactions, the overall cost remains lower than comparable operations on Ethereum.

  • The gas model is designed to reflect a balance between EVM-style opcode costs and native module interactions.

Security

  • Advanced security guidelines and best practices for smart contract development are provided in our security section and external resources.

ℹ️ Note:

To prevent denom spam, deploying an ERC20 contract via the ERC20 module is a payable operation and requires a deployment fee of 1 INJ. Make sure your ERC20 contract deployment transaction includes this amount, or the operation will be rejected.

:

:

provided within the Injective binary are compatible with Ethereum, ensuring smooth developer integration.

IBC Compatibility: Existing native tokens (e.g., those created via a or pegged via Peggy) are accessible from the EVM once an MTS pairing is established.

The , as the single source of truth, underpins MTS’s security by ensuring that token balances are consistent and verifiable.

The use of prevents common pitfalls like state desynchronization, ensuring that all operations—no matter where initiated—update the same canonical ledger.

Bank Precompile
ERC20 Module
Using Our Prebuilt Templates
Deploying the Contract
JSON-RPC endpoints
Token Factory
bank module
precompiles

← Previous

Precompiles

EVM Equivalence
Precompiles
Single Token Representation Architecture