Skip to main content

Display user inventories

Learn how to display a user's asset and game currencies in your application.

At the core of all Web3 games is the concept of true asset ownership. It is therefore critical for games and marketplaces to offer users a complete and up-to-date view of the assets they own. Immutable provides a variety of tools to help with this.

Game currencies

These are fungible tokens (ERC20) that provide a store of value and allow users to purchase other items. An example of this kind of token is $IMX.

To learn how to create these tokens, see our In-game currencies guide.

Use Checkout Wallet Widget (web-based applications)

The Checkout Wallet Widget is a drop-in solution for web-based games and marketplaces that simplifies the process of checking wallet balances on the Immutable zkEVM and Ethereum networks. Read the docs to learn how to integrate it.

Bring your own UI

For applications that wish to display their own custom UI for currency balances, we recommend directly querying on-chain state for the latest data. You'll need to periodically poll these balances to keep them up to date.

You will need to have an existing project, then do the following.

1. Set up Passport provider

💡Passport provider implements EIP-1193 standard

Passport's zkEVM provider implements the Ethereum EIP-1193 standard, which means that you can use the same logic to interact with a user's Passport wallet as you would with any other Ethereum wallet.

As it implements the EIP-1193 standard, you can create a Passport provider and call a range of RPC methods on it directly. Alternatively, you can use the Passport provider in an Ethers.js provider.

Create the Passport provider:

const passportProvider = passport.connectEvm();

Once a provider is created, you can call various methods on it via the request function (which is protocol-agnostic), for example:

const accounts = await provider.request({ method: "eth_requestAccounts" });

See the full range of supported RPC methods.

2. Call the requestAccounts method directly:

const provider = passport.connectEvm();
const accounts = await provider.request({ method: "eth_requestAccounts" });


Most Web3 game items are unique, non-fungible tokens (NFTs). Immutable's Blockchain Data APIs indexes blockchain activity so you can do the following:

  1. Query for specific data
  2. Continuously poll for data on all activities

On Immutable, blockchain assets can have metadata stored both on and off chain. See our Metadata docs to learn more about this.

Query for specific data

Check out our Blockchain Data guides for how to query different types of asset and collection data, including getting data on:

Poll for activity data

Use our Blockchain Data Activities endpoint to get data on all events in order to provide your users with the most up to date information when available.

We recommend polling at a frequency of no more than 3 seconds to avoid throttling.

🚧Webhook-based integration coming soon
We are currently developing a webhook-based integration which will allow developers to receive and process individual events without polling our SDK functions or APIs