Archway网络合约实例化时触发无效类型错误求助
排查Archway合约实例化"Invalid type"错误的可能原因
错误信息
Error: rpc error: code = Unknown desc = rpc error: code = Unknown desc
= failed to execute message; message index: 0: Error parsing into type cw_arcade::msg::InstantiateMsg: Invalid type: instantiate wasm
contract failed [CosmWasm/wasmd@v0.32.0/x/wasm/keeper/keeper.go:302]
With gas wanted: '300000000' and gas used: '135732' : unknown request
合约实例化消息结构
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct InstantiateMsg { pub admins: Vec<String>, pub name: String, pub max: u8, pub price: u128, pub denom: String, }
前端提交的数据
{ "admins": [ "archway1uwew6p8k70xa2lkzeujqcw430uky49zthsvc0y", "archway10mxcxvyjnpcmnkg0sxf7r25f3wzjqdz6jp4jux", "archway1a8dq0wced6q29rppdug7yvk8ek0dsrqwe3hxcz" ], "name": "Name", "max": 250, "price": 1000000000, "denom": "aconst" }
可能的错误原因及排查步骤
price字段类型不匹配:JSON数字默认是64位浮点数,虽然1000000000在合法范围内,但部分serde配置或链上虚拟机版本可能无法直接将其反序列化为u128。尝试将price的值改为字符串格式,比如"1000000000"后重新提交。- 合约与链上wasmd版本不兼容:链上使用的wasmd v0.32.0对应特定版本的CosmWasm SDK,若合约编译时使用的
cosmwasm-std等依赖版本过高,会导致反序列化逻辑冲突。检查合约Cargo.toml中的依赖版本,确保与链上版本匹配(wasmd v0.32.0对应cosmwasm-std v1.3.x系列)。 max字段的隐性类型问题:虽然250属于u8的合法范围(0-255),但某些情况下JSON数字的编码方式可能导致虚拟机识别错误。临时将max改为更小的值(如100)测试,验证是否能正常实例化。- 提交数据的格式隐性错误:检查地址字符串是否包含不可见字符、JSON是否存在隐性语法问题(如多余换行、空格)。使用JSON校验工具验证提交数据的合法性,同时确保地址是符合Archway规范的bech32格式。
内容的提问来源于stack exchange,提问作者user22306396
相关产品推荐
相关产品推荐

