This guide walks through how to setup and deploy a Web3 Game Item contract in Builder.

Prerequisite: Create a Project

This guide assumes that you have already signed up for Builder and created a Project.

ERC721 vs. ERC1155

Both contracts mint NFTs, but ERC721, being the earlier standard, has gained widespread adoption, particularly in digital collectibles. Known for its simplicity and ease to audit for security, ERC721 tokens are distinct, contributing to their recognition in various NFT marketplaces. Typically you would use an ERC721 contract if: you’re dealing with the single same asset, multiplied, or a multiplicity of 1 item with many in a collection

Example ERC721: Azuki

In contrast, ERC1155 offers versatility with efficient batch operations for both fungible and non-fungible tokens in a single contract, where typically you would be dealing with a multiplicity of a many items to many quanties relationship. However, this flexibility introduces complexity, necessitating careful security attention.

Example ERC1155: Skyweaver

Step 1: Navigate to contracts

Start by selecting your project in the top left and corner for what you want to create the collectible for, and head to the contracts section and select + Deploy new contract

Step 2: Choose your collectible type

Then make your choice of Web3 Game Item Collection (ERC1155) or NFT Collection (ERC721), for this example we’ll walk you through a Web3 Game Item Collection (ERC1155)

The only difference in deployment between an ERC1155 vs ERC721 is that you add a symbol to an ERC721 NFT Collection

Step 3: Specify contract details

Complete the contract details by specifying a Contract Name and Owner for your contract, with the option to input Royalties. Make sure the Owner address is the Sequence Wallet in the top-right hand corner and that you have funds in this wallet on mainnet, otherwise on testnet - we sponsor these transactions for you.

Note:

While you can change the name later in the builder interface where it will update across the sequence stack, popular explorers do not reindex the information, so what you put first remains

Step 4: Deploy your contract

Deploy your contract from the popup window at http://sequence.app/sign-transaction, and sign the message by selecting confirm

All testnets will be free to transact on.

Optional: Add a Minter Role to the contract

Sequence contracts have Access Control options by default. In some cases, you may want to grant a specific address permissions in order to call various functions such as mint().

First start by selecting your contract you just deployed in the contracts section

Next, head to the Write Contract section

In the grantRole section of the write contract tab navigation

Complete with the following details:

bytes32 role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6 address account: <Wallet Address>

Where the wallet address is the address that you would like to give permissions to mint to, specifically any Sequence wallet.

Complete by selecting write and signing the transaction in the popup window, like before

With a confirmation message showing Response Success

The role string inputted is the result of solidityPackedKeccak256("MINTER_ROLE") in solidity or ethers.solidityPackedKeccak256(ethers.toUtf8Bytes("MINTER_ROLE")) in javascript

It’s a typical pattern to use offchain compute like a cloudflare worker with a relayer wallet sending transactions, which would be inputted in the account field, more on how to accomplish this here

Step 6: Mint tokens to your wallet address

Navigate to the mint card in the Write Contract section and input the to being the wallet address you would like to receive the token to, the tokenId (typically starting at 0), and amount of tokens, and finally the data section you can just input 0x00, which typically represent Additional data with no specified format.

Step 7: Confirm your minted collectible

And you’re done!

You can view the transactions submitted to the blockchain for your wallet address in the Transactions tab navigation