主页 > imtoken官网唯一地址 > Bytomd助记词恢复秘钥体验指南
Bytomd助记词恢复秘钥体验指南
比原链项目仓库:
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是一致的,验证成功。
我们恢复的密钥也可以在仪表板中看到。