我的 Token.createMintToInstruction 抛出“错误处理指令 0:指令的帐户数据无效”

Eva*_*rad 1 solana

我正在尝试在前端铸造一些令牌,如下所示:

let transaction = new Transaction();
let mintToInstruction = Token.createMintToInstruction(
   splToken.TOKEN_PROGRAM_ID,
   myTokenMint.publicKey,
   userAccount.publicKey,
   airdropAdmin.publicKey,
   [],
   sendAmount.toNumber()
)

transaction.add(mintToInstruction);
       
let conn: Connection = ctx.connection;
const tx1 = await conn.sendTransaction(
  transaction,
  [airdropAdmin]
);
Run Code Online (Sandbox Code Playgroud)

但我收到一个隐晦的错误:

Error processing Instruction 0: invalid account data for instruction
Run Code Online (Sandbox Code Playgroud)

发生了什么?

Eva*_*rad 6

您传入的帐户之一不是令牌计划预期的帐户。

任何一个:

  • userAccount是不正确的。这必须是令牌帐户,您是否使用了用户的系统帐户?
  • myMintAccount是不正确的。这是真正的代币吗?

考虑记录这些公钥并将它们放入资源管理器中。顶部是否userAccount写着“令牌帐户” ?上面有myMintAccount“Token Mint”吗?

invalid account data for instruction当程序无法对unpack您传入的帐户内的数据运行时,通常会发生这种情况。

所以要么Account::unpack失败,要么Mint::unpack失败。