Tx 的 output 里只有 args 和 code_hash,如何对应到 address?

地址是通过 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
}