如何将 FRAME 的 AccountId 转换为网络特定的 SS58?

问题描述

我想使用自定义网络前缀将 AccountId 格式转换为 SS58 格式。

基本上从JS utilities复制以下内容,例如:

更改地址前缀(前缀查找),前缀 = 50

5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY

65ADzWZUAKXQGZVhQ7ebqRdqEzMEftKytB8a7rknW82EASXB

如何在基板托盘中进行一般操作?我是否需要将关联类型添加到我的配置特征中以扩展 Ss58Codec 特征,或者我可以以某种方式将 AccountId 转换为 AccountId32 然后使用其 to_ss58check_with_version() 函数

解决方法

最后我决定不在运行时以 ss58 格式处理地址,因为它被视为严格的外部事物。此外,substrate 中与 ss58 相关的所有函数都使用 STD,因此无法按原样使用 wasm 编译。

另一种解决方案是在 JS UI 中处理这种情况,我将使用 this 代码向用户解释公钥地址是什么以及它映射到的 ss58 地址。 签名消息中的地址将保持为十六进制格式。