[区域链]以太开发中ethers库的使用
eip-155定义的eth 的chainID
CHAIN_ID | Chain(s) |
---|---|
1 | Ethereum mainnet |
2 | Morden (disused), Expanse mainnet |
3 | Ropsten |
4 | Rinkeby |
5 | Goerli |
42 | Kovan |
1337 | Geth private chains (default) |
ethers.utils.HDNode.isValidMnemonic(): 验证助记词是否有效
ethers.utils.getAddress():转换为checkSum地址
1.查询余额
- eth余额
let pendingBal = await rpcProvider.getBalance(address, "pending")
- 查询其他token余额
const getBalance_USDT = async () => {const contract = new ethers.Contract(USDTaddress, USDTabi, rpcProvider);const balance = await contract.balanceOf(address);return balance.toString();}; // USDTaddress token地址 USDTabi token合约 address 地址
//6为token有效小数位。查到的余额除以有效小数位才是实际余额
let actuBalUSDT = ethers.utils.formatUnits(queryBalUSDT, 6)
2.utils
4.utils
//去除地址前面的0位
let address = ethers.utils.hexStripZeros(addressQuery)
// 相当于从wei到ether
let numberOfDecimals = 18;
let BNBbal = ethers.utils.parseUnits(queryBalBNB, numberOfDecimals);
3.发送交易
- eth交易
let wallet = new ethers.Wallet(privateKey, provider); let amount = ethers.utils.parseEther(amount); //let nonce = await rpcProvider.getTransactionCount(address, "pending") let nonce = await wallet.getTransactionCount(); let gasPrice=await provider.getGasPrice();let tx = {nonce: nonce,gasLimit: 21000,gasPrice: ethers.utils.bigNumberify(gasPrice),to: toAddress,chainId: chainId,value: amount,data: ""};// let signTx = await wallet.sign(tx)// let resp = await rpcProvider.sendTransaction(signTx) 或 let resp = await wallet.sendTransaction(tx);
- 发送token的交易
let numberOfTokens = ethers.utils.parseUnits(amount, decims);// 先计算transfer 需要的gas 消耗量,这一步有默认值,非必须。let gas = await contract.estimate.transfer(toAddress, numberOfTokens)let gasP = await rpcProvider.getGasPrice()// 必须关联一个有过签名钱包对象let contractWithSigner = contract.connect(wallet);// 发起交易,前面2个参数是函数的参数,第3个是交易参数let tx = await contractWithSigner.transfer(toAddress, numberOfTokens, {nonce: nonce,gasLimit: gas,gasPrice: ethers.utils.bigNumberify(gasP) ,chainId: chainId})
3.单位换算
// 转换cost为 wei单位的BigNumber类型const costWei = ethers.utils.bigNumberify(21000).mul('0x3b9aca00')console.log(costWei);// 转换cost为ether单位的一般表示(可读的10进制)const costEther = ethers.utils.formatEther(costWei)console.log(costEther);// 转换cost为ether单位的BigNumber类型const costBigNumber = ethers.utils.parseEther(costEther);console.log(costBigNumber);// 余额减去花费作为 新的转入余额,const amount = pendingBal.sub(costBigNumber)console.log(ethers.utils.formatEther(amount));
[区域链]以太开发中ethers库的使用相关推荐
- 以太坊开发中ethers库的使用
eip-155定义的eth 的chainID CHAIN_ID Chain(s) 1 Ethereum mainnet 2 Morden (disused), Expanse mainnet 3 Ro ...
- iOS开发中静态库制作 之.a静态库制作及使用篇
iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...
- iOS开发中与库相关的术语
动态库 VS 静态库 Static frameworks are linked at compile time. Dynamic frameworks are linked at runtime .f ...
- ios 开发中 动态库 与静态库的区别
使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...
- 论区块链应用开发中的技术选型
区块链技术栈总览 区块链技术栈现阶段总览 链端选型 Fabric [ x,逐渐被市场淘汰 ] 和以太坊不能兼容的链 [ x ,原因:单打独斗,无法借力 ] FISCO BCOS / Venachain ...
- vue 开发中element-ui库的switch开关绑定number类型数据不成功问题 解决方法
最近在使用element-ui库进行vue项目的开发,这个ui库对于一些后台管理项目的开发还是非常实用的,各种组件都比较齐全,而且文档也很详细.但是对于我这种初学者来说,部分组件的文档还需更加详细. ...
- python常用标准库有哪些-Python开发中常用的标准库
大多数基于 Python 开发的应用程序都会用到本地标准库和三方库,这样不仅能让我们把时间去关注真正的业务开发,也能学习到更多价值含量高的程序设计和开发思想.程序开发中有一句著名的话叫做: Don't ...
- python async socket_Python开发中常用的标准库,这些都是你应该掌握的
大多数基于 Python 开发的应用程序都会用到本地标准库和三方库,这样不仅能让我们把时间去关注真正的业务开发,也能学习到更多价值含量高的程序设计和开发思想.程序开发中有一句著名的话叫做: Don't ...
- 区块链-以太坊学习资料汇总
最近一段时间以来,对区块链的底层研究和基于区块链的应用开发已经越来越火热了.机缘巧合,目前我也在进行区块链方面的开发,在之后的博客中,我会和大家一起分享区块链开发中的酸甜苦辣.今天我先来对收藏区块链- ...
最新文章
- Android之ASD组件(一)
- 简述一下extern C的小作用
- MyEclipse使用总结——MyEclipse文件查找技巧 ctrl+shift+R ctrl+H
- 同学, 你的板砖呢?
- 千牛怎么注销卖家店铺_新店铺怎么拥有亚马逊购物车?亚马逊小卖家如何尽快获得黄金购物车?...
- SAP License:AM-资产冻结与停用
- 虚函数virtual
- 让子弹飞,零成本让你的网站更快一点,boxopened http/3 (QUIC) 协议实战
- 阅读《构建之法》第6 第7章
- java.io.Serializab接口
- 火狐浏览器的一些插件
- Python for s60[1_pys60简介]
- 在工程图中如何进行虚拟相交点标注
- 高德地图不显示定位点
- 智能优化算法:遗传算法(GA)
- hiredis的代码示例
- 【电力系统分析】同步发电机
- 如何精准化的做微信公众号运营?
- 聚焦技术,锐意创新,GaussDB给世界一个更优选择
- Guava-retrying 重试机制