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

相关文章
相关标签/搜索