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

比原项目仓库:

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 对应的 私钥 和 公钥

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 中也能见到我们恢复的 密钥。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏游戏杂谈

ActionScript3检测当前下载资源的速度

speed = (byteTotal/1024)/(endTime-startTime),这个应该算是平均速度

1272
来自专栏君赏技术博客

【已解决】Xcode 9对于 Fastlane 打包成功无法Export iPA

2052
来自专栏云计算教程系列

加固你的Roundcube服务器

Roundcube是一个Webmail客户端,具有强大的安全功能和来自其插件存储库的广泛自定义选项。本文介绍如何进一步保护基本的现有Roundcube安装。

2990
来自专栏令仔很忙

C#——Web.config中的Integrated Security=SSPI

    之前在进行机房收费系统个人重构的时候,配置文件访问数据库,用的是这种方式,如:  

1282
来自专栏HadesMo

调用STS接口生成临时密钥

APPID获取链接:https://console.cloud.tencent.com/developer

5607
来自专栏阮一峰的网络日志

HTTPS 升级指南

上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效。 为了升级到 HTTP/2 协议,必须先启用 HTTPS。如果你不了解 HTTPS...

3505
来自专栏技术博文

ssh(安全外壳协议)

SSH 为Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础...

33011

在Debian 8上使用Postfix配置SPF和DKIM

SPF(发件人策略框架)是一种向邮件服务器标识允许哪些主机为给定域发送电子邮件的系统。设置SPF有助于防止您的电子邮件被归类为垃圾邮件。

2780
来自专栏云计算

安装和配置Drupal 8

Drupal 8是流行的Drupal内容管理系统的最新版本。本指南演示了如何在运行Debian或Ubuntu的Linode上安装Drupal 8。

3632
来自专栏程序猿

SSL 证书部署过程

本文演示环境 操作系统(64位):Ubuntu 16.04 CentOS 7.3 服务器软件:Nginx和Apache SSL证书:DV SSL 域名:19...

1.4K6

扫码关注云+社区

领取腾讯云代金券