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