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


Launch new tokens
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:
- You will have to connect to our RPC node (address: http://rpc.testnet.immutable.com/)
- For a standard ERC20 contract, you can use the OpenZeppelin contract preset
Make existing tokens available 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?
- 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.
- 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.
- 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.
Mainnet
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.