我正在研究
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 个区块到现在的过去事件,