用户登陆
正在加载
比特币钱包开发:通过助记词导入钱包与导出钱包助记
互联网 · 2018-12-03 15:20:00

目标

获取钱包列表

通过助记词导入钱包

导出钱包助记词

前言

在上一章的内容中介绍了创建钱包,这一章会介绍通过助记词创建钱包,也叫做通过助记词恢复钱包或通过助记词导入钱包。首先我们来介绍的内容是,如何将我的钱包显示出来。

一、获取钱包列表

我们将创建的钱包文件储存到了static/wallet_file文件夹中,那么遍历该文件夹并判断子文件的名称是否以钱包文件的“.dat”结尾即可获取到我的钱包,然后再截掉后缀就是钱包名称,实现如下。

点击此处添加图片说明文字

​输出如下

C4EC5431-7AF0-4F0C-8C61-E2090A389A59

C4EC5431-7AF0-4F0C-8C61-E2090A389A59

stringWithSubstrEnd()方法在myUtils包中实现了判断字符串是否以某个字符串结尾的功能。

二、通过助记词导入钱包

创建新钱包的时候我们采用的是调用seedFromRandomWithMnemonic()方法通过随机助记词生成种子去创建的,那么我们在创建钱包的时候指定助记词即可实现通过助记词导入钱包,这就需要使用到另外一个方法seedFromMnemonic(),它的API定义如下:

点击此处添加图片说明文字

根据API的定义可知,必传参数有如下两个,注意它没有回调。

BIP39: String, 助记词。

opts: 可选参数,它是一个对象,包含的字断如下:

opts.network: string, 钱包连接的网络类型,支持正式网络和测试网络,分别表示为:livenet、testnet。

opts.passphrase: 助记词的密码,通过助记词+密码共同生成种子,所以密码不一样种子就不一样,导致无法找回账号。

opts.account: Number, 账号序号,默认为0。

opts.derivationStrategy: String, 使用的BIP协议,默认为BIP44。

因此通过助记词导入钱包的代码实现如下:

点击此处添加图片说明文字

输出如下:

F6CA929D-C18F-440E-B25B-E2EC53AE3992

F6CA929D-C18F-440E-B25B-E2EC53AE3992

使用的助记词是“eternal list thank chaos trick paper sniff ridge make govern invest abandon”密码是”lixu1234qwer”,生成的地址为“mm16s7xsf8Wjwxhprc6YzLW9gVncqZNGBR”,路径是“m/0/0”,公钥是“031cf3493c5fcb4eabdfaa4191a02cc30429539ea6b80f5590bc4a8b6222f0d3ba”,这些数据与第二章中我们验证的数据一致。

三、导出钱包助记词

既然能通过导入助记词恢复钱包,那也能导出钱包助记词,这个数据在上一章中我们创建钱包后已经能够获取到助记词字断了,但是它需要解锁后才能获取,即通过import()方法解锁。

点击此处添加图片说明文字

​输出如下:

947B884D-53FF-4C0D-AFF3-F0B7B2F13087

947B884D-53FF-4C0D-AFF3-F0B7B2F13087

可获取到“wallet1”钱包的助记词是“same subway develop fun fancy library sand rain hamster ship floor define”。

四、完整源码

1. controllers/wallet.js

编辑controllers文件夹下的wallet.js文件,实现获取钱包列表、通过助记词导入钱包、导出钱包助记词功能。

点击此处添加图片说明文字

2. controllers/web.js

在controllers文件夹下新建web.js文件,后端实现返回每个前端页面。

点击此处添加图片说明文字

3. router/router.js

将获取钱包列表、通过助记词导入钱包、导出钱包助记词功能的接口绑定到路由。

点击此处添加图片说明文字

4. static/js/wallet.js

在文档加载完成后处理获取钱包列表、通过助记词导入钱包、导出钱包助记词等的网络请求。

点击此处添加图片说明文字

5. views/wallet.html

前端显示的钱包列表页面。

点击此处添加图片说明文字

​五、项目运行效果

B2539C4C-AD17-4805-8670-61218498F309

B2539C4C-AD17-4805-8670-61218498F309

项目源码Github地址

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

未经授权禁止转载、改编,转载请注明出处!

免责声明:
本网站所提供的所有信息仅供参考,不构成任何投资建议。用户在使用本网站的信息时应自行判断和承担风险。币界网不对用户因使用本网站信息而导致的任何损失负责。用户在进行任何投资活动前应自行进行调查和研究,并谨慎决策。币界网不对用户基于本网站信息做出的任何投资决策负责。用户在本网站发布的任何内容均由其个人负责,与币界网无关。
免责声明:本网站、超链接、相关应用程序、论坛、博客等媒体账户以及其他平台和用户发布的所有内容均来源于第三方平台及平台用户。币界网对于网站及其内容不作任何类型的保证,网站所有区块链相关数据以及其他内容资料仅供用户学习及研究之用,不构成任何投资、法律等其他领域的建议和依据。币界网用户以及其他第三方平台在本网站发布的任何内容均由其个人负责,与币界网无关。币界网不对任何因使用本网站信息而导致的任何损失负责。您需谨慎使用相关数据及内容,并自行承担所带来的一切风险。强烈建议您独自对内容进行研究、审查、分析和验证。
s_logo
App内打开