愿码(ChainDesk.CN):以太坊钱包开发 解锁钱包账号姿势三:助记

时间:2024-03-13 13:43:09

一、通过助记词获取所有关联的账号:公钥、私钥、地址

需要使用bip39协议将助记词转换成种子,再通过ethereumjs-wallet库生成hd钱包,根据路径的不同从hd钱包中获取不同的keypair,keypair中就包含有公钥、私钥,再通过ethereumjs-util库将公钥生成地址,从而根据助记词获取所有关联的账号,能获取到公钥、私钥、地址等数据信息。

可见助记词可以获取多个账号私钥,它比私钥重要性更高,必须妥善保管。

HD 钱包和BIP协议的相关概念请查看"04-密码、私钥、keystore与助记词之间的爱恨情仇"章节中助记词的内容。

1. 依赖库

需要用到三个库:bip39、ethereumjs-wallet/hdkey、ethereumjs-util。先安装依赖库,

cd到项目跟路径运行命令npm i bip39 ethereumjs-wallet ethereumjs-util

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

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

ethereumjs-util:Ethereum 的一个工具库。

愿码(ChainDesk.CN):以太坊钱包开发 解锁钱包账号姿势三:助记

 

 

愿码(ChainDesk.CN):以太坊钱包开发 解锁钱包账号姿势三:助记

 

 

愿码(ChainDesk.CN):以太坊钱包开发 解锁钱包账号姿势三:助记

 

 

二、项目源码

通过助记词解锁账号。

注意这里为了简化前端实现过程,故只获取了助记词的第一对公私钥,即"m/44'/60'/0'/0/0",在实际开发工作中需枚举路径"m/44'/60'/0'/0/0"的最后一位0,可继续取值为0,1,2,3,4……

1. mnemonic.js

在models文件夹下新建mnemonic.js文件,实现通过助记词与路径获取相应的私钥。

需要用到三个库:bip39、ethereumjs-wallet/hdkey、ethereumjs-util。

愿码(ChainDesk.CN):以太坊钱包开发 解锁钱包账号姿势三:助记

 

 

2. account.js

编辑controllers文件夹下的account.js文件,后端实现通过助记词解锁账号。

愿码(ChainDesk.CN):以太坊钱包开发 解锁钱包账号姿势三:助记

 

 

3. router.js

将通过助记词解锁账户的接口绑定到路由。

愿码(ChainDesk.CN):以太坊钱包开发 解锁钱包账号姿势三:助记

 

 

4. transaction.html

编辑views文件夹下的transaction.html文件,实现前端通过助记词解锁账户的页面。

愿码(ChainDesk.CN):以太坊钱包开发 解锁钱包账号姿势三:助记

 

 

5. wallet.js

编辑static文件夹下的wallet.js文件,前端处理通过助记词解锁账户的网络请求。

愿码(ChainDesk.CN):以太坊钱包开发 解锁钱包账号姿势三:助记

 

 

三、项目运行效果

愿码(ChainDesk.CN):以太坊钱包开发 解锁钱包账号姿势三:助记

 

 

项目源码Github地址

版权声明:博客中的文章版权归博主所有,未经授权禁止转载,转载请联系作者(微信:lixu1770105)取得同意并注明出处。

本文地址: https://chaindesk.cn/witbook/1/15

 


 

愿码(ChainDesk.CN)——连接每个程序员的故事

“愿码”以线上社区线下实战型人才加速器相结合,立志打造全球最大的IT实战型多元化复合型人才生态圈。

免费技术交流群:263270946

技术提升、快速转型请关注微信公众号:愿码