以下测试脚本需要(‘web3/lib/web3/event.js’);
const SolidityEvent = require('web3/lib/web3/event.js');
function decodeLogs (logs, contract, address) {
return logs.map(log => {
const event = new SolidityEvent(null, contract.events[log.topics[0]], address);
return event.decode(log);
});
}
module.exports = {
decodeLogs,
};有人知道我在哪里可以找到这个库吗?还是安装了web3下载的库?
提前谢谢!!
发布于 2018-08-16 09:42:37
安装truffle并使用npm install web3命令安装web3。有关环境设置,请参阅这文章。
发布于 2018-08-16 10:28:06
答:只需要web3
const SolidityEvent = require('web3');
function decodeLogs (logs, contract, address) {
return logs.map(log => {
const event = new SolidityEvent(null, contract.events[log.topics[0]], address);
return event.decode(log);
});
}
module.exports = {
decodeLogs,
};发布于 2020-10-27 22:07:50
对于那些无意中遇到这个问题的人来说,这适用于1.0.0的web3:
function decoder(logs, abi) {
const topics = {};
const args = abi.filter(x=>x.type === "event").forEach(e=>topics[e.signature]=e);
let results = logs.filter(x=>x.topics.filter(t=>topics[t]).length > 0);
return results.map(log=>{ return {args:web3.eth.abi.decodeLog(topics[log.topics[0]].inputs, log.data, log.topics), event:topics[log.topics[0]].name}});
} https://ethereum.stackexchange.com/questions/56638
复制相似问题