使用web3.js获取Dogechain上TokenLockerCreated事件返回空数组求助
解决web3.js获取Dogechain TokenLockerManagerV1合约事件为空的问题
下面是针对你遇到的返回空数组问题的排查和解决步骤:
检查合约地址是否正确
你的代码中使用了pairAddr变量,但目标合约是TokenLockerManagerV1,其地址为0x016c1D8cf86f60A5382BA5c42D4be960CBd1b868,请将pairAddr替换为该地址再尝试。确认ABI匹配性
确保LPAbi是TokenLockerManagerV1合约的完整ABI,而非其他合约(比如LP配对合约)的ABI。你可以从合约的浏览器页面导出完整ABI,替换当前使用的LPAbi。调整区块查询范围
部分RPC节点会限制从区块0开始的全量历史查询,导致返回空结果。建议缩小查询范围:- 先查询合约部署后的区块高度(可从浏览器合约页面获取创建区块号),将
fromBlock设为该值 - 或者临时测试最近的区块,比如:
{ fromBlock: 'latest' - 1000, toBlock: 'latest' }
- 先查询合约部署后的区块高度(可从浏览器合约页面获取创建区块号),将
验证事件名称与签名
事件名称是大小写敏感的,检查ABI中定义的事件名是否与TokenLockerCreated完全一致。也可以通过事件签名直接过滤,确保参数类型与合约定义匹配:contract.getPastEvents('allEvents', { fromBlock: ..., toBlock: ..., topics: [web3.utils.sha3('TokenLockerCreated(uint256,address,address,address,address,uint256,uint256)')] })确认合约是否触发过目标事件
先在Dogechain浏览器的合约页面查看「Events」标签,确认是否存在TokenLockerCreated事件的历史记录。如果浏览器中也没有相关记录,说明合约尚未触发过该事件,自然无法查询到结果。
内容的提问来源于stack exchange,提问作者Dog Walker
相关产品推荐
相关产品推荐

