经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 区块链 » 查看文章
Bytomd 助记词恢复密钥体验指南
来源:cnblogs  作者:比原链Bytom  时间:2018/10/9 9:51:54  对本文有异议

比原项目仓库:

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

Gitee地址:https://gitee.com/BytomBlockchain/bytom

背景知识

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

预备

代码修改

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

bytom/blockchain/pseudohsm/pseudohsm.go 中的

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

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

  1. func (h *HSM) createKeyFromMnemonic(alias string, auth string, mnemonic string) (*XPub, error) {
  2. // Generate a Bip32 HD wallet for the mnemonic and a user supplied password
  3. seed := mnem.NewSeed(mnemonic, "")
  4. xprv, xpub, err := chainkd.NewXKeys(bytes.NewBuffer(seed))
  5. if err != nil {
  6. return nil, err
  7. }
  8. fmt.Println(hex.EncodeToString(xprv[:])) // Add info printing
  9. fmt.Println(hex.EncodeToString(xpub[:])) // Add info printing
  10. id := uuid.NewRandom()
  11. key := &XKey{
  12. ID: id,
  13. KeyType: "bytom_kd",
  14. XPub: xpub,
  15. XPrv: xprv,
  16. Alias: alias,
  17. }
  18. file := h.keyStore.JoinPath(keyFileName(key.ID.String()))
  19. if err := h.keyStore.StoreKey(file, key, auth); err != nil {
  20. return nil, errors.Wrap(err, "storing keys")
  21. }
  22. return &XPub{XPub: xpub, Alias: alias, File: file}, nil
  23. }

工具准备

因为 bytomd 目前 dashboard 钱包图形界面还没有助记词相关功能,我们需要准备工具使用 POST 请求来使用。比如 curl 或者 postman

获取密钥对应助记词

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

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

对 bytomd 发起 post 请求 /create-key

  1. {
  2. "alias": "create_key_test",
  3. "password": "createkeytest",
  4. "language": "en"
  5. }

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

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

步骤

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

假设目前 已经有一个 xprv

  1. 50db5bfe21b08462972eadbce08ec92d078a45fa7a280d175a823f9e457faf447d1f501b69f895b830138fabc6f91e2b3b3c8df26642a34be4af27886b9134dc

对应的 助记词为

  1. pudding
  2. room
  3. business
  4. river
  5. pattern
  6. box
  7. snap
  8. merit
  9. unfold
  10. speak
  11. hat
  12. task

发起 post 请求 /create-key

  1. {
  2. "alias": "nnemonic_test",
  3. "password": "nnemonicnnemonic",
  4. "nnemonic": "pudding room business river pattern box snap merit unfold speak hat task",
  5. "language": "en"
  6. }

返回相应:

bytomd 输出

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

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号