创建 Ethereum HD wallet
使用的 JavaScript 套件包含:
bip39:实作 BIP39,随机产生新的 mnemonic code,并可以将其转成 binary 的 seed。
ethereumjs-wallet:产生和管理公私钥,我使用其中的 hdkey 子套件来创建 HD Wallet。
ethereumjs-util:集合许多 Ethereum 需要的运算功能。
安装依赖
$ mkdir accountsWallet
$ cd accountsWallet
$ npm init
$ npm install bip39 ethereumjs-wallet ethereumjs-util --save
$ vi index.js
具体代码:
var bip39 = require('bip39')
var hdkey = require('ethereumjs-wallet/hdkey')
var util = require('ethereumjs-util')
// 生成助记词
var mnemonic = bip39.generateMnemonic()
console.log(mnemonic)
var seed = bip39.mnemonicToSeed(mnemonic)
var hdWallet = hdkey.fromMasterSeed(seed)
var key1 = hdWallet.derivePath("m/44'/60'/0'/0/0")
console.log("私钥:"+util.bufferToHex(key1._hdkey._privateKey))
var address1 = util.pubToAddress(key1._hdkey._publicKey, true)
console.log("地址:"+util.bufferToHex(address1))
address1 = util.toChecksumAddress(address1.toString('hex'))
console.log("Encoding Address 地址:"+ address1)
运行代码
$ node index.js
# 运行结果
awesome prosper attitude above book response resemble man liberty tuna width extra
私钥:0xeef393f053a9e3a05a7a04deb5d49862ba9c043a0cb0d4a931817be6bd933435
地址:0x4ccc6fab6f01ada8c155ae8ec12e5487aee5a972
Encoding Address 地址:0x4CCC6FaB6f01ADa8C155aE8EC12E5487aeE5a972
验证
可以用 Mnemonic Code Converter 验证结果
参考资料
https://www.jianshu.com/p/54a2b14dfdf2
源码下载
https://github.com/didianV5/web3EthWallet/tree/master/accountsWallet