UniApp 以太坊bite钱包生成助记词并创建账户(一)

UniApp 以太坊bite钱包生成助记词并创建账户(一),第1张

有幸参与钱包项目,此文仅写思路和一些简略的方法,作为个人开发或迭代钱包项目的参考

需要使用三个包bip39ethereumjs-wallet/hdkeyethereumjs-util,

安装和引入还有介绍参考另一篇博文记录:

bip39 ethereumjs-wallet ethereumjs-util 的API 和引入 介绍_百撕可乐的博客-CSDN博客

第一次进入 生成助记词

在有设置好密码的条件下,生成助记词,并放在缓存内

const mnemonic = bip39.generateMnemonic();
uni.setStorageSync('mnemonic', mnemonic);

一般情况下助记词常用的是12个单词,每两个单词之间有空格分隔开,so...

在需要验证正确的时候,可以根据长度来判断验证

this.mnemonic_list = mnemonic.split(" ");
if(this.mnemonic_list.length!=12){
    uni.showModal({
        title: 'Error',
        content: "找不到啦",
        showCancel:false
    });
    return;
}
//一些其余 *** 作
uni.navigateTo({
    url: '跳转到你想去的页面'
});
//将助记词转成seedBuffer 
let seedBuffer = bip39.mnemonicToSeedSync(this.mnemonic,"");

//通过hdkey将seedBuffer生成HDWallet
let hdWallet = hdkey.fromMasterSeed(seedBuffer);

//生成钱包中在m/44'/60'/0'/0/0路径的keypair
let key = hdWallet.derivePath("m/44'/60'/0'/0/0");

//从keypair中获取私钥
let privateKey = util.bufferToHex(key._hdkey._privateKey);

//从keypair中获取公钥
let publicKey = util.bufferToHex(key._hdkey._publicKey);

//使用keypair中的公钥生成地址
let address = util.pubToAddress(key._hdkey._publicKey, true);
address = util.toChecksumAddress("0x"+address.toString('hex'));


* 返回:1.address: address 
 *     2.privateKey: privateKey
 *     3.publicKey: publicKey
 *     4.keystore: keystore

let user=[{"privateKey":privateKey,"publicKey":publicKey,"address":address,"message": 'Success'}];

创建一个 web3 的实例,设置一个 provider,关于web3可看:

web3.js基础知识简单汇总_百撕可乐的博客-CSDN博客

web3.js中英文文档地址_百撕可乐的博客-CSDN博客

//此处地址可设为全局后再调用,演示暂时写死
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

使用指定的私钥创建一个账户对象

web3.eth.accounts.privateKeyToAccount(privateKey);

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/2990860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存