You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Substrate pallet-assets调用create外禀报Call解码错误如何解决

问题根因

该解码错误由以下三个常见原因导致:

  1. 常量定义冲突与类型不匹配:你在parameter_types!中重复定义了AssetDepositPerZombie,且部分常量类型未与Balance类型对齐,会导致Runtime元数据生成异常,外禀参数结构识别错误。
  2. 缺失AssetId类型注册:你的Runtime配置中将AssetId设为u32,但polkadot.js默认对pallet-assets的AssetId类型推断为u64,序列化时按8字节长度编码,Runtime侧按4字节解码,会直接导致参数长度不匹配,对应报错中的Not enough data to fill buffer。
  3. Config关联类型缺失:pallet-assets 3.0.0版本要求必须配置AssetAccountDeposit、RemoveItemsLimit两个关联类型,你现有配置中遗漏,会导致外禀参数结构和前端识别的结构不一致。
解决方案

按以下步骤操作即可解决:

  • 清理并补全常量定义,修正类型不匹配问题:
parameter_types! {
    // 修正类型为Balance,删除重复定义的AssetDepositPerZombie
    pub const AssetDepositBase: Balance = 1;
    pub const AssetDepositPerZombie: Balance = 2 * 7;
    pub const StringLimit: u32 = 50;
    pub const MetadataDepositBase: Balance = 1;
    pub const MetadataDepositPerByte: Balance = 1;
    pub const AssetDeposit: Balance = 2 * 7 ;
    pub const ApprovalDeposit: Balance = 2 * 7 ;
    // 新增缺失的常量配置
    pub const AssetAccountDeposit: Balance = 2 * 7;
    pub const RemoveItemsLimit: u32 = 1000;
}
  • 补全pallet-assets的Config关联类型:
impl pallet_assets::pallet::Config for Runtime {
    type Event= Event;
    type Balance= Balance;
    type AssetId= u32;
    type Currency = Balances;
    type ForceOrigin = frame_system::EnsureRoot<AccountId>;
    type StringLimit = StringLimit;  
    type AssetDepositBase=AssetDepositBase;
    type AssetDepositPerZombie= AssetDepositPerZombie;
    type MetadataDepositBase = MetadataDepositBase;
    type MetadataDepositPerByte = MetadataDepositPerByte;
    type WeightInfo = pallet_assets::weights::SubstrateWeight<Runtime>;
    // 新增缺失的关联类型
    type AssetAccountDeposit = AssetAccountDeposit;
    type RemoveItemsLimit = RemoveItemsLimit;
}
  • 更新polkadot.js的自定义类型配置,新增AssetId声明:
{
  "Address": "MultiAddress",
  "LookupSource": "MultiAddress",
  "AssetId": "u32"
}
  • 重新编译节点,执行./target/release/node-template purge-chain --dev清空本地链数据后重启节点,重新连接polkadot.js再调用assets.create外禀即可。

内容的提问来源于stack exchange,提问作者Harshit Srivastav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:36:03