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

前端模板Multiaddress功能适配BLX链tradeTokens调用问题咨询

前端模板扩展multiaddress查找功能时调用tradeTokens extrinsic报错排查

扩展前端模板实现新功能时,遇到了符合链上规范的multiaddress查找功能相关问题。

初步根因判断

调用tradeTokens extrinsic时缺少必填参数:用于定义fromapn:Source和toapn:Source的类型标识字段。

参考验证现象

  • 在polkadot js apps中通过下拉菜单选择Address32时,编码后的调用数据中会填充数值3(Address32是Source枚举的第3个项)
    调用数据截图
  • 进一步可以看到该数值3被识别为snip< Address32: >snip
    类型识别截图

当前参考代码

BLX_frontend_new/src/Transfer.js L71-L72

运行时报错信息

Unhandled Rejection (Error): createType(Call):: Call: failed decoding allocator.tradeTokens:: Struct: failed on args: {"asset_id":"AssetId","fromapn":"Source","toapn":"Source","amt":"Balance1"}:: Struct: failed on fromapn: {"_enum":{"Id":"AccountId","Index":"AccountIndex","Raw":"Bytes","Address32":"[u8;32]","Address20":"[u8;20]"}}:: Invalid AccountId provided, expected 32 bytes, found 31

问题推测

  • extrinsic会将提交给fromapn的首段(或第一张截图中调用数据的第二段)值作为Source的枚举索引,当前场景下该值为0,因此后续传入的所有数据会被当作AccountId处理
  • 由于其中1字节被用作Source枚举索引,剩余数据仅为31字节,而AccountId要求为32字节,因此触发报错

待解答疑问

是否需要新增辅助函数来追加指定Source类型的标识数据?或者是否有其他解决方案?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:36:05