Skip to main content

Implement the Operator Allowlist

To deploy a collection on Immutable zkEVM, you must implement the Operator Allowlist interface to protect your royalties and revenue in secondary market trading.

This tutorial will guide you through the steps required to ensure your collection is compliant with Immutable's Operator Allowlist.
operator allowlistoperator allowlist
💡WHO IS THIS FOR?
Developers who want to deploy a collection on Immutable zkEVM.
💡REQUIRED READING
Before continuing with this tutorial, please read our guide Operator Allowlist Explained which covers the importance of the Operator Allowlist, why it is mandatory and how it works.

Implementation Overview

The Operator Allowlist consists of 2 steps, only 1 of which is mandatory.


1. Asset Compliance (Mandatory)

💡Mandatory step
Implementing the Operator Allowlist is mandatory for all collections deployed on Immutable zkEVM.

Applies to: ERC-721 & ERC-1155 collections.

When required: For every NFT/SFT collection deployed on Immutable zkEVM.

Required action: Add interface to collection contract.


2. Utility Contract Privileges (Optional)

Applies to: Smart Contracts.

When required: Contracts necessitating approvals from collections or contracts facilitating transfers of assets between addresses.

Required action: Add smart contract to Immutable's registry via Hub.

Step 1: Asset Compliance (Mandatory)

Every NFT/SFT collection deployed on Immutable must be compliant to our Operator Allowlist specifications. Immutable streamlines this process by offering preset contracts which have the Operator Allowlist interface preconfigured. Should game studios choose to deploy their own custom collections, they must follow the instructions below to ensure their collection respects royalty fees across the platform.

All Immutable provided preset contracts for NFT/SFT collections have the Operator Allowlist preconfigured, ensuring that your revenue from trades is protected across our platform.

If you have deployed or extended one of Immutable's preset contracts, either from Immutable Hub or manually, that's everything required to ensure compliance.

Operator Allowlist values​

If you manually deploy one of Immutable's preset contracts or your own custom contract that implements the Operator Allowlist, you must set the operatorAllowlist parameter in the constructor correctly for the network you're deploying to. The table below details the values required for Immutable zkEVM Testnet and Mainnet.

Chain NameChain IDOperator Allowlist Address
imtbl-zkevm-testneteip155:134730x6b969FD89dE634d8DE3271EbE97734FEFfcd58eE
imtbl-zkevm-mainneteip155:133710x5F5EBa8133f68ea22D712b0926e2803E78D89221

Step 2: Utility Contract Privileges (Optional)

💡Approval for additional privileges
Please note that only partners under contract with Immutable can be approved for additional privileges at this time (i.e. be added to Immutable's Operator Allowlist registry).

Utility smart contracts that perform a subset of actions, that are not settlement contract, will need to be added to Immutable's Operator Allowlist registry to function as intended. This registration process is managed through your Hub account.

This step is not required for all smart contracts so please read this section carefully to understand if it applies to you.

Which smart contracts need elevated privileges?

If your utility smart contract performs the following actions, you will need to request for elevated privileges (i.e. be added to the Operator Allowlist):

  • Contracts necessitating approvals from collections.
  • Contracts facilitating the asset transfers of ERC721 or ERC1155 assets.

Examples of the above:

  • Multi-caller contracts that bundle transactions
  • Crafting contracts
  • Primary sales contracts
  • Reward distribution contracts
  • Auction contracts
  • Rental contracts
  • Lending contracts

Ineligible utility smart contracts

The following smart contracts are ineligible for being added to the Operator Allowlist.​

  • Settlement contracts (excluding those provided by Immutable)
  • Orderbook contracts that could fragment liquidity from Immutable's Global Orderbook
💡Policy violations
Immutable reserves the right to remove elevated privileges for any contracts found in violation of the stated policy above. If you are not sure whether your contract adheres to this policy, please reach out to your Immutable contact for clarification.

Requirements

Game studios must meet the following criteria to be able to submit a request for elevated privileges:

  • Game studios must have a contract with Immutable.
  • Contract must be verified in block explorer so Immutable can review your contract's code. This is for both Testnet and Mainnet.
  • Contract has previously been approved for elevated privileges (i.e. added to Operator Allowlist registry) on Testnet and tested thoroughly, prior to proceeding with Mainnet.
    • Note: All Testnet requests are auto-approved to expedite game integrations.
  • Contract does not violate Immutable's ineligibility policy outlined above.

Submitting proxy contracts​

Upgradable Contracts

Immutable supports adding proxy contracts to the Operator Allowlist registry. The proxy contract will require being added to the Operator Allowlist. Both proxy and the implementation contract that the proxy references will need to be verified in block explorer to be approved by Immutable.

Smart Contract Wallets

As smart contract wallets are deployed as proxy contracts with a specific implementation contract module, they will need their implementation contract approved as well. Both proxy and the implementation contract that the proxy references will need to be verified in block explorer to be approved by Immutable.

How do I submit a request for elevated smart contract privileges?​

  1. Log into Immutable Hub
  2. Verify your contract via Immutable's explorer by following our smart contract verification tutorial.
  3. Link your smart contract by clicking Link Contract on the "Contracts" page in Immutable Hub.
  4. Go to the contract details page of the contract that you want to be added to OAL. Hit the "Add to OAL" button and follow the application prompts.
Linking collection

Processing time for elevated smart contract privilege requests​

Immutable will process these requests as quickly as possible.

  • Testnet additions are processed instantly.
  • Mainnet additions require at least 48 hours for processing. Timely submission of requests is advised to avoid launch delays for your game.

Interface

Please refer to the OperatorAllowlist.sol interface for information on specific methods.


Related content