step 1 裝依賴的包(npm/yarn 本身選一個):npm
yarn add bip39 ethereumjs-wallet ethereumjs-util npm install bip39 ethereumjs-wallet ethereumjs-util
step 2 演示代碼:async
const bip39 = require('bip39') const {hdkey} = require('ethereumjs-wallet') const util = require('ethereumjs-util') //1 生成助記詞 ;1.1 和 1.2 本身按需。 // 1.1 生成助記詞 ;這裏用生成的. // let mnemonic = bip39.generateMnemonic() // 1.2 生成助記詞 ;這裏用寫死的. let mnemonic = "hold scale hybrid tank dilemma bullet ship language attitude rug tennis host" console.log(mnemonic) //2.將助記詞轉成seed getSeed = async ()=>{ let seed = await bip39.mnemonicToSeed(mnemonic) console.log("seed:" + util.bufferToHex(seed)) return seed } //3.提取私鑰,公鑰,帳戶 obtainAccount = async ()=>{ let seed = await getSeed() //3.經過hdkey將seed生成HD Wallet let hdWallet = await hdkey.fromMasterSeed(seed) for (let i = 0; i < 10; i++) { //4.生成錢包中在m/44'/60'/0'/0/i路徑的keypair let key = await hdWallet.derivePath("m/44'/60'/0'/0/" + i) //5.從keypair中獲取私鑰 console.log("私鑰:" + util.bufferToHex(key._hdkey._privateKey)) //6.從keypair中獲取公鑰 console.log("公鑰:" + util.bufferToHex(key._hdkey._publicKey)) //7.使用keypair中的公鑰生成地址 let address = await util.pubToAddress(key._hdkey._publicKey, true) //編碼地址 console.log('account',i+1,'0x'+address.toString('hex')) //分割線 console.log("__________________________________________________________") } } obtainAccount()
step 3 運行結果截圖:ui