How to Create An Open Edition NFT Drop

How to Create An Open Edition NFT Drop - thirdweb Guides

⚠️ Warning: This guide currently uses v4 of the Connect SDK. For v5 (latest) code snippets, please check out our documentation while this guide is being updated. ⚠️

In this guide, we'll show you how to create an open edition NFT drop, where any number of NFTs can be minted from your collection, but only a certain amount per wallet address.

We'll use our audited ERC1155 NFT drop smart contract to ensure our users have a flawless experience minting from our collection. Let's get started!

Creating An Open Edition Smart Contract

To get started, head to the Edition Drop smart contract on the dashboard:

Edition Drop - ERC1155 | Published Smart Contract
Release ERC1155 tokens for a set price.. Deploy Edition Drop in one click with thirdweb.

The Edition Drop allows you to lazy-mint ERC-1155 NFTs, and define the conditions of how users can claim them, such as price, quantity, wallet limits, and more. Click Deploy now from this page to begin the deployment flow.

Click "Deploy now" to get started

Populate the metadata of your smart contract; such as the image, symbol, name, and description. From this page, you can also define which wallet addresses will receive funds from the primary and secondary sales.

thirdweb Smart Contracts now support Opensea’s CORI Filter to Enforce Creator Earnings
thirdweb is proud to announce that our smart contracts now support Opensea’s royalty filters out of the box! Learn more here.

Learn more about how our contracts works with OpenSea royalty fees

Finally, select the network you wish to deploy to, and click Deploy now!

Select which EVM-compatible network you want to deploy to.
Select which EVM-compatible network you want to deploy to.

Lazy Minting Edition NFTs

Once your smart contract is deployed, head to the NFTs tab on your contract's dashboard page, where you will be able to upload the metadata of your NFT(s).

Select the "NFTs" tab

You can choose to batch upload multiple NFTs using a .csv or .json file or upload one NFT at a time. To keep it simple, we'll use the single upload option in this guide.

To do that, click the Single Upload button, define your NFT metadata, and click Lazy Mint NFT. The end result should look similar to this:

Your NFT(s) have been lazy minted!

Defining Claim Conditions

Now we're ready to outline how we want users to mint our NFTs, using claim conditions. Click on your NFT to open up the drawer, and select the Claim Conditions tab.

Select the Claim Conditions tab

Click Add Initial Claim Phase to create a new set of criteria:

Select "Add Initial Claim Phase"

Here, we can define that we want our drop to be an open edition by specifying an unlimited quantity to be available for this NFT:

Set this field to "Unlimited" to create an open edition

To add a restriction of how many NFTs can be claimed by each wallet, set the How many NFTs can be claimed per wallet? field to your desired number.

Set max claimable per wallet

You can also configure other aspects of your claim conditions, such as the release date, price, currency, and an allowlist. Below is an example of a full claim phase definition:

Add data for your claim phase

Once you are ready, click Save claim phases to save your settings to the blockchain. If you want users to stop being able to mint NFTs, all you need to do is remove the claim phase to update your smart contract.

Create A Minting Application

There are several different options available for you when it comes to creating a website where users can connect their wallets and mint from the smart contract.

We'll first outline the no-code options available, and then finally show you how you can use our React SDK to create a fully customizable web application to interact with your smart contract.

Using the Claim Button

You can share your smart contract dashboard URL with your community and have them directly mint from it. This way, your users can head to the Sources tab to inspect the smart contract code directly if they choose to.

Users can click the NFT and head to the Claim tab to mint directly

Using the Embed

Your edition smart contract also comes with an embed hosted on IPFS you can share with your community. Head to the Embed tab to view a customizable preview specific to your smart contract that looks like this:

Simple mint page hosted on IPFS

Creating A Web Application with the SDK

For a fully customizable web application, our React SDK comes fully equipped with wallet connection and NFT minting capabilities (and much more).

To get started, we'll use the edition-drop template with all of this functionality set up for us in a TypeScript and Next.js project.

Run the following command to set up your project:

npx thirdweb create app --template edition-drop 

Change directories into the project by running cd edition-drop and open it up in your text editor. On the pages/_app.tsx file, ensure to set your network to the one you deployed your smart contract to:

// This is the chainId your dApp will work on.
const activeChainId = ChainId.Goerli;

Next, on the pages/index.tsx file, add your smart contract address and token ID of the NFT you want users to mint:

// Put Your Edition Drop Contract address from the dashboard here
const myEditionDropContractAddress = "<smart-contract-address-here>";

// Put your token ID here
const tokenId = 0;

That's it! Now you can run npm run dev and visit http://localhost:3000/ to preview your application. Users will be able to connect their wallet and claim their NFTs:

Preview of the web application

You can use our guide on deploying your application to Vercel when you are ready to ship it to production below:

How To Deploy A Thirdweb Application to Vercel
Learn how to deploy your Next.js application built using thirdweb to Vercel

Wrapping Up

That's it! You've deployed an audited, gas-optimized open edition smart contract and built a simple minting application to allow your users to mint NFTs.

If you want to customize the application further, jump into our Portal's SDK section to learn about all of the features available when building React applications.

Got questions? Jump into our Discord to speak with our team directly!