Published: 05 Aug 2021 › Updated: 05 Aug 2021
ethers.js与帐户管理 / 学习智能合约#44
ethers.js是与web3.js一样是用于与以太坊节点交互的js库。这两者功能相近,相对来说,ethers.js更轻量级、更易用些。这次也上手体验了下,用它来创建帐户、管理帐户这些。
cnpm install ethers --save
//"ethers": "^5.4.3"
const ethers = require('ethers');
// 创建钱包账号
//随机数生成钱包地址
let privateKey = ethers.utils.randomBytes(32)
console.log(111, privateKey)
console.log(112, Buffer.from(privateKey).toString('hex')) //转成16进制
let wallet = new ethers.Wallet(privateKey)
console.log("账号地址: " + wallet.address, wallet)
//生成随机助记词创建钱包
let mnemonic = ethers.utils.entropyToMnemonic(ethers.utils.randomBytes(16))
var path = "m/44'/60'/0'/0/0";
// 通过助记词创建钱包
let wallet = ethers.Wallet.fromMnemonic(mnemonic, path)
console.log("账号地址: " + wallet.address, wallet)
//创建随机地址
let wallet = ethers.Wallet.createRandom()
console.log(111, wallet)
//获取助记词
let mnemonic = wallet.mnemonic.phrase
console.log("钱包助记词:",mnemonic)
//获取path
let path = wallet.mnemonic.path
console.log("钱包path:",path)
//获取钱包的私钥
let privateKey = wallet.privateKey
console.log("钱包私钥:",privateKey)
//获取钱包地址
let address = wallet.address
console.log(116, address)
/*输出
111 Wallet {
_isSigner: true,
_signingKey: [Function],
address: '0x037567fd7A3e0EFdD62Dd36F76Eca325313Cf1c1',
_mnemonic: [Function],
provider: null
}
钱包助记词: inquiry force clean xxxxxxxxxxxxx
钱包path: m/44'/60'/0'/0/0
钱包私钥: 0x0cfa7bd16f73xxXXXXXXXXXXXXXXXX
116 0x037567fd7A3e0EFdD62Dd36F76Eca325313Cf1c1
*/
//根据助记词找回钱包信息
let monic= "peace mouse scrap chase order guess xxxxxxxxxxx"
let mnemonic = ethers.Wallet.fromMnemonic(monic)
let privateKey = mnemonic.privateKey
console.log("钱包私钥:",privateKey)
//根据私钥找回钱包地址
let wallet = new ethers.Wallet(privateKey)
//钱包地址
let address = wallet.address
console.log(156, address)
//json文件找回钱包信息
const fs = require('fs')
let readFile = function(path){
return new Promise(resolve => {
fs.readFile(path, (error, data) => {
resolve(data)
})
})
}
let main = async function (){
let res = await readFile('./UTC--2016-04-1xxxx')
let password = "pwd"
let wallet = await ethers.Wallet.fromEncryptedJson(res, password)
console.log("Address: " + wallet.address, wallet, wallet.privateKey)
}
main()
//生成json钱包文件
const ethers = require('ethers')
const fs = require('fs')
let privateKey = ethers.utils.randomBytes(32) //随机数
let wallet = new ethers.Wallet(privateKey)
let d = new Date()
let time = d.getTime()
let writeFile = function(path, data){
return new Promise(resolve => {
fs.writeFile(path, data, error => {
if (error) {
console.log('写入失败')
} else {
resolve(data)
console.log('写入成功了')
}
})
})
}
let main = async function (){
let password = "pwd"
let res = await wallet.encrypt(password)
let path = './keystore/' + time + '-' + wallet.address
await writeFile(path, res)
}
main()
用ethers.js实现了以太坊帐户管理中几个主流的方法,比如:随机生成私钥以生成帐号,用助记词生成帐号, 以及反向的方法等。总体是简单易用,上手方便,是个不错的工具。
Leave ethers.js与帐户管理 / 学习智能合约#44 to:
Read more #cn posts
Best Posts From lemooljiang
We have not curated any of lemooljiang's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From lemooljiang
- DeepTutor:AI个性化辅导平台 / ai #57
- ComfyUI:可编程和自动化的PS / ai #56
- 将Neo4j封装进Agent / ai #55
- 闲鱼省钱大法:极限0.5折!
- 对Neo4j批量导入结构化数据 / ai #54
- langchain对neo4j进行交互,写入和查询数据 / ai #53
- 知识图谱和图数据库Neo4j的作用和使用场景 / ai #52
- SpaceX、美股和比特币
- 又是币圈血洗日!
- 链股合流,当币安也开始卖股票啰
- 天涯社区重启,爷青回?
- 诺基亚在AI时代重新杀回来啦
- 《2049:未来10000天的可能》书中的镜像世界为什么不叫元宇宙
- 今天适合吃披萨
- 开通即被封,别再给Claude送人头了!
- 两根内存条引发的“官司”
- AI·Joe V12更新, 更新GPT-5.5和DeepSeek V4 等
- 中医进校园活动反响热烈
- 猪价低伤农,猪价贵伤民
- Solidity开发指南