首页 > 解决方案 > 前端模板中的多地址实用程序

问题描述

扩展前端模板以做一些新的事情并遇到我们链中指定的多地址查找功能问题:https ://github.com/Greenetwork/BLX_chain/blob/f14ad8705debcc8033069b4fdda046271e1b61f1/pallets/allocator/src/lib.rs #L140

因此,问题似乎在于我们缺少外部(tradeTokens)想要的数据(定义 fromapn:Source 和 toapn:Source 的“类型”的部分)

您可以在下面看到,在 polkadot js 应用程序中使用下拉菜单选择 Address32 会在编码的呼叫数据中填充 3(Address32 是 Source 枚举中的第三个条目) 在此处输入图像描述

在这里,3 显示为 'snip< Address32: >snip' 在此处输入图像描述

目前作为我们前端模板中的代码: https ://github.com/Greenetwork/BLX_frontend_new/blob/afe6f9f256e6c9c2a3164f72cf80d4a9057bb893/src/Transfer.js#L71-L72

错误是:

未处理的拒绝(错误):createType(Call)::Call: 解码失败 allocator.tradeTokens:: Struct: args 失败:{"asset_id":"AssetId","fromapn":"Source","toapn":"Source ","amt":"Balance1"}:: 结构:在 fromapn 上失败:{"_enum":{"Id":"AccountId","Index":"AccountIndex","Raw":"Bytes","Address32 ":"[u8;32]","Address20":"[u8;20]"}}:: 提供的 AccountId 无效,预期 32 字节,找到 31

我认为问题在于外部正在读取提交给 fromapn 的数据的第一个(或第二个,参见第一张图片中的调用数据)值作为 Source 的索引,在当前情况下为 0,因此它正在继续将传递的其余数据视为 AccountId。

它失败的事实是,通过使用其中一个值作为 Source 的索引,所以我们只剩下 31 个字节而不是 32 个字节。我认为 AccountId 也是 32 个字节。

我们是否需要另一个辅助函数来附加指定类型的额外数据?还是有别的路?

标签: substrate

解决方案



推荐阅读