Solana and Metaplex FAQ

Table of Contents

Contributors

  • Archaeopteryx#7615
  • Monty#7490
  • alfongj#7638
  • General Metaplex Community

Official Docs and Resources

Solana Developer Docs: https://docs.solana.com/
SPL Token: https://spl.solana.com/token
Metaplex Docs: https://docs.metaplex.com/
Metaplex Github: https://github.com/metaplex-foundation/metaplex

Community Resources

These are not official resources. Due your own due diligence before using them.

Tutorials and Guides

Levi Cook's Candy Machine Guide
Fair Launch Protocol Tutorial
Some Thoughts to Consider Before You Start Your SOL NFT Launch
Solana NFTs: Everything You Need

Frontend Mint Apps

Levi Cook's Candy Machine Mint
Maxwell Fortney's "Next Candy Machine" Frontend
CryptoOutcasts Candy Machine Mint Frontend w/ Whitelist
CryptoOutcasts Whitelist API
Airdogs Candy Machine Mint Fork

Candy Machine UI

InnerMindDAO's MintUI

NFT Generation

WrathionTBP's Python NFT Generator
Benyamin Ahmed's NFT Image Generator

Full NFT Launch Services

Nova Launch
"Nova Launch the Premier Launchpad for Solana NFT projects - trusted partner in high volume, best-in-class NFT live minting on the Solana network."

Crayon Creed
"CrayonCreed is an End-to-End NFT Launcher Platform.
Your preferred launchpad partner for your Internet of Assets."

Holaplex

Miscellaneous

Look up Mint Addresses
List Candy Machines Script (Levi Cook, again)
CrisitnaSolana Solana Developer Resources
Paul Schaaf Awesome Solana
Get NFT Holder Snapshot
Metaplex Store Installer
Metaboss - Metadata 'Swiss Army Knife'
Arweave Uploader CLI
Tools for Finding PDAs and Metadata

Solana

Devnet vs Testnet

Q: What is the difference between devnet and testnet?

A: devnet is targeted at developers to let them test their smart contracts and applications before deploying to mainnet. testnet is used primarily to test new Solana releases. See the Solana docs for more details.

โ€“

Free RPC Endpoints

Q: What free RPC endpoints are available?

A: For devnet:

For mainnet:

See the Solana docs for more details such as rate limits.

For your mint app you should always use a custom RPC provider. The people running the public RPCs are aggressively monitoring NFT mint requests and blocking people who abuse the service, so your launch may fail if you use one of the public providers for your mint site.

โ€“

Production RPC Endpoints

Q: What custom RPC endpoints are out there?

A: You can consider running your own (very hard) or use one of the following:

The latest candy machine cli code supports using a custom RPC node with the --rpc option.

Airdrop Tokens

Q: How do I airdrop SOL/SPL token to X number of wallets?

A: Use one of these tools:

Or you can write code yourself: you could write bash code that uses the Solana CLI, write a TypeScript program that uses the @solana/web3js library, or you could the Rust libs to write it. There are various other unofficial community SDKs and clients as well.

Here's an very simple example bash script. Always test on devnet before running it on mainnet.

#!/bin/bash

airdrop_accounts=(
"AB..."
"6X..."
)

nft_mint_accounts=(
"Nk..." 
"6r..."
)

LEN=2

for i in $(seq 0 $LEN); 
do
     spl-token transfer ${nft_mint_accounts[i]} 1 ${airdrop_accounts[i]} --fund-recipient
done

Here's a step-by-step guide.

โ€“

Metaplex Candy Machine

CM Upload Costs

Q: How much does it cost to deploy X NFTs using Candy Machine?

A: MaxS#6970 built us a calculator.

โ€“
Q: What are the sources of fees for using the candy machine cli program?

A: The fees are 1) on-chain storage of config data and 2) Arweave file upload costs.

  1. The CLI creates an on-chain "CSV" object with all the NFT data for the candy machine to read from when it mints. Storing all this data on Solana is expensive and runs about 1.67 SOL per 1000 NFTs.
  2. The Arweave upload cost is variable depending on your image size but should be smaller than the config costs. You can also upload yourself using a community tool which may reduce Arweave costs. See the next section for some of the available community tools.

โ€“

CM Upload Image Min & Max Sizes

The following apply to min and max sizes for using the Metaplex candy machine cli program for uploading to Arweave. If you upload yourself by using one of the community tools such as Enrico's Arweave uploader or Sol NFT tools, the same upload limits do not necessarily apply. The creator of Sol NFT tools has stated that they support upload sizes up to 200 MB.

Q: Is there a minimum size for my images?

A: Seems to be ~20kb per image. Smaller than that may fail.

Q: Is there a maximum size for my images?

A: 10 MB is the maximum size due to the Google Cloud function used by the upload command. Uploading links to Arweave independently using one of the third party tools can get around this limitation.

โ€“

CM PDAs

Q: What is the candy machine PDA for mainnet and is it the same for devnet?

A: It's cndyAnrLdpjq1Ssp1z8xxDsB8dxe7u4HL5Nxi2K5WXZ for mainnet-beta, devnet and testnet.

โ€“

Verified Creators

Q: What is NFT creator signing/verifying?

A: Creators have a a bool value in the on-chain struct that indicates whether or not the creator has signed the metadata verifying that they are the actual creator of the NFT. This defaults to false for all creators except for the candy machine but can be set to true after minting by using candy-machine-cli.ts sign and sign_all commands. Some NFT exchanges require all creators to be verified for listing and the Metaplex store front requires it. Each creator must sign the metadata individually with its own keypair.

โ€“

Upload MP4s

Q: How do I upload MP4s instead of PNGs?

A: (Answer contributed by Monty#7490 from Discord.)

  1. In the candy_machine_cli repo, in constants.ts change EXTENSION_PNG = '.png' to EXTENSION_PNG = '.mp4 (or any other format)

  1. in arweave.ts on lines 55 and 56 change filename and contentType to the appropriate types (image.png โ€“> video.mp4 and contentType โ€“> video/mp4 but these can be any correct MIME type AFAIK)

  1. in upload.ts on lines 87 and 88 change the imageName replace to be the name of the file specified in the arweave file above (was image.png change to video.mp4

  1. In the .json files use the animation_url instead of the default image property and update the properties.files attributes to use the correct file name and MIME type

Updating Metadata

Q: How do I update meatdata for a minted NFT?

A:

    1. Create new Arweave links. You can use either this or this or do it manually with an Arweave library.
    2. Use Metaboss to update your metadata with your final Arweave links (JSON data).

OR

  • Write your own code:

โ€“

Q: When can I update metadata?

A: As long as you have the keypair for update_authority and the NFT's is_mutable field is set to true, you can update the NFT's metadata. Be aware, there may be social consequences for updating your NFT metadata without communicating with your users.

โ€“

Q: What data can I update?

A: Solana Metaplex NFTs are made up of two sets of data: the on-chain data stored on Solana and the JSON data stored on an external provider, usually Arweave or IPFS. Arweave data is immutable but you can change the on-chain URI to point to a new Arweave file or to any file you wish.

โ€“

Deploying a Frontend

Q: I have exiled-apes/MintUI/other frontend repo working on localhost, how do I deploy?

A: Look up Vercel and Netlify for deploying frontends directly from Github repos. They have plenty of tutorials for how to get setup.

Get NFT Holder Snapshot/Mint Accounts

Q: How do I get a snapshot of all the holders of my NFT collection?

A: Try these tools:

โ€“

Whitelist

Q: How do I create a whitelist for my candy machine?

A: You can now use Gumdrop to create a whitelist. Mark Sackerberg made a guide.
For larger whitelists you can also use Doorman.

โ€“

General CM CLI Troubleshooting

Q: Why doesn't my candy machine cli command work?

A: Things to check:

  • Are you on the latest version of the main branch?

  • Are you in the same directory as your .cache file?

  • Are you running the command on the correct network?
    (Commands default to devnet. Use --env mainnet-beta for mainnet.)

  • Your JSON files don't exceed these following limits:

    • Name - 32 characters
    • Symbol - 10 characters
    • Creators - no more than four listed in the JSON file (which is five total w/ the Candy Machine being the fifth)
    • Creators share must add up to 100
  • Your JSON files are properly formatted following this standard

  • For the update_candy_machine command, when updating the date make sure to use double quotes around the date string: -d "8 Oct 23:57:00 UTC".

Common Errors

  • Error: Non-base58 character
    Make sure your addresses are valid Solana addresses in your JSON files.

Program Errors

Here's a list of all the Metaplex Metadata Program Errors.

Or if you're a developer you can use this CLI to look them up.

From Discord user alfongj#7638:

"If anyone gets any of the following errors

When uploading

panicked at 'range end index โ€ฆ
Custom program error: 0x12f
'Index greater than length!'

When creating a candy machine

0x130
ConfigMustHaveAtleastOneEntry

The issue may be that your png and json files do not start with 0.json / 0.png

If you did a partial upload, you can still save the sol you've burnt.

Take all the NFTs that didn't get uploaded and rename them all from 0.json โ€ฆ the last number prior to the one you started with and then run upload again"

  • 0x139 - "ConfigLineMismatch - Number of config lines must be at least number of items available"
    Try running verify again and fix any errors that crop up, let verify run all the way through successfully and upload again.

  • 0x8f - treasury address must have non-zero SOL balance
    Fund your treasury wallet.


Fair Launch Protocol

Q: How do I get started with the fair launch protocol?

A: Here's Jordan's recommendations:

Comprehensive sources for #FairLaunchProtocol:

Zoom meeting where I hook it all up in one go:
https://solanalabs.zoom.us/rec/share/j_FT_ROcVkdePDnejdczl-3R34knoCk4T-UAWdbI7ZCG3vNnqX7oSUiDHjkKAnc.XU6PtfuCW_7OFksj / ep?a38$F

@artelaflame takes meeting minutes into nice guide: https://hackmd.io/FxCiD20ETZeMbfA8on9WMg?view#Fair-Launch-Protocol

Lay man's intro to FLP by @RogueSharkTank: https://youtu.be/Ucfl_vbdYQI

Have items to add? Leave a comment or contact me on Discord @archaeopteryx#7615!

tags: Solana Metaplex Candy Machine