基于ethereumjs创建区块链钱包 HD Wallet (Hierarchical Deterministic wallet)

BIP32 定义 Hierarchical Deterministic wallet (简称 "HD Wallet"),是一个系统可以从单个seed产生树状结构储存多组 keypairs(私钥和公钥)

BIP39 定义钱包助记词和seed生成规则,一般由 12 -24个单字组成,称为 mnemonic。

BIP44 基于 BIP32 的系统,赋予树状结构中的各层特殊的意义。让同一个 seed 可以支援多币种、多帐户等 (btc一般是 m/44'/0'/0’/0,eth一般是 m/44'/60'/0'/0)

  • 安装包

    npm install bip39 ethereumjs-wallet ethereumjs-util --save

  • 引入

    var bip39 = require('bip39')
    var hdkey = require('ethereumjs-wallet/hdkey')
    var util = require('ethereumjs-util')
    
  • 使用

    // 生成助记词
    var mnemonic = bip39.generateMnemonic()
    console.log(mnemonic)
    
    // 生成 HD Wallet 首先将 mnemonic code 转成 binary二进制的 seed
    var seed = bip39.mnemonicToSeed(mnemonic)
    // 生成 Master Key 地址 "m/44'/60'/0'/0" 使用 seed 生成 HD Wallet。
    var hdwallet = hdkey.fromMasterSeed(seed)
    // 从路径 m/44'/60'/0'/0 导入 Master Key 并生成 Wallet 中第一个帐户的第一组 keypair
    var key1 = hdwallet.derivePath("m/44'/60'/0'/0")
    // 使用 keypair 中的公钥产生 address
    var address1 = util.pubToAddress(key1._hdkey._publicKey, true)
    // 获得以太坊钱包地址
    address1 = util.toChecksumAddress(address1.toString('hex'))
    console.log(address1)
    
  • 参考

    参考文章

你可能感兴趣的:(基于ethereumjs创建区块链钱包 HD Wallet (Hierarchical Deterministic wallet))