007 以太坊钱包开发-助记词、私钥、地址

创建 Ethereum HD wallet

使用的 JavaScript 套件包含:

bip39:实作 BIP39,随机产生新的 mnemonic code,并可以将其转成 binary 的 seed。

ethereumjs-wallet:产生和管理公私钥,我使用其中的 hdkey 子套件来创建 HD Wallet。

ethereumjs-util:集合许多 Ethereum 需要的运算功能。

安装依赖

1
2
3
4
5
$ mkdir accountsWallet
$ cd accountsWallet
$ npm init
$ npm install bip39 ethereumjs-wallet ethereumjs-util --save
$ vi index.js

具体代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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)

运行代码

1
2
3
4
5
6
7
$ 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

谢谢你请我吃糖果