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

Substrate中PalletId调用into_sub_account方法提示不存在如何解决?

问题原因

  • 你参考的是Substrate最新master分支的文档,和你使用的monthly-2021-10版本不匹配,into_sub_account方法是后续版本才新增到PalletId结构体的直接调用方法,你所用的旧版本不存在该原生方法。
  • 旧版本中PalletId生成子账户的相关逻辑没有直接实现在结构体上,而是定义在frame_support::traits::AccountIdConversion trait中,未导入对应trait时就会提示方法不存在。

解决方案

两种方案可按需选择:

方案1:导入对应trait适配当前版本

不需要升级Substrate依赖,仅调整代码即可正常运行:

  1. 首先在代码顶部添加trait导入语句:
use frame_support::traits::AccountIdConversion;
  1. 把原代码中的into_sub_account替换为当前版本支持的into_sub_account_truncating方法,修改后代码如下:
const PALLET_ID: PalletId = PalletId(*b"ex/cfund");
fn fund_account_id(index: FundIndex) -> T::AccountId {
    PALLET_ID.into_sub_account_truncating(index)
}

方案2:升级Substrate依赖版本

如果需要使用新版into_sub_account方法,可以将你的Substrate依赖tag升级到monthly-2022-09及以上版本,该版本之后的PalletId已经内置了into_sub_account直接调用方法,不需要额外导入trait即可正常使用。

内容的提问来源于stack exchange,提问作者Amiya Behera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:54:05