登录
首页 >  Golang >  Go问答

BAND协议网络地址的验证方法是什么?

来源:stackoverflow

时间:2024-02-07 09:09:18 373浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《BAND协议网络地址的验证方法是什么?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我正在尝试用 golang 编写一个钱包地址验证器。我为 atom (cosmos) 编写了验证器。 band网络也使用cosmos sdk。 band网络和atom网络类似。

这是我编写的 cosmos 钱包验证器的代码:

package atom_validator

import (
    "regexp"

    "github.com/btcsuite/btcutil/bech32"
)

const allowed_chars = "qpzry9x8gf2tvdw0s3jn54khce6mua7l"
const atomRegex = "^(cosmos)1([" + allowed_chars + "]+)$" // cosmos + bech32 separated by "1"

func IsValidAddress(address string) bool {
    match, _ := regexp.MatchString(atomRegex, address)
    if match {
        return verifyChecksum(address)
    } else {
        return false
    }
}

func verifyChecksum(address string) bool {
    _, decoded, _ := bech32.Decode(address)

    if decoded != nil {
        return len(decoded) == 32
    } else {
        return false
    }
}

我正在寻找一种使用 golang 对 band 协议进行相同验证的方法。谢谢。


正确答案


我解决了这个问题。只需将正则表达式字符串中的“atom”替换为“band”即可。

package band_validator


import (
    "regexp"

    "github.com/btcsuite/btcutil/bech32"
)

const allowed_chars = "qpzry9x8gf2tvdw0s3jn54khce6mua7l"
const atomRegex = "^(band)1([" + allowed_chars + "]+)$"

func IsValidAddress(address string) bool {
    match, _ := regexp.MatchString(atomRegex, address)
    if match {
        return verifyChecksum(address)
    } else {
        return false
    }
}

func verifyChecksum(address string) bool {
    _, decoded, _ := bech32.Decode(address)

    if decoded != nil {
        return len(decoded) == 32
    } else {
        return false
    }
}

好了,本文到此结束,带大家了解了《BAND协议网络地址的验证方法是什么?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>