我正在构建一个简单的资源管理器,我想列出由契约发出的事件。由于我不知道每个合同的ABI,是否有可能从使用Web3的合同中获得过去的事件?
如果我知道ABI,我会这样做:
var myContract = new web3.eth.Contract(ABI, address);
myContract.getPastEvents('allEvents', {
filter: {...},
fromBlock: 0,
toBlock: 'latest'
}, (error, events) => { console.log(events); })
.then((events) => {
console.log(events) // same results as the optional callback above
});但是,当然,没有它的接口,我不能实例化合同。我想知道像以太扫描这样的探险家是怎么做到的。
发布于 2019-05-29 13:59:16
您可以使用'web3.eth.getPastLogs({fromBlock:,地址:},(err,结果)‘)。
结果将包含事件在“主题”中的对象,但是没有ABI就无法解码事件。
编辑:主题是一个数组,第一个元素是事件名,下面的元素是参数
https://ethereum.stackexchange.com/questions/71233
复制相似问题