web3.js 中的 getPastEvent 返回空数组

问题描述 投票:0回答:1

我正在研究

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
.

javascript reactjs blockchain smartcontracts web3js
1个回答
0
投票

这很常见,因为范围问题,链支持范围,并且它也适用于其他几个约束。

此示例仅用于自述目的,为了使它正常工作,我建议使用它,

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

在一些连锁店中可接受的范围高达 5000,而有些则使用 1000 的限制,因此使用 1000,

这在一定范围内有效,但永远不要尝试获取从第 0 个区块到现在的过去事件,

© www.soinside.com 2019 - 2024. All rights reserved.