Ethers.js:ReferenceError:utils 未定义

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)

raz*_*bee 5

在版本 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)