比原項目倉庫:git
Github地址:https://github.com/Bytom/bytomgithub
Gitee地址:https://gitee.com/BytomBlockchain/bytomdom
Bytom 使用的 密鑰類型爲基於 ed25519 的 chainkd.XPub
curl
bytom/crypto/ed25519/chainkd
首先適當修改代碼,添加一些打印輸出,使得咱們更好的進行驗證。 若是隻是想看 xpub ,而不關心 xprv(對於驗證導入導出助記詞功能來講已經夠了)的話能夠跳過這一步,沒必要修改源碼 。工具
在 bytom/blockchain/pseudohsm/pseudohsm.go
中的post
func (h *HSM) createKeyFromMnemonic(alias string, auth string, mnemonic string) (*XPub, error)
測試
添加輸出打印 root XPub 對應的 私鑰 和 公鑰ui
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 。url
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 中也能見到咱們恢復的 密鑰。