Cardano-db-sync: 对所有地址使用十六进制而不是 base58+bech32

创建于 2020-07-28  ·  2评论  ·  资料来源: input-output-hk/cardano-db-sync

这样做有三个主要好处:

原因一——更容易解码

目前,对于每个地址,我们必须做两个步骤
1) 尝试解码为 base58
2)如果(1)失败,尝试解码为 bech32

然而,鉴于所有 base58 地址都以前缀0b1000开头,从十六进制解析立即为您提供正确的地址类型。

原因二——更容易查询

目前,所有对 cardano-db-sync 的查询都必须使用 bech32 前缀“addr”,否则您将不会得到任何结果。 作为一项要求,这似乎相当随意。 如果我可以查询地址的十六进制表示并知道它适用于所有地址类型,那就容易多了。

原因三 - 遗留地址的歧义

我曾多次看到人们使用 base58 地址并将其包装在 bech32 中。 像 cardano-cli 这样的工具甚至接受这种格式的旧地址! 如果我们必须以两种不同的方式解析 base58 地址,这真的很令人困惑。 保存原始十六进制是处理地址的唯一规范方法。

最有用的评论

@SebastienGllmt向包含未编码地址的tx_out表添加额外的列怎么样?

所有2条评论

目前,对于每个地址,我们必须做两个步骤

作为数据库的消费者,我们应该只暴露于表示地址格式,因此这是一种解决方法。

目前,所有对 cardano-db-sync 的查询都必须使用 bech32 前缀“addr”,否则您将不会得到任何结果。

网络识别是地址标识的一部分,为什么没有它就可以导出地址?

我曾多次看到人们使用 base58 地址并将其包装在 bech32 中

用 bech32 包装似乎是解决不存在问题的奇怪方法(除非我完全忽略了这一点)。 改变身份有什么意义?

我也希望看到不一致的解决方案,但解码应该是链同步客户端的内部问题
https://github.com/input-output-hk/cardano-db-sync/issues/224

@SebastienGllmt向包含未编码地址的tx_out表添加额外的列怎么样?

此页面是否有帮助?
0 / 5 - 0 等级