Skip to main content

FAQ

What is Immutable Passport?

Immutable Passport is the best way for your game to onboard web2 and web3 users simultaneously. Passport includes several core components:

  • Identity: a single-sign on authentication experience with familiar social logins
  • Wallet: a non-custodial wallet which is accessible on all your devices, across all your games to safely, securely and easily hold in game assets that can be used between games
  • Dashboard: a central tool for users to view and manage their Passport identity and wallet

Why do my players need wallets in a web3 game?

Wallets hold blockchain assets (e.g. NFTs) that are used in our games. Your users need a wallet to make the most of their gaming experience, this includes crafting with and/or trading those assets in-game.

How is Passport different to existing web3 wallets?

Unfortunately, this is the UX equivalent of giving players a separate empty inventory every time they enter a new game level.

The problem is that embedded wallets are just that - embedded - and can't be used anywhere but the original application. If I try to use 10 different dapps (even on the same device and platform), I will end up with 10 fully separate wallets. Even more annoyingly:

  • All these wallets will start with, no in game assets meaning every user will have to perform an onramp as their first action
  • Any assets the users owns in their embedded wallet won't be accessible outside the original application/website (e.g. I won't be able to trade my in-game NFTs on any third party marketplaces)
  • There is no way for users to consolidate game assets between these wallets - I'll have to do 10 separate onramps to my 10 separate wallets
  • There is usually no easy way for users to get their in-game assets out of these wallets (e.g. offboard into Metamask). Even when embedded wallets offer this functionality, it relies on (a) the application exposing this functionality to users (most don't) and (b) users having already installed Metamask in anticipation of doing this.

Immutable Passport has a different approach. Passport allows users to use the same wallet across all their games and marketplaces, rather than having one wallet per game. This is hugely valuable for games, as it allows them to access all their funds and assets that user has onboarded in other games across the Immutable ecosystem. It also means that users can trade their in-game assets on third party marketplaces - tying the wallet to the game's account system means it is only accessible in-game or on first party marketplaces.

This is important because the core value proposition of Web3 gaming assets is unrestricted tradability. One wallet per game looks desirable in a demo, but when users realise that they can't trade their in-game NFTs on any third party marketplace there will definitely be some anger!

Games can also retain complete control of their login flow by using Passport exclusively as a wallet. When the user comes to the game for the first time, they will go through your game's account flow. Later, before the user receives their first NFT or sends their first in-game transaction, the user must log into Passport. This can often be pushed back in the user experience so that it does not appear as a "log in twice" experience - it's "get your Passport to receive your NFT"

Currently only pre-approved transactions (e.g. in-game transfers, burns and crafting) can be executed from Unity and Unreal clients, though this will change in future.

What is the difference between Immutable Passport and Immutable Checkout?​

Checkout is our set of ready-to-use widgets for applications that want to provide a great experience for onramps, swaps, NFT purchases and other common actions on Immutable-supported chains. Checkout works across all web3 wallets.

However, for users to hold and use their in game assets, they must transfer them to their Passport wallet since linked wallets remain external and inaccessible.

How does Passport's key management work?

Passport Login

On EVM chains, Immutable Passport is a smart contract wallet. This smart contract will only process transactions if they are signed by two separate keys (a 2-of-2 multisig):

  • User Key: stored on HSMs via Magic's DKMS system, downloaded directly to the user's device to sign transactions
  • Guardian Key: stored by Immutable, used to enforce risk controls and transaction scoping.

Note that Immutable never has access to the User Key, and all transactions must be signed directly on the user's device.

How will Passport integrate with my existing identity or account system?

Option 1: Full Identity & Wallet. If you're starting from scratch, a very common way to use Passport is as your game's primary identity and wallet (as games like Guild of Guardians do). This saves games the time, effort and expense of maintaining their own identity system, and allows them to have a single login system for both account creation and wallet generation. In this mode, Passport replaces the game's existing authentication system entirely.

Option 2: Identity Migration & Wallet. However, many games will already have an account system that they will be reluctant to migrate away from, which is very understandable! There are several options from here. One is replacing authentication with Passport, but your game continuing to run their own independent account backend. You can link players' existing accounts with their new Passport accounts when they log in by tying their emails together. Simply integrate Passport as your login UI and update your backend to authenticate Passport tokens instead of the ones from your previous account system. By doing so, you can effortlessly maintain your current account infrastructure and retain all user data. This is what games like Gods Unchained have done in the past.

Option 3: Wallet Only. Games can also retain complete control of their login flow by using Passport exclusively as a wallet. When the user comes to the game for the first time, they will go through your game's account flow. Later, before the user receives their first NFT or sends their first transaction, the user must log into Passport. This can often be pushed back in the user experience so that it does not appear as a "log in twice" experience - it's "get your Passport to receive your NFT"

It is worth noting that with any of these options there is nothing to stop your game tracking user metrics, conducting funnel analysis, etc. - games can save whatever data they like on their end, just tie it to the user's Passport ID.

What platforms is Passport supported on?

FunctionalityWebUnityUnrealPlayStationXbox
IdentityYesYesYesNoNo
Pre-approved in-game transactionsNoYesYesNoNo
Other transactionsYesNoNoNoNo

Note that while you can send every kind of transaction type on the web, currently only pre-approved transactions (e.g. in-game transfers, burns and crafting) can be executed from Unity and Unreal clients, though this will change in future.

What types of authentication does Passport support ?

Passport supports familiar social logins via Google, Apple, and passwordless email sign-in. Note that if a user signs in with email (e.g. fake@immutable.com), and then subsequently with a Google account with the same primary email, those will be associated with the same Passport account and the user will be able to login with either.

For example, if a user has an initially generated ID of email|123 and signs in with Google using the same email, their User Identifier will still be email|123 instead of google-oauth2|xyz.

Can Passport support my game's login system?

Users use Passport as their wallet across many applications. As your login system is not available inside other games, or on third party markeplaces, it can't be used as an authentication method to access Passport wallets. Even if it were to be added to Immutable Identity as an OAuth provider, it is unlikely that users of your game would consistently choose it on third party websites, fragmenting their assets across multiple wallets and defeating one of the core benefits of Passport.

What chains do you support?

Passport currently supports Immutable X and Immutable zkEVM. We will soon add support for most major EVM chains, as well as custom appchains for games which require them.

Is Immutable Passport ERC-4337 compatible?

The smart contracts which underpin Immutable Passport are a fork of the smart contracts used by the Sequence wallet. While Immutable Passport is a smart contract wallet and supports account abstraction, we do not implement ERC-4337. This is because in its current state 4337 offers limited benefits to Ethereum users compared to alternate implementations while dramatically increasing per-transaction gas costs.

Can I export my Passport private keys?

As Passport is a smart contract wallet, there is no single "private key" for your Passport wallet. Exporting your wallet therefore means exporting one or both of the User and Guardian keys which control the wallet.

Currently, we don't provide explicit UI for exporting either of these keys in order to prevent scams. We plan to allow users to do this in future. Until then, the best way to "export your wallet" is to simply transfer your assets to a new wallet address using Passport Dashboard.

Does this mean my players are locked into the Immutable ecosystem?

Immutable Passport is non-custodial, which means neither Immutable nor any individual game can unilaterally migrate users to an alternative wallet without user input. This makes sense: users aren't using Passport for one game and one game alone, they're using Passport across all their games.

However, individual games can switch their identity and recommended wallet systems away from Passport at will. You'll be able to treat Passport just like any other wallet (e.g. Metamask).

Can I recover my account if I lose access to my email? What happens if my Passport email or social account is compromised?

Unfortunately, your wallet is bound to your email or social account, and Immutable cannot unilaterally recover your account. You should attempt the recovery process for your email or social account. If this underlying account is compromised, Immutable is unable to recover your account, and you should work with your email provider or social account to resolve the compromise.

We may introduce social recovery style schemes in future to preserve self-custody while allowing recoveries.

Will players still be able to use their existing wallets in my game?

Users who wish to retain their existing wallet can simply link the wallet that holds the assets to their Passport via the Dashboard, and they will be available for read-only use in your game. This allows Passport to store wallet addresses owned by the user, and share it with games via the SDK.

However, for users to execute transactions involving these assets, they must transfer them to their Passport wallet since linked wallets remain external and inaccessible.

How should I display Passport as an option to users in my DApp?

If you're adding Sign in with Immutable as your primary authentication option.

If you're prompting users to connect

If you're adding Passport as a wallet option in your dapp, see styling for dapps.

Can I bulk import assets into Passport?

Yes, directly in Passport Dashboard.

How does gas work for Passport users?

One key advantage of smart contract wallets like Passport is the ability for a third party to sponsor gas fees on behalf of users.

Currently, all non-spam Passport transactions on Immutable zkEVM are fully sponsored by Immutable.

Passport users are able to benefit from transaction relaying.

Has Passport been audited?

Immutable Passport's smart contracts have been audited by Halborn. Previous audit iterations commissioned by the Sequence teams are available here, though they are applicable to the upstream contracts rather than forked version used in Immutable Passport.

Can I use another wallet with my Immutable Passport?

Users can link other wallets to their Passport account via Passport Dashboard. Linking a wallet to your Passport identity allows applications to aggregate your asset holdings across all your wallets (e.g. displaying assets you hold in your hardware wallet).

Currently, you cannot sign transactions in these other wallets via Passport.

Users can link other wallets to their Passport account via Passport Dashboard. Linking a wallet to your Passport Identity allows applications who have logged in.

What regions does Immutable Passport support?

Passport is a globally available product. However, our wallet infrastructure is subject to the regulation of the US Department of the Treasury’s Office of Foreign Assets Control (“OFAC”). OFAC administers and enforces comprehensive and targeted economic and trade sanctions programs on multiple countries and regions.

To learn more about the U.S. Treasury and the Office of Foreign Assets Control (“OFAC”), please visit their website.

Users attempting to access Passport in any of the regions under OFAC sanction will have their access blocked and will be unable to use our product. Additionally, components of Passport's infrastructure also rely on technology provided by Magic, which maintains further details regarding unsupported regions on their website here.

Why are native IMX transfers failing with an Out of Gas error?

When the smart contract of a Passport wallet has been deployed a transfer of IMX to Passport will require a gas limit of 26,000 rather than the typical 21,000 gas limit for native transfers. This is because of the receive method that is implemented on the smart contract to handle receiving the native token. The smart contract for a Passport wallet is deployed when a user performs their first transaction in Passport.

When performing native transfers to Passport wallets, it is recommended to always set the gas limit above 26,000. For native transfers to Passport wallets that do not yet have the contract deployed, this will only use the typical 21,000 gas. Setting the gas limit to 26,000 ensures that if the smart contract is deployed, the native transfer will still succeed.