Metaplex Candy Machine UI铸造费用错误、钱包出现未知代币问询
问题描述
- 已完成Metaplex代码仓库中Candy Machine UI的搭建配置
- 铸造操作出现两类异常:
- 显示的铸造费用与配置不符,预期铸造价格为1 SOL
- 确认交易后弹出铸造成功提示,但钱包内仅出现未知代币,未收到对应NFT
- 测试前提:未使用国库钱包执行铸造操作
- 钱包端铸造费用确认界面参考:

- 当前配置的Candy Machine ID:
REACT_APP_CANDY_MACHINE_ID=Fz9WxfPa126y8voGyaF2qAfDJMktauxWmnKYnMm7a1fj
- 已通过CLI命令验证Candy Machine本身可正常完成铸造,执行命令如下:
ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts mint_one_token \ -e devnet \ -k ~/.config/solana/devnet.json \ -c example
- Candy Machine完整配置:
{ "price": 1.0, "number": 10, "gatekeeper": null, "solTreasuryAccount": "redacted", "splTokenAccount": null, "splToken": null, "goLiveDate": "16 Jun 2022 18:50:00 GMT", "endSettings": null, "whitelistMintSettings": null, "hiddenSettings": null, "storage": "arweave-sol", "ipfsInfuraProjectId": null, "ipfsInfuraSecret": null, "nftStorageKey": null, "awsS3Bucket": null, "noRetainAuthority": false, "noMutable": false }
问题原因
两个异常是同一个根因导致的:UI端连接的Solana网络和你部署Candy Machine的网络不匹配
- 你用CLI验证铸造时显式指定了
-e devnet参数,CM实际部署在Devnet开发网。但官方Candy Machine UI默认的环境配置是连接Mainnet-beta主网,没有在.env里显式指定网络的话,UI会去主网查询你填写的CM ID对应的链上账户。 - 主网上不存在你部署的CM账户,同地址的是其他无关链上账户,UI解析该账户数据时会把无关字段错误识别为铸造价格,就会出现费用显示和你配置的1 SOL不符的问题。
- 此时你发起的铸造交易实际上是和主网上的无效账户交互,只会铸造出没有绑定元数据的空SFT,也就是你看到的未知代币,自然不会生成带图片、属性的正常NFT。
少数情况下浏览器本地缓存的旧链上数据,也会导致切对网络后仍然出现价格显示错误、NFT元数据加载失败的问题。
修复步骤
- 补全UI环境变量
在项目根目录的.env文件中新增以下配置,强制UI连接Devnet:
核对已填写的REACT_APP_SOLANA_NETWORK=devnet REACT_APP_SOLANA_RPC_HOST=https://api.devnet.solana.comREACT_APP_CANDY_MACHINE_ID和你部署时输出的CM地址完全一致,无多字符、漏字符问题。- 补全UI环境变量
- 清缓存重启服务
停掉本地运行的UI服务,在项目根目录执行以下命令清除缓存后重启:
rm -rf node_modules .cache build yarn install yarn start- 清缓存重启服务
- 核对钱包网络
打开浏览器钱包插件,手动将网络切换为Devnet,不要停留在主网或Testnet。
- 核对钱包网络
- 验证铸造流程
刷新页面后确认页面显示的铸造价格为1 SOL,再发起铸造交易。交易确认后等待10-30秒元数据同步完成,在钱包的NFT/收藏品分类下即可看到正常的NFT,不要在普通同质化代币列表下查找。
- 验证铸造流程
注意:国库钱包是接收铸造款的地址,测试阶段不要使用国库钱包发起铸造,否则会触发权限校验逻辑,也可能导致铸造异常。
内容的提问来源于stack exchange,提问作者Tolulope
相关产品推荐
相关产品推荐

