Skip to main content

Create and use in-game currencies

In-game currencies are very important for building a robust game economy.

This guide is for developers who want to:

  • Launch new tokens on Immutable zkEVM
  • Make existing tokens (ie. on L1 or other Ethereum L2 chains like Arbitrum or Optimism) available on Immutable zkEVM

in-game currency guidein-game currency guide

Launch new tokens

💡Who is this for?
Game developers who want to create, deploy and mint their own ERC20 tokens directly on Immutable zkEVM.

Immutable zkEVM supports all arbitrary smart contracts including ERC20s, so deploying your ERC20 to Testnet is the same process as it would be for any other EVM chain.

Please see our guide: Deploy smart contracts from scratch

Some things to note:

Make existing tokens available on Immutable zkEVM

💡Who is this guide for?
Developers who have existing tokens on L1 Ethereum (Testnet) and want it to be usable on Immutable zkEVM.

The process of making an existing token on L1 available on L2 is called bridging. Currently, Immutable offer a Bridge widget, which developers can integrate in their applications which allows users to transfer tokens from L1.

How does bridging work?

  1. When a user first wants to bridge a token from L1 to Immutable zkEVM L2, the bridge will detect whether the token's smart contract exists on zkEVM.
  2. If not, it will generate a bridgeable ERC20 smart contract that represents the with the amount that is being bridged being automatically added to that its total supply available on Immutable zkEVM.
  3. It's important to note that this token's metadata will be based on the L1 source of truth contact that holds all metadata values, such as token ticker and symbol.
💡What about moving tokens from Immutable X (StarkEx) to Immutable zkEVM?
We recommend first withdrawing to L1 and then going through the bridge as outlined above.


Immutable zkEVM mainnet will require all ERC-20s to be minted via a token factory contract, as there will be a temporary allowlist (whitelist) on the contract types that can be deployed to Immutable zkEVM for a period of time.