ETH钱包备份及导入

前言

上次总结了使用助记词创建钱包的摸索笔记,这次说说一个ETH钱包的一些别的功能实现.其实很多事情ethers.js都已经封装好了,我们只要明白流程逻辑再使用就行了,Let’s Go!

run

备份钱包

  • 我查看比特币钱包copay的实现是先让用户先验证口令(前提如果设置了口令的话):

copay

  • 口令验证成功后,会展示钱包的助记词,这时会提醒用户需要记下此助记词:

copay

  • 确定记下后,会让你重新输入之前的助记词,顺序都不能乱:

copay

  • 成功输入助记词后,将会提示备份成功:

copay

至此就成功备份了钱包,但是,我认为这个备份实际是用户要做的事,没错!就是记下展示的助记词,因为凭借助记词(在没有设置口令的前提)就能直接访问用户的钱包,甚至随便转账操作,当然如果设置了口令的话,2者缺一不可,所以在用户备份前,助记词应该是加密存储下来,等待备份展示,备份成功就销毁了,再也不能在应用里找到此钱包的助记词了.

导出钱包

  • 验证钱包口令,口令正确才能进入导出功能.

  • 导出eth钱包非常简单,其实就是导出一段json格式的代码而已,ethers.js已经封装了一个方法让我们方便快速的调用导出钱包。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 假设钱包已经创建成功,命名wallet

let password = "james";
//设置一个导出传输密码(导入时需要验证)

function callback(percent) {
console.log("Encrypting: " + parseInt(percent * 100) + "% complete");
}
//定义一个callback函数,接收变量percent为导出百分比.

//为了更直观分开写其实可以与下面合并
let encryptPromise = wallet.encrypt(password, callback);
//使用钱包方法encrypt加密钱包输出json,需传入密码和回调函数,返回加密后的json格式代码.

encryptPromise.then(function(json) {
console.log(json);
});
//调用promise,成功返回json格式代码
  • 此时可以选择让用户复制或者保存二维码图片完成导出功能,需要注意的是导出时设置的密码须牢记,因为导入时要用到此密码.

导入钱包

  • 导入钱包可以使用助记词+口令(如果有的话)导入,或者使用json代码导入,以下是copay的导入功能:

copay

  • ETH钱包导入很简单,如果是助记词找回的话,将助记词和口令(如果有)转为种子,再重新生成钱包就是了,代码参考我之前的一篇文章,json代码可以如下
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    * 假设变量data为导出json数据
    let json = JSON.stringify(data);
    //把复制的json代码转化为JSON格式

    let password = "james";
    //导出时的传输密码

    Wallet.fromEncryptedWallet(json,password).then(function(wallet) {
    console.log("Address: " + wallet.address);
    });
    //调用eth钱包方法fromEncryptedWallet传入json代码和密码,成功返回钱包

总结

以上是分享ETH钱包备份及导入的简单实现总结,希望能帮到需要的人呀,当然还有很多不足的地方需要指正,今天到此为止,溜了溜了!~

run

感谢您的阅读,本文由 James 版权所有。如若转载,请注明出处:James(http://jamescathy.top/2018/10/01/ethwallet(2)/
ETH钱包导入功能(详解)
忍法丶Css三角形绘画术