Selling NFTs with Mintlists
You can create and sell a new NFT collection by creating a Mintlist.
A Mintlist is an account on chain that acts like a store for new NFTs. When you create the Mintlist, you choose:
- the number of NFTs in the collection
- the price in SOL that minters will pay to receive an NFT
- the go live date after which customers can begin minting NFTs
The Mintlist account holds information about the new NFTs on chain so that new customers can call the mintlist_mint_nft_v1
instruction and Mint an NFT.
A Mintlist costs a bit of SOL to set up, around 0.6 SOL for a Mintlist with 1,000 NFTs, but at any point you can close the Mintlist to receive that SOL back in your wallet. So from start to end it's a free process for the NFT project creator.
Video Overview
Configuring a Mintlist
When you create a Mintlist, it will be in the Pending
state. It will hold information about the collection and how much NFTs will cost, but it doesn't hold the NFT data.
You'll need to add all of the NFT information to the Mintlist. Due to transaction size limits on Solana, you can only add information for about 100 NFTs at a time so this process could take many transactions for a large Mintlist.
Once you've added all NFT information, the Mintlist will be in Pre Sale
or For Sale
based on the go_live_date
.
After all NFTs have been minted (or redeemed), the Mintlist will be in Sale Ended
and you can close the Mintlist to recover the SOL you paid for creating the Mintlist.
Comparison to Metaplex's CandyMachine
The Mintlist is similar to Metaplex's CandyMachine with a few differences:
- Mintlists are cheaper than CandyMachines.
- Mintlists always mint new NFTs into a collection. With CandyMachine, you need to follow an additional process to set up a collection.
- You can create a Mintlist without any technical background. CandyMachine requires coding knowledge and using a terminal.
Mintlist Schema
Each Mintlist is an account owned by the NFToken program. The Mintlist stores information about the NFTs that are available to mint along with the collection that they will be minted into.
Mintlist Account Data
authority Pubkey
The account that is allowed to configure, update, and close the Mintlist.
price_lamports u64
The amount of SOL that each minter will be paying to receive a single NFT.
treasury_sol Pubkey
The account that will receive the payments each minter is making when they mint an NFT.
go_live_date UnixTimestamp
The date at which minters will be able to start minting NFTs. If you submit a transaction before the go_live_date
, the transaction will fail.
minting_order MintingOrder
The order NFTs will be minted in.
Sequential
- Each minter will receive next available NFT. Random
- Each minter will receive a random NFT. This uses a previous blockhash as a source for randomness.
collection Pubkey
The collection that NFTs will be minted into.
metadata_url String
This points to Metadata that can hold the name and image for the Mintlist. This adheres to the same offchain Metadata standard as NFTs.
num_nfts_total u32
This is total number of NFTs that will be available to mint once the Mintlist has been configured.
num_nfts_redeemed u32
If users have started minting, this will show the number of NFTs that have been minted from the list.
num_nfts_configured u32
This stores the number of NFTs that have been added to the Mintlist. The Mintlist will be ready once num_nfts_configured == num_nfts_total
.
mint_infos Array<MintInfo>
This stores information about each NFT. Each NFT is defined by a metadata_url
.