Skip to main content

Pre-approved transactions

Occasionally, Web3 games will request transactions during gameplay. Unless you're building a fully on-chain game, these transactions are generally infrequent but important - things like burning, transferring or crafting assets as part of your game's economy.

Many wallets prompt the user with a popup to confirm these transactions, to ensure users consent to these actions. However, this popup is highly distracting: a very common request from games is for the wallet to be invisible in these scenarios. A common solution for games historically has been using custodial wallets which are fully controlled by the game. Unfortunately, these wallets are bound to the original game and cannot be used in other games or on external marketplaces, defeating one of the key advantages of web3 asset ownership.

Immutable Passport solves this by providing games with pre-approval from users to send these types of transactions without an explicit confirmation popup: we call this "pre-approved transactions". Users are generally happy to grant this approval: if users don't trust the game to manage the game's economy well, the game is in big trouble.

Currently, pre-approved transactions are only available inside native clients (e.g. Unity and Unreal games on mobile and Desktop). Web transactions must all be confirmed through explicit confirmation popups.

Games can ask Immutable to configure their Passport client to support pre-approved transactions for the following transaction types:

Transaction TypeSupported
TransfersOnly for your game's custom ERC20s/ERC721/ERC1155s
BurnsOnly for your game's custom ERC20s/ERC721/ERC1155s
CraftingOnly for your game's custom ERC20s/ERC721/ERC1155s
Listings & TradesNo
Generic TransactionsOnly for interactions with contracts which Immutable verifies your game controls

To request approval for your Passport client to leverage pre-approved transactions in your game, please contact Immutable support and provide the details of your contracts according to the above.

Currently, preapproved confirmations are offered through OAuth scope grants. In future, we may implement this feature using Session Keys or a similar fully user-controlled mechanism. Users will also have the option to configure pre-approved transactions more granularly, or on a game-by-game basis.