使用Geth的源代码https://github.com/ethereum/go-ethereum中的一些代码,我试图找到一种方法来生成有效的以太坊钱包。首先,我使用的是secp256k1素数减号1的十六进制版本,即“ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140”。将其插入到Metamask中,我得到的地址为“ 0x80C0dbf239224071c59dD8970ab9d542E3414aB2”。我想使用这些功能来获取等效地址。
到目前为止,我已经使用了私钥“ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140”的十六进制格式。我得到一个20个长度的字节数组[164 121 62 11 173 85 89 159 11 68 30 45 4 221 247 191 191 44 73 181]
具体来说,我定义了secp256k1素数-1的十六进制值,并使用了Geth的Crypto的newKey()函数
var r io.Reader
r = strings.NewReader("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140")
tmp, err := newKey(r)
if err != nil {
fmt.Println(err)
}
fmt.Println(tmp.Address)
我有两个问题。首先,我是否以十六进制形式正确输入了私钥?其次,如何将这个20个字节的字节数组转换为“正常”的十六进制地址?