0

我正在使用 sdk 硬币模块,每当我尝试铸造带有大写符号的硬币时,它都会失败并给我一个无效的 tx 错误。我希望你能解释为什么会这样。这是 cosmos sdk 代码的链接。我正在查看 sdk 代码,似乎正则表达式应该允许大写和小写字母符号https://github.com/cosmos/cosmos-sdk/blob/a6c3c5d0909cc5ab0426129503d8585c3af430ce/types/coin.go#L601

我们可以在铸造硬币之前调用一个函数来接受大写的正则表达式,但是这在区块链级别是不可配置的,并且会导致问题,因为我们在代码库中有很多地方可以铸造和燃烧硬币。这应该可以在区块链级别进行配置,这样我们就不必在想要在 cosmos 上铸造和燃烧硬币的任何时候设置正则表达式字符串。

4

1 回答 1

1

您可以在命令二进制文件中设置自定义验证规则,如下所示

func main() {
    cdc := app.MakeCodec()
    sdk.CoinDenomRegex = func() string {
        return validation.ReDnmString
    }

此示例从此处仅允许默认规则和所有表情符号的外部文件导入 RegEx 规则。

确切的格式可能已使用PR 进行了更新,但通过覆盖/cmd/{binary}/main.go.

于 2021-01-20T21:08:26.110 回答