地址是通过 blake160(也就是args) 算出来的, 使用的比特币社区提出的 Bech32算法
代码参考:
// https://github.com/liushooter/ckb-wallet-golang/blob/v0.2.1/wallet.go#L75-L94
func genCkbAddr(blake160Addr []byte, prefix string) string {
typebin, _ := hex.DecodeString("01")
flag := []byte("P2PH")
payload := append(typebin, flag...)
payload = append(payload, blake160Addr...)
converted, err := bech32.ConvertBits(payload, 8, 5, true)
if err != nil {
panic(err)
}
addr, err := bech32.Encode(prefix, converted)
if err != nil {
panic(err)
}
return addr
}