一、通过助记词获取所有关联的账号:公钥、私钥、地址
需要使用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 的一个工具库。
二、项目源码
通过助记词解锁账号。
注意这里为了简化前端实现过程,故只获取了助记词的第一对公私钥,即"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。
2. account.js
编辑controllers文件夹下的account.js文件,后端实现通过助记词解锁账号。
3. router.js
将通过助记词解锁账户的接口绑定到路由。
4. transaction.html
编辑views文件夹下的transaction.html文件,实现前端通过助记词解锁账户的页面。
5. wallet.js
编辑static文件夹下的wallet.js文件,前端处理通过助记词解锁账户的网络请求。
三、项目运行效果
版权声明:博客中的文章版权归博主所有,未经授权禁止转载,转载请联系作者(微信:lixu1770105)取得同意并注明出处。
本文地址: https://chaindesk.cn/witbook/1/15
愿码(ChainDesk.CN)——连接每个程序员的故事
“愿码”以线上社区线下实战型人才加速器相结合,立志打造全球最大的IT实战型多元化复合型人才生态圈。
免费技术交流群:263270946
技术提升、快速转型请关注微信公众号:愿码
网友评论