ehters.js:provider

ethers.jsV5.4文档

安装ethers

npm install ethers@5.4.0
// 引入
import { ethers } from 'ethers'

Providers

/*
 * Provider类
 * Provider类是对以太坊网络连接的抽象,为标准以太坊节点功能提供简洁、一致的接口。
*/
const provider = new ethers.providers.Web3Provider(window.ethereum);
console.log(provider);

在这里插入图片描述

getNetwork(),查询provider连接到了哪条链,homestead代表ETH主网

let network = await provider.getNetwork();
console.log('network:',network);

在这里插入图片描述

getBalance(),查询主链ETH余额

let getBalance = await provider.getBalance("myAddress");
console.log('余额:',ethers.utils.formatEther(getBalance));

getGasPrice(),查询gasPrice最准预测
getFeeData(),返回一个更详细的maxFeePerGas/maxPriorityFeePerGas/gasPrice
estimateGas(),返回向网络提交交易所需的预估gas值。

let gasPrice = await provider.getGasPrice(); // 燃料价格 (单位: wei)
let gasPrice2 = ethers.utils.formatUnits(gasPrice, "gwei"); // 通常来说燃料的价格用 gwei 会更好理解
console.log('gasPrice:',gasPrice2);
let feeData = await provider.getFeeData();
console.log('maxFeePerGas',ethers.utils.formatUnits(feeData.maxFeePerGas, "gwei"));
console.log('maxPriorityFeePerGas',ethers.utils.formatUnits(feeData.maxPriorityFeePerGas, "gwei"));
console.log('gasPrice',ethers.utils.formatUnits(feeData.gasPrice, "gwei"));
let gasLimit = await provider.estimateGas({
from: this.$store.state.address,
	to: '0xFd9B45dbF5*****35afC49ef3e',
	value: ethers.utils.parseEther('1').toString(),
});
console.log("gasLimit: " + gasLimit);

在这里插入图片描述

交易查询
查询交易是否成功
transactionHash:拿的之前转账的哈希值过来查询测试,查询该交易是否成功。
getTransaction 和 getTransactionReceipt 返回交易的详细数据,如果交易未知,则返回null。
getTransaction() 可以理解为为该笔交易发送的参数。
getTransactionReceipt() 理解为该笔交易返回的结果,如果res.status == 1 说明交易成功了(通常需要使用轮询查询这笔交易状态)

provider.getTransaction("0x958e0340e49f80e67703245fd82b556491dcbbbf6f059cadf853f577d12d70fb").then(res=>{
	console.log('getTransaction_res',res);
}).catch(err=>{
	console.log('getTransaction_err',err);
})

provider.getTransactionReceipt("0x958e0340e49f80e67703245fd82b556491dcbbbf6f059cadf853f577d12d70fb").then(res=>{
	console.log('getTransactionReceipt_res',res);
}).catch(err=>{
	console.log('getTransactionReceipt_err',err);
})

在这里插入图片描述

监听行为

/*
 * 监听行为
 * EventEmitter API允许注册  各种事件  发生时的回调函数。
 * provider.on(eventName,listener)			为每一个参数为eventName的 事件添加监听器。
 * provider.once(eventName,listener)		为参数为eventName的 事件添加监听器,监听使用过后将会被移除。
 * provider.emit( eventName , ...args )		通知所有的eventName event监听器,并把参数传递给它们。这通常只在内部使用。
 * provider.off( eventName [ , listener ] )	移除一个参数为eventName的事件监听器,如果没有提供listener参数,则移除所有关于eventName的监听器。
 * provider.removeAllListeners( [ eventName ] )移除所有参数为eventName的事件监听器,如果没有提供eventName参数,则移除所有事件
 * provider.listenerCount( [ eventName ] )	返回所有参数为eventName事件的监听器数量。如果没有提供eventName参数,返回所有监听器的数量。
 * provider.listeners( eventName )			返回参数为eventName事件监听器的list集合。
 * 
 * 
 * eventName参数包括以下:
 * "block"		blockNumber		当一个区块被挖出时触发	 
 * "error"		error			只要有错误就触发	 
 * "pending"	pendingTransaction	当一个新交易进入内存池时触发;只有特定的providers提供此事件,从而在运行在自己的节点上获得可靠的数据	 
 * "willPoll"	pollId			在一个polling loop开始之前触发;(大多数开发者很少使用)	 
 * "poll"		pollId, 		blockNumber	在每个poll cycle中,`blockNumber`更新之后(如果改变了),以及与在poll loop中任何其他的事件(如果有)之前触发; (大多数开发者很少使用)	 
 * "didPoll"	pollId			在polling loop中的所有事件被触发后触发;(大多数开发者很少使用)	 
 * "debug"		provider 		dependent	每个Provider可以使用它来发出有用的调试信息,格式由开发者决定;(大多数开发者很少使用) (very rarely used by most developers)
 * 
 * 
*/
  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值