欢迎光临
我们一直在努力

基于 ethers.js 的区块链事件处理与钱包管理

币圈工具箱 bqbot.cn 月访问量达90w

https://bqbot.cn/jms.html (在线版地址)

Event事件

检索事件

const { ethers } = require(\”hardhat\”);
async function SearchEvent() {
try {
const provider = new ethers.JsonRpcProvider(\”http://127.0.0.1:8545\”);
const signer = await provider.getSigner();
const TokenAddress = \”0xxxxx\”;//合约地址
const TokenABI =[]//合约的abi;
const TokenContract = new ethers.Contract(TokenAddress, TokenABI, signer);//创建合约
//读取合约
const name = await TokenContract.name();
console.log(\”Contract Name:\”, name);
const symbol = await TokenContract.symbol();
console.log(\”Contract Symbol:\”, symbol);
const totalSupply = await TokenContract.totalSupply();
console.log(\”Total Supply:\”, totalSupply.toString());
//合约转eth
const arr1=\”0xxxxxxxx\”
await TokenContract.transfer(arr1,10);//给arr1转10;

const block = await provider.getBlockNumber()//得到当前block
const transferEvents = await TokenContract.queryFilter(\’Transfer\’, block – x, block);//检索合约Transfer,从block – x,到block之间的解析事件
console.log(`Transfer事件数量: ${transferEvents.length}`);
//transferEvents是个数组,我们可以解析他的参数
console.log(…transferEvents[0].args);//返回form,to ,value
}catch (error) {
console.error(\”Error:\”, error);
}
}

监听事件

//以上同上
TokenContract.on(\”Transfer\”, (from, to, value, event) => {
console.log(`Transfer事件触发:`);
console.log(`From: ${from}`);
console.log(`To: ${to}`);
console.log(`Value: ${value.toString()}`);
console.log(` 从 ${from}=> 到 ${to} = ${value.toString()}`);
console.log(`Event Details:`, event);
});

过滤事件

设置过滤规则:contract.filters.EVENT_NAME( …args )说明:EVENT_NAME:过滤事件,…args:过滤规则

基础规则汇总

规则
含义
示例
null 该位置不限制,匹配任意值 contract.filters.Transfer(null, addr)
单个值 必须完全匹配 contract.filters
赞(0)
未经允许不得转载:171主机测评 » 基于 ethers.js 的区块链事件处理与钱包管理
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址