使用token metadata程序更新NFT元数据报custom program error:0x3b如何解决
问题现象
在Solana链上铸造NFT后,调用Metaplex Token Metadata程序执行元数据更新操作时,程序返回报错:custom program error: 0x3b
相关报错截图如下:
错误根因
错误码0x3b转换为十进制为59,对应Token Metadata程序内置错误:更新权限不匹配。
程序在执行更新元数据逻辑前,会强制校验交易传入的更新权限方是否和链上Metadata账户存储的update_authority字段一致,校验不通过就会直接抛出该错误,拒绝执行更新操作。
排查&修复方案
- 核对链上存储的更新权限地址
先通过链上浏览器查询目标NFT对应的Metadata账户数据,确认update_authority字段的实际链上值,确保更新交易中传入的更新权限账户地址和该值完全一致,不要传错测试网/主网地址、不要混淆权限账户。 - 检查权限账户签名有效性
确认传入的更新权限账户是本次交易的签名方,签名逻辑正确、账户未处于冻结/锁死状态,不存在签名缺失、签名无效的问题。 - 确认NFT元数据未被锁定
查看Metadata账户的is_mutable字段,如果该字段值为false,说明该NFT元数据已经被设置为永久不可修改,任何更新操作都会被程序拒绝,这种情况无法再修改元数据。 - 校验传入的Metadata账户地址正确性
确认更新指令中传入的Metadata账户是对应NFT Mint地址推导生成的正确PDA地址,标准推导种子为["metadata", Token Metadata程序ID, NFT Mint地址],如果误传入其他NFT的Metadata账户,也会触发权限校验失败。
内容的提问来源于stack exchange,提问作者Pratik.js
相关产品推荐
相关产品推荐

