Candy Machine UI白名单铸造报错 无法查询白名单余额如何解决?
Metaplex糖果机白名单预售功能报错修复
报错核心原因
你对whitelistMintSettings配置项的字段含义理解错误,这是触发报错的根本原因:
whitelistMintSettings.mint字段不是用来填写白名单用户钱包地址的,该字段需要填入你提前发行的、作为白名单资格凭证的SPL代币的铸币地址(Mint Address)。- 你当前填入的
xxxxKnH5不是链上真实存在的SPL代币铸币地址,前端校验白名单资格时,会去当前连接的钱包下查找对应Mint的代币账户,链上根本不存在该Mint对应的账户,因此抛出could not find account错误。
另外你贴出的配置片段开头多了一个多余的闭合大括号},属于JSON语法错误,虽然你提到update_candy_machine执行正常,大概率是粘贴代码时的笔误,正式配置时需要修正。
修复步骤
- 完成白名单凭证代币发行
提前发行一个专属SPL代币作为白名单资格凭证,建议将小数位设置为0,总发行量和你的白名单名额总数保持一致,发行完成后记录该代币的Mint地址。 - 给白名单用户发放凭证
将发行好的白名单代币,按每个白名单地址1个的数量,空投给所有需要加入白名单的用户钱包。用户只有钱包里持有该代币,才能通过白名单资格校验。 - 修正config.json配置
替换错误的mint字段值,同时修正JSON语法,正确的配置片段如下:
配置说明:"whitelistMintSettings": { "mode" : { "neverBurn": true }, "mint" : "替换为你发行的白名单SPL代币的真实Mint地址", "presale" : true, "discountPrice" : 0.5 },neverBurn: true代表用户铸造NFT时,不会销毁钱包里的白名单凭证代币,白名单资格可重复使用;如果你的规则是一个白名单名额只能mint1次,需要把mode改成{ "burnEveryTime": true },铸造时自动销毁用户的白名单代币presale: true代表开启白名单预售阶段,持有白名单代币的用户可以在公售开始前提前铸造discountPrice: 0.5代表白名单阶段铸造价格为0.5 SOL,该参数配置本身没有问题
- 重新执行
update_candy_machine命令,确认链上配置同步完成后,使用持有白名单代币的钱包连接前端测试即可。
额外踩坑提示
- Metaplex糖果机原生不支持直接在配置里填写钱包地址列表做白名单,所有白名单校验都是基于「持有指定SPL代币」的逻辑实现,不要混淆字段用途。
- 如果修正Mint地址后仍然报相同错误,先检查测试用的钱包是否真的收到了白名单代币,再排查你使用的RPC节点是否有数据同步延迟,可更换官方公共RPC重试。
内容的提问来源于stack exchange,提问作者YCCLLL
相关产品推荐
相关产品推荐

