HPB钱包助记词生成和备份
生活随笔
收集整理的這篇文章主要介紹了
HPB钱包助记词生成和备份
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
助記詞生成
1 BIP32, BIP39, BIP44
- BIP32:定義 Hierarchical Deterministic wallet (簡稱 “HD Wallet”),是一個系統(tǒng)可以從單一個 seed 產(chǎn)生一樹狀結(jié)構(gòu)儲存多組 keypairs(私鑰和公鑰)。好處是可以方便的備份、轉(zhuǎn)移到其他相容裝置(因為都只需要 seed),以及分層的權(quán)限控制等
- BIP39:將 seed 用方便記憶和書寫的單字表示。一般由 12 個單詞組成,稱為 mnemonic code(phrase),中文稱為助記詞或助記碼。例如:
rose rocket invest real refuse margin festival danger anger border idle brown
- BIP44:基于 BIP32 的系統(tǒng),賦予樹狀結(jié)構(gòu)中的各層特殊的意義。讓同一個 seed 可以支持多幣種、多帳戶等。各層定義如下:
m / purpose' / coin_type' / account' / change / address_index
其中的 purporse’ 固定是 44’,代表使用 BIP44。而 coin_type’ 用來表示不同幣種,例如 Bitcoin 就是 0’,Ethereum 是 60’。
2 助記詞生成
HPB Wallet目前使用的BIP39,將64位私鑰變化為12個單詞的形式便于記憶。
打開BIP39.swift文件,可以通過調(diào)用下面方法,隨機(jī)生成一個助記詞:
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)}可以根據(jù)助記詞去獲取seed,然后通過sha256得到明文私鑰
let seed = BIP39.seedFromMmemonics(mnemonic, language: BIP39Language.english)let privateKey = seed.sha256()2.1 助記詞備份
擁有助記詞就可以掌控這個賬戶,因此助記詞生成后,要提醒用戶去備份助記詞。對于去中心化的APP,用戶備份后要從本地刪除,用戶備份之前可以加密存放在本地。
總結(jié)
以上是生活随笔為你收集整理的HPB钱包助记词生成和备份的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 和Surface pro电源适配器说拜拜
- 下一篇: java中基本数据类型和引用数据类型各有