EVM contracts

Register an Ethereum or Polygon Smart Contract.

If you haven't deployed a smart contract yet, this is the time! Here are tutorials for Ethereum and Polygon.

Once you have your smart contract ready:

🀝 Smart Contract Requirements Verification

  • Your contract must be ERC-721, ERC-721A, or ERC-1155 compliant.
  • The minting function must allow minting directly to an address different than the one which invoked the contract. And it must contain at least one parameter that specifies that recipient address.
  • A single address must be able to call the mint function unlimited times but does not need to be able to hold unlimited NFTs.

If your contract doesn't meet criteria 1 or 2, reach out to us. We can probably still make it work, it may just require some manual work from our side.

πŸ”Œ Register Your Contract

Within the console located on the Payments tab, navigate to your collection and select 'Contract registration'. Paste your contract address and all remaining fields should update automatically. Please verify the following data for correctness, as edge cases may lead to improper processing:

  • ABI of smart contract- the ABI of your smart contract in JSON format.
  • NFT recipient address mint function argument - the name of the argument in your mint function that specifies wallet address the NFT will be minted to.
  • NFT amount mint function argument - the name of the argument in your mint function that specifies the amount of NFTs to mint in a single transaction.
  • Proxy contract setup - used when the NFT contract is different that the one being registered. (This is an advanced feature. Do not check this box unless you're confident in the setup.)
  • USDC Support, can be enabled by checking the "Enable USDC" checkbox in the contract registration.

πŸ”Ž Appendix: Extracting Your Contract Information

Example mint function:

function mintTo(address _to) public payable {
  require(mintPrice == msg.value, "Incorrect value sent");
  require(_tokenIdCounter.current() + 1 <= maxSupply, "No more left");

  uint256 newTokenId = _tokenIdCounter.current();
  _tokenIdCounter.increment();

  _safeMint(_to, newTokenId);
}

Note that the mint function may have any name and contain any number of additional parameters as long as it meets the requirements listed above.

ABI of smart contract

πŸ“˜

Automatic retrieval of ABI for verified contracts

If your contract is verified on the block scanner we will retrieve the ABI automatically. Otherwise you'll need to paste this in manually.

Only complete this step if we did not automatically retrieve your ABI:
When you compile your smart contract there will be a corresponding abi file with an .abi or .json extension.

Inside this file, you'll see JSON property named abi, which describes the functions in your smart contract. Here's an example of a very simple abi file. Yours will likely have more function descriptions.

// Example generated abi file for smart contract
{
   "abi":[
      {
         "inputs":[
            
         ],
         "stateMutability":"nonpayable",
         "type":"constructor"
      },
      {
         "inputs":[
            {
               "internalType":"address",
               "name":"_to",
               "type":"address"
            }
         ],
         "name":"mintTo",
         "outputs":[
            
         ],
         "stateMutability":"payable",
         "type":"function"
      }
   ]
}

Copy the JSON array object that comes after the string "abi" and paste it into the Contract ABI text box in the developer console. The content you paste in should begin with [ and end with ].

Specifying the remaining parameters

Whether your ABI was retrieved automatically or you pasted it in manually you need to specify the:

  • mint function
  • recipient address parameter name
  • quantity of NFTs to mint parameter name (*optional)

We attempt to automatically select these values for you, but it's important to ensure they are set correctly. Especially if you're setting up a USDC mint function as the list of options will be longer.

Proxy Contract Setup

As previously mentioned, this is an advanced feature. Utilize this only if you're certain your contracts adhere to this pattern. This is crucial because we require the actual NFT contract address when you register a mint/buy/purchase/claim function in a sales contract or revenue splitter.

If you don't specify the NFT contract address, our system won't be able to extract token URI information or facilitate transfers. Set this up only if it isn't a transparent proxy, which is common for upgradeable contracts.


What’s Next