使用Metaplex铸造Solana pNFT时遇ParsedProgramError错误如何解决?
修复Solana上Metaplex铸造pNFT的TokenMetadataProgram错误(代码1)
问题场景
使用Metaplex铸造可编程NFT(pNFT)时,执行交易发送步骤报错,相关代码如下:
const transactionBuilder = await METAPLEX .nfts() .builders() .create({ uri: metadataUri, name: name, sellerFeeBasisPoints: sellerFee, symbol: symbol, creators: creators, isMutable: true, isCollection: false, tokenStandard: TokenStandard.ProgrammableNonFungible, ruleSet: null }); let { signature, confirmResponse } = await METAPLEX.rpc().sendAndConfirmTransaction(transactionBuilder, { commitment: 'finalized' });
错误日志:
ParsedProgramError: The program [TokenMetadataProgram] at address
[metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s] raised an error of code
[1] that translates to "".
修复方案
- 校验元数据URI有效性:确保
metadataUri指向的JSON文件可公开访问,且完全符合Metaplex元数据规范,包含name、symbol、description、image等必填字段,无语法错误。 - 修正creators数组格式:每个creator对象必须包含
address(Solana地址)、share(分成比例,整数)、verified(布尔值),且所有creator的share总和必须等于100。如果当前钱包是创建者之一,需将其verified设为true。 - 确认TokenStandard导入正确性:检查
TokenStandard是否从@metaplex-foundation/js正确导入,避免拼写错误,确保TokenStandard.ProgrammableNonFungible的取值正确。 - 使用完整的pNFT铸造流程:尝试替换
builders().create为nfts().create方法,该方法会自动处理pNFT所需的所有初始化逻辑,示例代码:const { nft } = await METAPLEX.nfts().create({ uri: metadataUri, name: name, sellerFeeBasisPoints: sellerFee, symbol: symbol, creators: creators, isMutable: true, isCollection: false, tokenStandard: TokenStandard.ProgrammableNonFungible, ruleSet: null }, { commitment: 'finalized' }); - 检查钱包权限与余额:确保签名钱包有足够的SOL支付交易手续费,且是
creators数组中标记为verified的地址(若存在)。 - 查询详细错误信息:将交易签名复制到Solana Explorer中查看完整错误详情,代码1是通用错误码,Explorer会给出具体原因(如缺失必填账户、元数据格式错误等)。
内容的提问来源于stack exchange,提问作者Alchemist
相关产品推荐
相关产品推荐

