资讯专栏INFORMATION COLUMN

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

levius / 1036人阅读

摘要:获取密钥对应助记词目前还没有从密钥导出助记词的功能,现有只是在创建密钥时有助记词相应输出信息。中也能见到我们恢复的密钥。

比原项目仓库:

Github地址:https://github.com/Bytom/bytom

Gitee地址:https://gitee.com/BytomBlockc...

背景知识

Bytom 使用的 密钥类型为基于 ed25519chainkd.XPub

代码见 bytom/crypto/ed25519/chainkd

文档见 https://chain.com/docs/1.2/pr...`

预备 代码修改

首先适当修改代码,添加一些打印输出,使得我们更好的进行验证。 如果只是想看 xpub ,而不关心 xprv(对于验证导入导出助记词功能来说已经够了)的话可以跳过这一步,不必修改源码

bytom/blockchain/pseudohsm/pseudohsm.go 中的

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

添加输出打印 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 请求来使用。比如 curl 或者 postman

获取密钥对应助记词

dashboard 目前还没有 从 密钥导出助记词的功能,现有只是在创建密钥时有助记词相应输出信息。可以修改源码在查看密钥时 打印对应助记词。

因为只是测试,这里为了方便,直接查看在创建密钥时返回的助记词。

对 bytomd 发起 post 请求 /create-key

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

可以看到 响应中 显示了 xpub 和 助记词

由于修改了源码,添加了打印信息,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"
}

返回相应:

bytomd 输出

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

dashaboard 中也能见到我们恢复的 密钥。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24328.html

相关文章

  • 理解开发HD钱包涉及的BIP32、BIP44、BIP39

    摘要:本文首发于深入浅出区块链社区原文链接理解开发钱包涉及的原文已更新,请读者前往原文阅读如果你还在被钱包搞的一头雾水,来看看这边文章吧。所以我们要开发以太坊钱包同样需要对比特币的钱包提案有所了解。 本文首发于深入浅出区块链社区原文链接:理解开发HD钱包涉及的BIP32、BIP44、BIP39原文已更新,请读者前往原文阅读 如果你还在被HD钱包、BIP32、BIP44、BIP39搞的一头雾水...

    firim 评论0 收藏0
  • 理解开发HD钱包涉及的BIP32、BIP44、BIP39

    摘要:本文首发于深入浅出区块链社区原文链接理解开发钱包涉及的原文已更新,请读者前往原文阅读如果你还在被钱包搞的一头雾水,来看看这边文章吧。所以我们要开发以太坊钱包同样需要对比特币的钱包提案有所了解。 本文首发于深入浅出区块链社区原文链接:理解开发HD钱包涉及的BIP32、BIP44、BIP39原文已更新,请读者前往原文阅读 如果你还在被HD钱包、BIP32、BIP44、BIP39搞的一头雾水...

    tianren124 评论0 收藏0
  • HP钱包概念及底层原理(BIP32,BIP39,BIP44)

    摘要:钱包概述中文可以翻译为分层钱包,钱包可以在不需要私钥情况下运用椭圆曲线算法生成大量公钥。概念是由提出,解决难以抄写记忆问题,规范各个币种路径规范达成业界共识。这个规范的目的是设定一个分层钱包标准,能在不通客户之间交换。 前序:相信各位区块链大佬,对公钥和私钥概念已经烂熟于心,对私钥重要性也讳莫如深。私钥可以给交易签名,有了私钥就有了全部权限,但原始私钥没什么规律可循,特别不放记忆转移,...

    lx1036 评论0 收藏0
  • 以太坊钱包开发系列1 - 创建钱包账号

    摘要:钱包功能一个钱包通常主要包含的功能有账号管理主要是私钥的管理创建账号账号导入导出账号信息展示如以太币余额代币余额。 本文首发于深入浅出区块链社区原文链接:[使用 ethers.js 开发以太坊 Web 钱包 1 - 创建钱包账号)](https://learnblockchain.cn/20...,请读者前往原文阅读 以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱...

    1fe1se 评论0 收藏0
  • SEER新网页钱包UI设计第一版开发完毕

    摘要:目前,新网页钱包的设计工作已基本完成,目前已设计个页面,随后的几天将向社区征集建议。目前的设计,不包括正在同步开发的赛事众筹功能,等主网赛事众筹功能上线以后,将进行相应前端的开发。 目前,SEER新网页钱包的UI设计工作已基本完成,目前已设计96个页面,随后的几天将向社区征集建议。 https://org.modao.cc/app/2da4... 目前的UI设计,不包括正在同步开发的赛...

    hyuan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<