ggg*_*ggg 3 javascript filter ethers.js
我正在尝试使用 ethers.js (v5.6) 创建传入交易的侦听器。根据文档,要监听传入交易,您需要创建此过滤器:
// List all token transfers *to* myAddress:
filter = {
address: tokenAddress,
topics: [
utils.id("Transfer(address,address,uint256)"),
null,
hexZeroPad(myAddress, 32)
]
};
Run Code Online (Sandbox Code Playgroud)
在我的脚本中包含此内容会给我一个错误提示utils.id("Transfer(address,address,uint256)"), ReferenceError: utils is not defined。我在文档中找不到有关导入 utils 包的任何内容。有人可以帮我解决一下吗?
我的完整代码:
async function incomingTransactions() {
if (loadedUser) {
console.log("User loaded", loadedUser)
let myAddress = loadedUser.publicKey
let filter = {
address: myAddress,
topics: [
utils.id("Transfer(address,address,uint256)"),
null,
hexZeroPad(myAddress, 32)
]
};
// let foo = await provider.getLogs(filter)
// console.log(foo)
}
console.log("No user loaded")
}
const interval = setInterval(function() {
incomingTransactions();
}, 5000);
Run Code Online (Sandbox Code Playgroud)
在版本 6 中,utils 不存在,因为所有 utils 方法现在都是 ethers 对象的一部分,也不要忘记有一些重大更改,请在迁移页面上查看更多信息
const { ethers } = require("ethers"); // assuming commonjs
//ethers.utils.id("Transfer(address,address,uint256)"); becomes
ethers.id("Transfer(address,address,uint256)");
// ethers.utils.hexZeroPad(myAddress, 32); becomes
ethers. zeroPadValue(myAddress, 32);
Run Code Online (Sandbox Code Playgroud)