rt,官方的 explorer 给出 block hash 是能对应到 address 的,但是 rpc 接口里没发现有这个方法,请问应该怎么对应?
根据 Block hash 是可以获取到整个 block 的完整信息,其中就包含了 Cellbase 交易,也就是出块奖励,该交易的 Output 中包含出块人的 args 和 code_hash 信息,根据这两个数据就可以计算出矿工的地址。
地址是通过 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
}
多谢指点!我打算做个简单的测试挖矿排行试试
1 Like
我也想了解下这方面的数据
如何获取最新爆块的矿工地址啊?查看浏览器是通过第一个交易的witness字段解析的,有没有go的实现方式?