主页 > imtoken官网唯一地址 > Bytomd助记词恢复秘钥体验指南

Bytomd助记词恢复秘钥体验指南

imtoken官网唯一地址 2023-01-29 06:24:42

比原链项目仓库:

Github地址:

gitee地址:

背景知识

Bytom使用的密钥类型是基于ed25519的chaind.XPub

准备代码修改

先适当修改代码比特币私钥助记词有几个,增加一些打印输出,以便我们更好的验证。 如果只想看xpub,不关心xprv(验证导入导出助记词功能就可以了),可以跳过这一步,不需要修改源码。

在 bytom/blockchain/pseudohsm/pseudohsm.go

func (h *HSM) createKeyFromMnemonic(alias string, auth string, mnemonic string) (*XPub, 错误)

添加输出打印root XPub对应的私钥和公钥

func (h *HSM) createKeyFromMnemonic(alias string, auth string, mnemonic string) (*XPub, error) {
    // Generate a Bip32 HD wallet for the mnemonic and a user supplied password
    seed := mnem.NewSeed(mnemonic, "")
    xprv, xpub, err := chainkd.NewXKeys(bytes.NewBuffer(seed))
    if err != nil {

比特币私钥助记词有几个_比特币 私钥_比特币私钥推算公钥

return nil, err } fmt.Println(hex.EncodeToString(xprv[:])) // Add info printing fmt.Println(hex.EncodeToString(xpub[:])) // Add info printing id := uuid.NewRandom() key := &XKey{ ID: id, KeyType: "bytom_kd", XPub: xpub, XPrv: xprv, Alias: alias,

比特币私钥推算公钥_比特币私钥助记词有几个_比特币 私钥

} file := h.keyStore.JoinPath(keyFileName(key.ID.String())) if err := h.keyStore.StoreKey(file, key, auth); err != nil { return nil, errors.Wrap(err, "storing keys") } return &XPub{XPub: xpub, Alias: alias, File: file}, nil }

工具准备

因为bytomd目前的dashboard钱包图形界面没有助记词相关功能比特币私钥助记词有几个,所以需要准备工具使用POST请求。 例如卷曲或邮递员。

获取助记词对应的key

Dashboard目前没有key导出助记词的功能,目前只有key创建时对应的助记词输出信息。 可以修改源码,在查看key的时候打印对应的助记词。

由于只是测试,这里为了方便,直接查看创建key时返回的助记词。

比特币私钥推算公钥_比特币私钥助记词有几个_比特币 私钥

向 bytomd 发起一个 post request/create-key

{
  "alias": "create_key_test",
  "password": "createkeytest",
  "language": "en"
}

比特币私钥助记词有几个_比特币 私钥_比特币私钥推算公钥

可以看到response中显示了xpub和mnemonic

由于修改了源码,增加了打印信息,bytomd命令行也打印出了打印的xprv和xpub

比特币私钥推算公钥_比特币私钥助记词有几个_比特币 私钥

如何通过导入助记词恢复密钥?

假设已经有一个xprv

比特币私钥助记词有几个_比特币私钥推算公钥_比特币 私钥

50db5bfe21b08462972eadbce08ec92d078a45fa7a280d175a823f9e457faf447d1f501b69f895b830138fabc6f91e2b3b3c8df26642a34be4af27886b9134dc

对应的助记词是

pudding
room
business
river
pattern
box
snap
merit
unfold
speak
hat

比特币私钥助记词有几个_比特币私钥推算公钥_比特币 私钥

task

发起post请求/create-key

{
  "alias": "nnemonic_test",
  "password": "nnemonicnnemonic",
  "nnemonic": "pudding room business river pattern box snap merit unfold speak hat task",
  "language": "en"
}

返回相应的:

比特币私钥推算公钥_比特币 私钥_比特币私钥助记词有几个

字节输出

比特币私钥推算公钥_比特币 私钥_比特币私钥助记词有几个

可以看到恢复后的xprv和我们原来的xprv是一致的,验证成功。

我们恢复的密钥也可以在仪表板中看到。

比特币私钥助记词有几个_比特币 私钥_比特币私钥推算公钥