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

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

需要使用三个包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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值