铸造NFT时提示custom program error: 0x26错误如何排查解决?
NFT铸造抛出
custom program error: 0x26报错解决方案 错误定义
0x26转十进制为38,是Solana Metaplex Token Metadata程序抛出的InvalidMetadata错误,本质是合约在执行铸造逻辑时,检测到传入的元数据或关联账户不符合规则,直接中断交易执行。
高频触发原因
- 链上元数据字段违反合约约束:
name字段长度超过32字符symbol字段长度超过10字符uri字段长度超过200字符seller_fee_basis_points取值大于10000(版税超过100%)
- 创作者(
creators)数组校验失败:- 所有创作者的份额累加值不等于100
- 标记为需签名的创作者未提供有效签名
- 数组长度超过合约支持的最大上限5个
- 关联账户地址错误:元数据账户、Master Edition账户的PDA派生逻辑错误,传入地址和合约按规则推导的预期地址不一致
- 链下元数据不符合规范:
uri指向的JSON文件无法公网访问、返回403/404/跨域错误、缺失name/image/description等必填字段、字段值类型不符合Metaplex NFT标准 - SDK版本不兼容:使用的铸造SDK版本过旧,和当前链上部署的Metaplex程序逻辑不匹配,参数构造、PDA推导逻辑存在偏差
排查路径
- 全量打印交易构造阶段传入的链上元数据参数,逐字段核对长度、取值范围、格式,重点校验创作者数组的份额总和、签名配置
- 用正确的mint地址、Token Metadata程序ID重新推导元数据PDA、Master Edition PDA地址,和交易中传入的对应账户地址做比对,确保完全一致
- 直接请求
uri指向的链下元数据地址,确认返回内容为标准可解析JSON,所有必填字段完整无缺失 - 对照Metaplex官方当前版本的合约参数要求,核对所用SDK的版本兼容性,必要时升级SDK到匹配版本
完整程序运行日志会在报错抛出前打印最后执行的校验分支,可直接定位到具体不符合规则的参数项,优先从日志断点位置缩小排查范围。
内容的提问来源于stack exchange,提问作者Pratik.js
相关产品推荐
相关产品推荐

