我想要基于bip32种子生成一个bip39私有根键。我找到了一篇带有python代码的文章,将其复制到自己手中,并执行它,获得了一个有效的私有根密钥(选中了这里)。然后我在golang上写了一个类似的脚本,将python示例中的种子插入其中,执行之后,我得到了错误的根键。这组字节随后由base58编码以获得根键,它们在两个脚本中重合,但是base58编码的结果是不同的。
Python示例:
...
print(all_bytes.hex())
root_key = base58.b58encode_check(all_bytes).decode('utf8')
print(root_key)Python输出:
0488ade400000000000000000060499f801b896d83179a4374aeb7822aaeaceaa0db1f85ee3e904c4defbd9689004b03d6fc340455b363f51020ad3ecca4f0850280cf436c70c727923f6db46c3e
xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2UGolang示例:
fmt.Println(hex.EncodeToString(buffer.Bytes()))
rootKey := base58.CheckEncode(buffer.Bytes(), 0)
fmt.Println(rootKey)Golang产量:
0488ade400000000000000000060499f801b896d83179a4374aeb7822aaeaceaa0db1f85ee3e904c4defbd9689004b03d6fc340455b363f51020ad3ecca4f0850280cf436c70c727923f6db46c3e
1xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsUrGUX正如您所看到的,用于编码的字节在这里和那里是相同的,但是结果是不同的。我尝试使用另一个golang模块生成一个base58字符串,但是它为这个种子生成了一个错误:/可能有人遇到了类似的情况,并且知道如何在golang中生成正确的base58字符串。
发布于 2023-04-15 22:36:23
您的问题可能来自于base58.CheckEncode函数,请尝试使用像这个github.com/btcsuite/btcutil/base58这样的不同的Golang库,下面是如何在代码中使用它
package main
import (
"bytes"
"encoding/hex"
"fmt"
"github.com/btcsuite/btcutil/base58"
)
func main() {
allBytes := []byte{...} // Your bytes here
fmt.Println(hex.EncodeToString(allBytes))
rootKey := base58.Encode(allBytes)
fmt.Println(rootKey)
}https://ethereum.stackexchange.com/questions/149014
复制相似问题