主页 > imtoken2.0下载 > 研究一:以太坊钱包

研究一:以太坊钱包

imtoken2.0下载 2023-08-04 05:12:25

三个概念:BIP32、BIP44、BIP39

BIP32定义了Hierarchical Deterministic wallet(简称“HD Wallet”),它是一种可以从单个种子生成树状结构来存储多组密钥对(私钥和公钥)的系统。

BIP39定义了钱包助记词和种子生成规则,一般由12-24个词组成,称为助记词。 助记词列表怎么注册以太坊钱包地址

BIP44 基于 BIP32 的系统,为树形结构中的每一层赋予特殊含义。 让同一个种子支持多币种,多账户等(btc一般为m/44'/0'/0'/0怎么注册以太坊钱包地址,eth一般为m/44'/60'/0'/0

1.安装依赖

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

bip39:随机生成新的助记词,并转化为二进制种子。

ethereumjs-wallet:生成和管理公钥和私钥,下面使用hdkey子套件创建HD钱包。

ethereumjs-util:以太坊的实用程序库。

2. 测试.js

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

怎么注册以太坊钱包地址_以太坊的钱包地址不在了_以太坊钱包生成多个地址

const myWallet = { /** * 生成钱包 */ createWallet: async () => { // 生成助记词 var mnemonic = bip39.generateMnemonic() console.log('mnemonic------', mnemonic) // hundred shrimp bacon poem enable trim yard slight smile suffer normal cinnamon // 随机数种子(生成 HD Wallet 首先将 mnemonic code 转成 binary二进制的 seed) var seed = await bip39.mnemonicToSeed(mnemonic) console.log('seed------', seed)

以太坊的钱包地址不在了_怎么注册以太坊钱包地址_以太坊钱包生成多个地址

// 生成 Master Key 地址 "m/44'/60'/0'/0/0" 使用 seed 生成 HD Wallet。 var hdwallet = hdkey.fromMasterSeed(seed) console.log('hdwallet------', hdwallet) // 从路径 m/44'/60'/0'/0/0 导入 Master Key 并生成 Wallet 中第一个帐户的第一组 keypair。 var key = hdwallet.derivePath("m/44'/60'/0'/0/0") console.log('key------', key) // 使用 keypair 中的私钥产生 address。 var privateAddress = util.bufferToHex(key._hdkey._privateKey) console.log('私钥address------', privateAddress) // 0x724aecb752fbd954d68c8fe172b0f5d312f12fcd0c3f82bf9c9a76e0df55eaa7

以太坊钱包生成多个地址_怎么注册以太坊钱包地址_以太坊的钱包地址不在了

// // 使用 keypair 中的公钥产生 address。 var address = util.pubToAddress(key._hdkey._publicKey, true) console.log('公钥addressBuffer------', address) // // 获得以太坊钱包地址 // address = util.toChecksumAddress(address.toString('hex')) // console.log('十六进制的以太坊钱包address------', address) // 获得以太坊钱包地址。 var address = util.bufferToHex(key._hdkey._publicKey) console.log('十六进制的以太坊钱包address------', address) // 0x036994d6dda1902c1612154c092828dc326591b22d867f20f69c8a2f43f08ed52d return address },

以太坊钱包生成多个地址_以太坊的钱包地址不在了_怎么注册以太坊钱包地址

/** * 通过助记词恢复钱包 */ getWalletByMnemonic: async (mnemonic, pwd) => { // 通过助记词和设定密码获取随机数种子 var seed = await bip39.mnemonicToSeed(mnemonic) // 生成 Master Key 地址 "m/44'/60'/0'/0/0" 使用 seed 生成 HD Wallet。 var hdWallet = hdkey.fromMasterSeed(seed) // 从路径 m/44'/60'/0'/0/0 导入 Master Key 并生成 Wallet 中第一个帐户的第一组 keypair。 var key = hdWallet.derivePath("m/44'/60'/0'/0/0")

以太坊的钱包地址不在了_以太坊钱包生成多个地址_怎么注册以太坊钱包地址

// 导出私钥 address。 var privateAddress = util.bufferToHex(key._hdkey._privateKey) console.log('私钥address------', privateAddress) // 获得以太坊钱包地址。 var address = util.bufferToHex(key._hdkey._publicKey) console.log('十六进制的以太坊钱包address------', address) } } myWallet.createWallet() myWallet.getMyPrivateByMnemonic('hundred shrimp bacon poem enable trim yard slight smile suffer normal cinnamon')

3.执行node test.js

以太坊钱包生成多个地址_怎么注册以太坊钱包地址_以太坊的钱包地址不在了

图片.png

来源地址: