0%

HD Wallet 系列:公钥与地址

简单的理解,地址就是公钥/脚本哈希值的base58格式

一、地址的格式

  • P2PKH (Pay To PubKey Hash) 格式的地址

p2pkh_addr.png

  • P2SH (Pay To Script Hash) 格式的地址

p2sh_addr.png

前缀占用一个字节,表示不同的网络
校验占用4个字节
使用base58可以更友好的显示,增加的校验还可以防止用户输入错误,bip32中也是这种格式来显示扩展密钥

二、代码实战

代码参考:https://github.com/tpkeeper/addrtool/blob/master/address.go

1
2
3
4
func PubkeyToAddress(key []byte,netId byte)(string){
hash160Bytes:=btcutil.Hash160(key)
return base58.CheckEncode(hash160Bytes,netId)
}

三、base58前缀目录一览

xpub xprv 代表的就是bip32中的扩展密钥即extended key

base58pre.png