代码拉取完成,页面将自动刷新
package nodeStore
import (
"bytes"
"crypto/sha256"
"gitee.com/prestonTao/keystore/base58"
"gitee.com/prestonTao/utils"
)
//节点地址
type AddressNet []byte
func (this AddressNet) B58String() string {
return string(base58.Encode(this))
}
func AddressFromB58String(str string) AddressNet {
return AddressNet(base58.Decode(str))
}
/*
通过公钥生成网络节点地址,将公钥两次hash得到网络节点地址
@version []byte 版本号(如比特币主网版本号“0x00")
*/
func BuildAddr(pubKey []byte) AddressNet {
//第一步,计算SHA-256哈希值
publicSHA256 := sha256.Sum256(pubKey)
//第二步,计算上一步结果的SHA-256哈希值
temp := sha256.Sum256(publicSHA256[:])
return temp[:]
}
/*
检查公钥生成的地址是否一样
@return bool 是否一样 true=相同;false=不相同;
*/
func CheckPukAddr(pubKey []byte, addr AddressNet) bool {
tagAddr := BuildAddr(pubKey)
return bytes.Equal(tagAddr, addr)
}
/*
去除重复地址
*/
func RemoveDuplicateAddress(addrs []*AddressNet) []*AddressNet {
m := make(map[string]*AddressNet)
for i, one := range addrs {
// m[hex.EncodeToString(*one)] = addrs[i]
m[utils.Bytes2string(*one)] = addrs[i]
}
dstAddrs := make([]*AddressNet, 0)
for _, v := range m {
dstAddrs = append(dstAddrs, v)
}
return dstAddrs
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。