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

Solana JS客户端如何获取已创建Token的引用以再次执行mint操作

错误原因

你触发Error: Non-base58 character错误的核心原因是向PublicKey构造函数传入了非法的公钥格式:你直接复制了控制台打印的PublicKey实例内部调试输出<BN: xxx>,这是公钥对应的大整数表示,不是Solana公钥标准的base58编码字符串。

解决步骤
  1. 正确存储Token Mint公钥
    在你首次创建Token Mint的代码中,不要直接打印SWAB.publicKey,改为调用toBase58()方法获取可持久化存储的标准公钥字符串:
// 输出类似9nRvjYxZ4kLmP2qR3sT5uV7wX9yA1bC3dE5fG7hJ9kL的base58串,把这个串存下来
console.log(SWAB.publicKey.toBase58())
  1. 重建Token实例的正确代码
    用你存储的base58公钥字符串初始化PublicKey,再实例化Token即可:
// 替换为你上一步存储的base58公钥串
const MINT_PUBKEY = '你存下来的base58公钥字符串'
let pubKey = new PublicKey(MINT_PUBKEY);
let SWAB = new splToken.Token(
        connection,
        pubKey,
        splToken.TOKEN_PROGRAM_ID,
        fromWindowsWallet
    )
额外说明(针对新版@spl-token包)

如果你使用的是@solana/spl-token@0.2.0及以上版本,官方已经不推荐使用Token类实例的写法,你可以直接传入mint公钥调用对应的静态方法,不需要提前创建Token实例,比如mint操作可以直接调用mintTo方法:

const { mintTo } = require('@solana/spl-token');

const signature = await mintTo(
  connection,
  fromWindowsWallet,
  new PublicKey(MINT_PUBKEY), // 直接传你存的mint公钥即可
  destinationTokenAccount,
  fromWindowsWallet.publicKey,
  100 * 10 ** 2 // 数量乘以你设置的Token精度
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:54:03