javascript Ethers.js:ReferenceError:utils未定义

fdx2calv  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(201)

我正在尝试使用ethers.js(v5.6)为传入事务创建一个侦听器。根据文档,要监听传入的交易,您需要创建以下过滤器:

// List all token transfers  *to*  myAddress:
filter = {
    address: tokenAddress,
    topics: [
        utils.id("Transfer(address,address,uint256)"),
        null,
        hexZeroPad(myAddress, 32)
    ]
};

在我的脚本中有这个给了我一个错误,说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);
pw9qyyiw

pw9qyyiw1#

看起来utilsethers对象的一部分,而hexZeroPadidutils的一部分,所以你可以这样使用它们:

const { ethers } = require("ethers"); // assuming commonjs

ethers.utils.id("Transfer(address,address,uint256)");
ethers.utils.hexZeroPad(myAddress, 32);
5cnsuln7

5cnsuln72#

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

相关问题