如何配置Solana Candy Machine实现指定类别区间NFT铸造
解决方案:实现Candy Machine按类别铸造指定区间NFT
核心问题分析
当前配置仅通过groups设置了不同铸造条件的分组,但未绑定对应资产区间,且默认isSequential: false为随机铸造逻辑,导致用户选择类别后仍会获取全范围NFT。要实现需求,需结合资产范围限制Guard和有序资产组织,将分组与对应编号区间绑定。
步骤1:按区间组织并上传资产(Pinata IPFS)
- 将8个类别的资产分别整理为独立文件夹,每个文件夹包含对应编号区间的NFT媒体文件(图片/视频等)和Metadata文件:
- Cat A文件夹:包含
1.png/1.json至500.png/500.json - Cat B文件夹:包含
501.png/501.json至1000.png/1000.json - 以此类推至Cat H的
3501-4000区间文件
- Cat A文件夹:包含
- 按Cat A → Cat B → ... → Cat H的顺序,将所有资产批量上传至Pinata:
- 确保上传顺序与编号区间完全对应,Metaplex会按上传顺序为资产分配索引(第一个上传的资产索引为1,最后一个为4000)
- 记录每个类别资产对应的IPFS目录哈希(可选,用于后续验证)
步骤2:调整Candy Machine配置
修改配置文件的关键参数,为每个分组添加资产范围限制,并修正总数量:
{ "tokenStandard": "pnft", "number": 4000, // 修正为总NFT数量4000 "symbol": "ADF", "sellerFeeBasisPoints": 500, "isMutable": true, "isSequential": false, // 保持随机,仅限制范围;若需顺序铸造可改为true "ruleSet": "AQvYNMN2uZJWYPrBuMvyBbLyMDEee7mfafRZbBuPXxJ1", "creators": [ { "address": "AQvYNMN2uZJWYPrBuMvyBbLyMDEee7mfafRZbBuPXxJ1", "share": 50 }, { "address": "替换为第二个创作者地址", // 建议修正重复的创作者地址 "share": 50 } ], "hiddenSettings": null, "uploadMethod": "ipfs", "pinataConfig": "你的Pinata密钥", "guards": { "default": { "botTax": { "value": 0.01, "lastInstruction": true } }, "groups": [ { "label": "Cat A", // 修正标签为类别名称 "guards": { "startDate": { "date": "2024-01-01 12:00:00 +0000" }, "solPayment": { "value": 0.01, "destination": "AQvYNMN2uZJWYPrBuMvyBbLyMDEee7mfafRZbBuPXxJ1" }, "assetRange": { // 添加资产范围限制 "start": 1, "end": 500 } } }, { "label": "Cat B", "guards": { "startDate": { "date": "2024-01-01 12:00:00 +0000" }, "solPayment": { "value": 0.01, "destination": "AQvYNMN2uZJWYPrBuMvyBbLyMDEee7mfafRZbBuPXxJ1" }, "assetRange": { "start": 501, "end": 1000 } } }, // 依次添加Cat C至Cat H的分组,对应各自的assetRange区间 { "label": "Cat H", "guards": { "startDate": { "date": "2024-01-01 12:00:00 +0000" }, "solPayment": { "value": 0.01, "destination": "AQvYNMN2uZJWYPrBuMvyBbLyMDEee7mfafRZbBuPXxJ1" }, "assetRange": { "start": 3501, "end": 4000 } } } ] } }
关键配置说明
number: 必须设置为总NFT数量4000,匹配所有区间的资产总数assetRangeGuard: 每个分组添加该配置,指定对应类别允许铸造的资产索引区间,确保用户选择该分组时只能铸造此范围内的NFTisSequential: 保持false则用户在区间内随机获取NFT;若需用户按顺序铸造该区间的NFT,可改为true- 创作者地址:修正重复的地址,确保每个创作者地址唯一
步骤3:验证与部署
- 使用Metaplex CLI更新Candy Machine配置:
ts-node ~/metaplex-foundation/js/packages/cli/src/candy-machine-v3.ts update-config -k ~/.config/solana/devnet.json -e devnet -c config.json - 上传所有资产至Candy Machine(按步骤1的顺序):
ts-node ~/metaplex-foundation/js/packages/cli/src/candy-machine-v3.ts upload -k ~/.config/solana/devnet.json -e devnet -c config.json -r https://api.devnet.solana.com - 测试铸造:通过前端或CLI选择不同分组进行铸造,验证是否仅获取对应区间的NFT
内容的提问来源于stack exchange,提问作者Hemang Joshi
相关产品推荐
相关产品推荐

