Tutorial by Update Settings
BETA RELEASE - Updates still being made
Need web3 help? Support Update Settings by becoming a Cursor holder to receive exclusive access to projects and get hands on web3 dev help by our team.
- Fix Presale Phase Header (page requires refresh)
- Remove unused code
- Performance optimization
- Whitelist signup prevent duplicates
- Animations
Create New Wallet
// Optional: Make a folder if you dont already have one
mkdir ~/my-solana-wallet
// Make wallet within folder
solana-keygen new --outfile ~/my-solana-wallet/my-keypair.json
// Get wallet address
solana-keygen pubkey ~/my-solana-wallet/my-keypair.json
// Use wallet address to verify with keypair
solana-keygen verify <PUBKEY> ~/my-solana-wallet/my-keypair.json
// Config wallet
solana config set --keypair ~/my-solana-wallet/my-keypair.json
// Devnet Fund wallet
solana airdrop 1 <PUBKEY> --url https://api.devnet.solana.com
// Config Network (devnet)
solana config set --url https://api.devnet.solana.com
Create whitelist spl token
// Optional: Create Token w/ custom vanity
solana-keygen grind --starts-with US:1
// Create Token (If using custom vanity)
spl-token create-token <TOKEN WITH VANITY> --decimals 0
// Create Token (if NOT using custom vanity start here)
spl-token create-token --decimals 0
// Create token account
spl-token create-account <TOKEN>
// Create token supply
spl-token mint <TOKEN> <NUMBER TOKENS TO CREATE>
// Check token supply
spl-token balance <TOKEN>
Distribute SPL Tokens via Gumdrop (Optional)
// Create JSON file with dist list of wallet address
example-dist.json
[
{
"handle": "<DISTRIBUTION-METHOD-SPECIFIC-HANDLE>",
"amount": <GUMDROP-CLAIM-ALLOWANCE>,
["edition": <EDITION-NUMBER>]
},
]
// Run Gumdrop to distribute SPL token
npx ts-node js/packages/cli/src/gumdrop-cli.ts create -k <KEYPAIR> --claim-integration transfer --transfer-mint <SPL TOKEN> --distribution-method wallets --distribution-list example-dist.json
Set up config file
Civic pass disabled in this config
{
"price": 1,
"number": 310,
"gatekeeper": null,
"solTreasuryAccount": "XXXXpj1yKkPrzCy1zK96iGVFkDjuhw62aqKVsKXXXXX",
"splTokenAccount": null,
"splToken": null,
"goLiveDate": "19 Jan 2022 13:00:00 PST",
"endSettings": null,
"whitelistMintSettings": {
"mode": { "burnEveryTime": true },
"mint": "61yn9rQEUetLhENEj73pGr3L1Rm8AjpK6DDYc1BYCikV",
"presale": true,
"discountPrice": 0
},
"hiddenSettings": null,
"storage": "arweave", // arweave-sol for mainnet
"ipfsInfuraProjectId": null,
"ipfsInfuraSecret": null,
"awsS3Bucket": null,
"noRetainAuthority": false,
"noMutable": false
}
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts upload -e devnet -k ~/my-solana-wallet/demo.json -cp config.json -c demo ./demo-assets --rpc-url https://api.devnet.solana.com
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts verify_upload -e devnet -k ~/my-solana-wallet/demo.json -cp config.json -c demo
// Mint one
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts mint_one_token -e devnet -k ~/my-solana-wallet/demo.json -c demo
// Mint multiple (example: 3)
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts mint_multiple_tokens --number 3 -e devnet -k ~/my-solana-wallet/demo.json -c demo
// Verify Keypair for creator (-t 90 needed due to network )
metaboss -t 90 sign all --keypair <PATH_TO_KEYPAIR> --candy-machine-id <CANDY_MACHINE_ID> --v2
// Update Candy Machine
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts update_candy_machine -e devnet -k ~/my-solana-wallet/demo.json -c demo
// * WARNING *
// This will break your candy machine and any other candy machines tied to the keypair.
// Recommend to run this after you have fully minted!
// Rec to run a dry version to view what will break
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts withdraw --dry -e devnet -k ~/my-solana-wallet/demo.json
// Official withdraw command
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts withdraw -e devnet -k ~/my-solana-wallet/demo.json
// Fork & Clone
git clone https://github.com/updatesettings/nextjs-candy-machine-v2.git
// Config .env
NEXT_PUBLIC_CANDY_MACHINE_ID=<CANDY MACHINE ID IN CACHE FILE>
NEXT_PUBLIC_SOLANA_NETWORK=devnet
NEXT_PUBLIC_SOLANA_RPC_HOST=https://api.devnet.solana.com
// If you are running the whitelist sign up page, then setup notion as well
NOTION_API_KEY=
NOTION_DATABASE_ID=
// Add Site Data .../data/siteData.js
// Important to add wallet address(es) of creators as this is how we pull the NFTs
// It's recommended to only use the wallet address(es) that are only associated
// to the collection and not tied to other collections
addresses: {
creators: [
"XXXXyKkPrzCy1zK96iGVFkDjuhw62aqKVXXXX",
],
},
// Set node version - it is recommended to nvm (node version manager)
nvm use
// Install packages
yarn install
// Run local
yarn dev
/////////////////////////////////////////
// Image URLS
// if you don't use Arweave for your NFTs, then you will need to update next.config.js
images: {
domains: ["arweave.net", "www.arweave.net"],
},
// Login to vercel
// Set up new project
// Framework Preset: Next.js
// Config Environment Variables (as above)
// In Environment Variables you may need deactivate the CI if build is failing
CI=false