You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solana Metaplex Candy Machine state.tokenMint为null的正确设置方法

问题根因

你创建Candy Machine时默认选用SOL作为支付币种,这种场景下链上tokenMint字段原生就是null值,不需要也无法后期手动设置该字段。你调用的mintOneToken方法仅适配使用SPL代币作为支付币种的Candy Machine,因此会触发非空校验报错。

解决方案

方案1:继续使用SOL支付(无需重建Candy Machine)

直接调整mint逻辑即可,无需修改链上Candy Machine数据:

  • 当检测到candyMachine.state.tokenMint === null时,跳过getAtaForMint逻辑,用户支付账户直接使用payer地址即可。
  • 也可直接选用适配SOL支付场景的原生mint方法,避开针对SPL支付场景的非空校验。

方案2:切换为SPL代币支付(需重建Candy Machine)

tokenMint是Candy Machine的初始化固定参数,创建完成后不可修改,如果需要使用SPL代币支付,只能重新创建Candy Machine,创建时补充指定SPL代币相关参数:

ts-node candy-machine-cli.ts create_candy_machine --env devnet --keypair <你的密钥文件路径> --price <代币支付数量> --spl-token <你的SPL代币Mint地址> --spl-token-account <接收代币的ATA地址>

按上述命令创建的Candy Machine链上tokenMint字段会自动填充为你指定的SPL代币Mint地址,可正常调用你当前使用的mintOneToken方法。

内容的提问来源于stack exchange,提问作者Ozymandias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:24:02