web3.js中的getPastEvent返回空数组



我正在开发dogechain。我正在尝试使用web3.js.获取TokenLockerManagerV1合约上的TokenLockerCreated事件

这是合同中的活动部分。

emit TokenLockerCreated(
id,
tokenAddress_,
token0Address,
token1Address,
_msgSender(),
token.balanceOf(lockerAddress),
unlockTime_
);

这是我用来捕捉这个事件的web3.js部分。

const web3 = new Web3(new Web3.providers.HttpProvider("https://rpc03-sg.dogechain.dog"));
const contract = new web3.eth.Contract(LPAbi, pairAddr);
contract.getPastEvents("TokenLockerCreated",
{
fromBlock: 0,
toBlock: 'latest',
})
.then(events => console.log(events))
.catch((err) => console.error(err));

我尝试了allEvents而不是TokenLockerCreated,但它们都返回空数组作为events

由于范围问题,这是非常常见的,链支持一个范围,并且它还可以与其他几个约束一起工作。

这个例子只是为了重新阅读,为了让它发挥作用,我建议使用这个

web3.eth.getBlockNumber((error, result) => {
if (!error) {
Contract.getPastEvents("TokenLockerCreated",{fromBlock:  result - 1000 ,toBlock: result},
(error, events) => {
// todo
});
}
});

在某些链中,该范围可接受高达5000,有些链使用1000的限制,因此使用1000,

这在一定范围内有效,但从不试图获取从第0个块到截止日期的过去事件,

相关内容

  • 没有找到相关文章

最新更新