溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Bytomd 助記詞恢復密鑰體驗指南

發(fā)布時間:2020-05-28 06:21:33 來源:網絡 閱讀:243 作者:比原鏈Bytom 欄目:編程語言

比原項目倉庫:

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

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

背景知識

Bytom 使用的 密鑰類型為基于 ed25519chainkd.XPub

  • 代碼見 bytom/crypto/ed25519/chainkd
  • 文檔見 https://chain.com/docs/1.2/protocol/specifications/chainkd`

預備

代碼修改

首先適當修改代碼,添加一些打印輸出,使得我們更好的進行驗證。 如果只是想看 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 目前還沒有 從 密鑰導出助記詞的功能,現有只是在創(chuàng)建密鑰時有助記詞相應輸出信息??梢孕薷脑创a在查看密鑰時 打印對應助記詞。

因為只是測試,這里為了方便,直接查看在創(chuàng)建密鑰時返回的助記詞。

對 bytomd 發(fā)起 post 請求 /create-key

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

Bytomd 助記詞恢復密鑰體驗指南

可以看到 響應中 顯示了 xpub 和 助記詞

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

Bytomd 助記詞恢復密鑰體驗指南

步驟

如何通過導入助記詞恢復密鑰呢?

假設目前 已經有一個 xprv

50db5bfe21b08462972eadbce08ec92d078a45fa7a280d175a823f9e457faf447d1f501b69f895b830138fabc6f91e2b3b3c8df26642a34be4af27886b9134dc

對應的 助記詞為

pudding
room
business
river
pattern
box
snap
merit
unfold
speak
hat
task

發(fā)起 post 請求 /create-key

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

返回相應:

Bytomd 助記詞恢復密鑰體驗指南

bytomd 輸出

Bytomd 助記詞恢復密鑰體驗指南

可以看到,恢復出來的 xprv 和 我們本來的 xprv 一致,驗證成功。

dashaboard 中也能見到我們恢復的 密鑰。

Bytomd 助記詞恢復密鑰體驗指南

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI