HPB-Wallet:HPB錢包助記詞生成和備份

HPB-Wallet:HPB錢包助記詞生成和備份

助記詞生成

1 BIP32, BIP39, BIP44git

  • BIP32:定義 Hierarchical Deterministic wallet (簡稱 「HD Wallet」),是一個系統能夠從單一個 seed 產生一樹狀結構儲存多組 keypairs(私鑰和公鑰)。好處是能夠方便的備份、轉移到其餘相容裝置(由於都只須要 seed),以及分層的權限控制等。
  • BIP39:將 seed 用方便記憶和書寫的單字表示。通常由 12 個單詞組成,稱爲 mnemonic code(phrase),中文稱爲助記詞或助記碼。例如:

    rose rocket invest real refuse margin festival danger anger border idle browngithub

  • BIP44:基於 BIP32 的系統,賦予樹狀結構中的各層特殊的意義。讓同一個 seed 能夠支持多幣種、多賬戶等。各層定義以下:

    m / purpose' / coin_type' / account' / change / address_index.swift

其中的 purporse’ 固定是 44’,表明使用 BIP44。而 coin_type’ 用來表示不一樣幣種,例如 Bitcoin 就是 0’,Ethereum 是 60’。segmentfault

2 助記詞生成dom

HPB Wallet目前使用的BIP39,將64位私鑰變化爲12個單詞的形式便於記憶。網站

打開BIP39.swift文件,能夠經過調用下面方法,隨機生成一個助記詞:加密

static public func generateMnemonics(bitsOfEntropy: Int, language: BIP39Language = BIP39Language.english) throws -> String? {
        guard bitsOfEntropy >= 128 && bitsOfEntropy <= 256 && bitsOfEntropy % 32 == 0 else {return nil}
        guard let entropy = Data.randomBytes(length: bitsOfEntropy/8) else {throw AbstractKeystoreError.noEntropyError}
        return BIP39.generateMnemonicsFromEntropy(entropy: entropy, language: language)
        
    }

能夠根據助記詞去獲取seed,而後經過sha256獲得明文私鑰。code

let seed = BIP39.seedFromMmemonics(mnemonic, language: BIP39Language.english)
 let privateKey = seed.sha256()

2.1 助記詞備份開發

擁有助記詞就能夠掌控這個帳戶,所以助記詞生成後,要提醒用戶去備份助記詞。對於去中心化的APP,用戶備份後要從本地刪除,用戶備份以前能夠加密存放在本地。get

做者:感謝 HPB Wallet 開發團隊整理供稿。

1.若是你想了解更多關於錢包的技術文章,請訪問:
HPB-Wallet

2.若是你想了解更多關於HPB的技術信息,請訪問咱們的GitHub WiKi:
HPB WiKi of GitHub

3.若是你想得到更多HPB信息,請關注咱們的官方網站:
HPB Website

相關文章
相關標籤/搜索