metamask-extension/app/scripts/account-import-strategies/index.js

这部分就是用户如果往metamask中import一个已有的账户调用的接口,就是是直接输入私钥privateKey还是使用json file

即如下图:

const Wallet = require('ethereumjs-wallet')
const importers = require('ethereumjs-wallet/thirdparty')
const ethUtil = require('ethereumjs-util')const accountImporter = {importAccount (strategy, args) {try {const importer = this.strategies[strategy]//确认使用的是那种import的方法const privateKeyHex = importer.apply(null, args) //args就是输入的值,如privateKey或者input, passwordreturn Promise.resolve(privateKeyHex)} catch (e) {return Promise.reject(e)}},strategies: {'Private Key': (privateKey) => {//输入私钥if (!privateKey) {throw new Error('Cannot import an empty key.')}const prefixed = ethUtil.addHexPrefix(privateKey)//加入0x前缀const buffer = ethUtil.toBuffer(prefixed)if (!ethUtil.isValidPrivate(buffer)) {throw new Error('Cannot import invalid private key.')}const stripped = ethUtil.stripHexPrefix(prefixed)//去掉前缀return stripped//输出私钥},'JSON File': (input, password) => {let wallettry {wallet = importers.fromEtherWallet(input, password)} catch (e) {console.log('Attempt to import as EtherWallet format failed, trying V3...')}if (!wallet) {wallet = Wallet.fromV3(input, password, true)}return walletToPrivateKey(wallet)},},}function walletToPrivateKey (wallet) {const privateKeyBuffer = wallet.getPrivateKey()return ethUtil.bufferToHex(privateKeyBuffer)
}module.exports = accountImporter

ethereumjs-wallet

  • fromV1(input, password) - import a wallet (Version 1 of the Ethereum wallet format)
  • fromV3(input, password, [nonStrict]) - import a wallet (Version 3 of the Ethereum wallet format). Set nonStrict true to accept files with mixed-caps.

var thirdparty = require('ethereumjs-wallet/thirdparty')

  • fromEtherWallet(input, password) - import a wallet generated by EtherWallet

转载于:https://www.cnblogs.com/wanghui-garcia/p/9791559.html

metamask中的import account的代码实现相关推荐

  1. Java黑皮书课后题第10章:**10.7(游戏:ATM机)使用编程练习题9.7中创建的Account类来模拟一台ATM级

    **10.7(游戏:ATM机)使用编程练习题9.7中创建的Account类来模拟一台ATM级 题目 程序 代码 Test7.java Test7_Account.java 运行示例 题目 程序 Tes ...

  2. OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式...

    OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式 以最简单的4 x 5三通道图像为例,其在内存中Mat类型的数据组织形式如下: 每一行的每一列 ...

  3. python3文件下载-python3获取文件中url内容并下载代码实例

    这篇文章主要介绍了python3获取文件中url内容并下载代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 #!/usr/bin/env py ...

  4. Ubuntu16.04 搭建SVN服务器(建立版本仓及import和checkout代码)

    Ubuntu16.04 搭建SVN服务器(建立版本仓及import和checkout代码) 1.    安装subversion sudo apt-get install subversion 2.  ...

  5. ML之FE:在模型训练中,仅需两行代码实现切分训练集和测试集并分离特征与标签

    ML之FE:在模型训练中,仅需两行代码实现切分训练集和测试集并分离特征与标签 目录 仅需两行代码实现切分训练集和测试集并分离特征与标签 输出结果 实习代码 仅需两行代码实现切分训练集和测试集并分离特征 ...

  6. vue抽屉_VUE组件中的 Drawer 抽屉实现代码

    因为项目中用的是 element-ui 框架,而这个框架并没有抽屉组件,所以自己实现一个,具体代码如下: drawer.vue {{ title }} x export default { props ...

  7. CSS中通过import方式导入的方法

    在高性能网站设计的第五章,我简要的提到@import 对于网站的性能有某些负面的影响,然后我在 Web 2.0 Expo 的演讲上深入探讨了这个问题,并创建了一些测试页面和HTTP瀑布状图表,这些在下 ...

  8. [转]敏捷开发中编写高质量Java代码

    本文转自:http://dev.yesky.com/103/11164603.shtml 敏捷开发的理念已经流行了很长的时间,在敏捷开发中的开发迭代阶段中,我们可以通过五个步骤,来有效的提高整个项目的 ...

  9. JavaScript 和 typeScript 中的 import、from

    From:https://segmentfault.com/a/1190000018249137?utm_source=tag-newest Github - allowSyntheticDefaul ...

最新文章

  1. SELECT ANY DICTIONARY
  2. Python 模块学习 logging(2)
  3. 页游开发_小花仙即将出手游,敬童年一起玩过的7K7K和4399
  4. php 跳转网页 变量,php变量与JS变量实现不通过跳转直接交互的方法
  5. NYOJ 287 Radar 贪心之 区间选点
  6. velocity 继续之 语法学习篇
  7. [BUUCTF-pwn]——wustctf2020_getshell
  8. bzoj1013,luogu4035-[JSOI2008]球形空间产生器【高斯消元】
  9. python学习笔记:遍历目录
  10. C++中指针和引用区别
  11. 二十二、Oracle学习笔记:Oracle异常
  12. Alex 的 Hadoop 菜鸟教程: 第4课 Hadoop 安装教程 - HA方式 (2台服务器)
  13. win7 开wifi 关wifi
  14. matlab怎么求周期积分,Matlab中怎么求解积分
  15. 信息化、数字化、数智化
  16. Android端WebRTC本地音视频采集流程源码分析
  17. OSSIM开源安全信息管理系统(一)
  18. 冰河凭什么能够顺利拿下三个软考高级证书?有什么技巧(诀窍)吗?
  19. 低密洋房+超高得房率+三面宽“眼镜”户型=终极居住体 滙德里
  20. 模糊神经网络应用实例,模糊神经网络优缺点

热门文章

  1. S3C2410中断系统
  2. 第四天学习Java的笔记(方法入门,编译器优化)
  3. 转载:linux安装rlwrap软件包
  4. oracle怎么查询换行符,关于oracle:如何检查表中所有列的换行符
  5. python写小说阅读器_用python实现自己的小说阅读器!
  6. Python如何导入自己编写的py文件
  7. 安装 | MatlabR2019b: License Manager Error -8. License checkout failed.
  8. 安装 | CCS5.5安装包与licence以及安装教程
  9. 微服务架构(二):融入微服务的企业集成架构
  10. odoo12 日历模块_odoo12模块__ manifest __.py文件详解