问题描述
我想使用自定义网络前缀将 AccountId
格式转换为 SS58
格式。
基本上从JS utilities复制以下内容,例如:
更改地址前缀(前缀查找),前缀 = 50
5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY
65ADzWZUAKXQGZVhQ7ebqRdqEzMEftKytB8a7rknW82EASXB
如何在基板托盘中进行一般操作?我是否需要将关联类型添加到我的配置特征中以扩展 Ss58Codec
特征,或者我可以以某种方式将 AccountId
转换为 AccountId32
然后使用其 to_ss58check_with_version()
函数?
解决方法
最后我决定不在运行时以 ss58 格式处理地址,因为它被视为严格的外部事物。此外,substrate 中与 ss58 相关的所有函数都使用 STD,因此无法按原样使用 wasm 编译。
另一种解决方案是在 JS UI 中处理这种情况,我将使用 this 代码向用户解释公钥地址是什么以及它映射到的 ss58 地址。 签名消息中的地址将保持为十六进制格式。