首页 > 其他分享 >开发谷歌插件(三)

开发谷歌插件(三)

时间:2022-12-05 18:34:50浏览次数:68  
标签:插件 eip55 谷歌 util ._ 开发 let address hdkey

经过了两天的摸索,基本的一些功能和需要的前期准备工作已经ok

那么就开始创建钱包吧:

首先要引入三个npm包:
const bip39 = require('bip39') const {hdkey} = require('ethereumjs-wallet') const util = require('ethereumjs-util') 那么引入以后就开始下面8步操作
// 1.生成助记词
let mnemonic = bip39.generateMnemonic();
//2.将助记词转成seed
let seed = bip39.mnemonicToSeedSync(mnemonic);
//3.通过hdkey将seed生成HD Wallet
let hdWallet = hdkey.fromMasterSeed(seed);
//4.生成钱包中在m/44'/60'/0'/0/0路径的keypair;
let key = hdWallet.derivePath("m/44'/60'/0'/0/0");
//5.从keypair中获取私钥
let privateKey = util.bufferToHex(key._hdkey._privateKey);
console.log('钱包私钥',privateKey);
//6.从keypair中获取公钥
let publicKey = util.bufferToHex(key._hdkey._publicKey);
//7.使用keypair中的公钥生成地址
let address = util.pubToAddress(key._hdkey._publicKey, true);                            

 看到这里我们实现了前面的7步操作,控制台打印后你会发现钱包地址和我们正常的‘0x’开头的地址是不一样的,不能说不一样,只能说完全不一样

这个时候我们需要把地址转换一下:

address = address.toString('hex')

这样你再次打印就会发现多少有点相似了,但是还不是0x开头,这个时候我已经怀疑我是不是操作错误了。

其实并不是我们有问题,而是通用的钱包地址都是用eip55这个东西转码过了的,ethereumjs-util里面给我们提供了一个方法:toChecksumAddress

address = util.toChecksumAddress(address.toString('hex'))

  可是很可惜,我用这个方法的时候一直被阻断,既不报错,也不给返回值,掉了大把头发。

  突然想到,既然原理都是使用eip55转码,我使用eip55的npm包转码岂不是也可以?

 试了下,发现还真可以,我把生成的地址放到小狐狸上面是可以用的,而且使用生成的私钥在小狐狸上面转换的地址和这个插件生成的是一样的。

const eip55 = require('eip55') address = eip55.encode(address.toString('hex'));

  又是忙碌的一天啊!

参考大佬的作品:

https://www.jianshu.com/p/02879235c084

标签:插件,eip55,谷歌,util,._,开发,let,address,hdkey
From: https://www.cnblogs.com/sixrookie/p/16953108.html

相关文章

  • 开发谷歌插件--web3钱包(一)
    之前开发了一款谷歌插件,因为很简单没有什么好记录的。这次记录下一款新的钱包功能的插件,其中遇到的问题,以及解决方案。首先遇到的问题就是唤醒:小狐狸钱包应该都用过,点击......
  • 个人微信开发API,微信机器人
    微信个人号二次开发,基于API开发可以有很多功能模块各种知名SCRM系统、客服平台都是根据此API二次开发的。好友管理:添加好友、删除好友、修改备注、创建标签、获取好友列......
  • 前端开发(05)
    目录JS简介JS基础变量与常量基本数据类型数值(Number)布尔类型(boolean)未定义类型(undefined)null(空类型)null和undefined区别:数字类型字符串类型检测数据类型通过typ......
  • 快速开发协同办公OA系统 让企业管理提质增效
    OA系统是一个企业除了生产控制之外的一切信息处理与管理的集合。对企业高层领导来说,OA系统是决策支持系统。它运用科学的数学模型,结合企业内部/外部的信息,为企业领导的决策......
  • UE4 WebUI插件使用指南
    在开发数字孪生应用程序的时候,除了三维场景展示之外,也需要开发丰富和酷炫的2D页面。使用UE4的UMG开发图表显得比较笨拙。而通过Web插件允许开发者创建丰富的基于WebHTML......
  • 全志V853平台Camera模块开发框架详解
    Camera本章节介绍V853平台Camera模块的开发。V853支持并口CSI、MIPI,使用VINcamera驱动框架。Camera通路框架VIN支持灵活配置单/双路输入双ISP多通路输出的规格......
  • LoongArch架构迅为3A5000开发板规格
           主要参数    处理器:龙芯3A5000主频:2.3GHz-2.5GHz桥片:7A2000内存:8GB、16GBDDR4带ECC纠错(配置可选)系统:Loongnix......
  • 精选、前端开发N个必备的 VSCode 插件
    目录​​一、汉化vscode​​​​二、vue2代码提示​​​​三、格式化高亮vue代码​​​​四、实时预览网页效果​​​​五、html标签​​​​六、格式化代码​​​​七、规......
  • DevOps运维开发一体化 - 公开课笔记
    DevOps运维开发一体化DevOps核心思想:最大化提升工作效率,通过一系列技术栈来体现。开发人员产品经理测试人员运维人员…分部门的传统的开发方式,开发周期一般比较长,部门比......
  • jquery插件系列之 - Slider滑块
    概述    滑动条是一种简单的设置一定范围内参数的插件。    官方示例地址:http://jqueryui.com/demos/slider/          ·参数(参数名:参数类型:......