首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何验证带协议网络地址?

如何验证带协议网络地址?
EN

Stack Overflow用户
提问于 2022-09-21 23:40:43
回答 1查看 30关注 0票数 1

我正试图用戈朗写一个钱包地址验证器。我为ATOM (宇宙)编写了验证器。波段网络也使用宇宙SDK。带网络和原子网络是相似的。

这是我写的宇宙钱包验证器的代码:

代码语言:javascript
复制
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乐队协议。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-21 23:47:28

我解决了问题。在regex字符串中将“原子”替换为"band“。

代码语言:javascript
复制
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
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73807928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档