首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何下载或访问(‘web3 3/lib/web3 3/event.js’);

如何下载或访问(‘web3 3/lib/web3 3/event.js’);
EN

Ethereum用户
提问于 2018-08-16 07:05:01
回答 3查看 494关注 0票数 0

以下测试脚本需要(‘web3/lib/web3/event.js’);

代码语言:javascript
复制
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下载的库?

提前谢谢!!

EN

回答 3

Ethereum用户

发布于 2018-08-16 09:42:37

安装truffle并使用npm install web3命令安装web3。有关环境设置,请参阅文章。

票数 0
EN

Ethereum用户

发布于 2018-08-16 10:28:06

答:只需要web3

代码语言:javascript
复制
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,
 };
票数 0
EN

Ethereum用户

发布于 2020-10-27 22:07:50

对于那些无意中遇到这个问题的人来说,这适用于1.0.0的web3:

代码语言:javascript
复制
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}});
} 
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/56638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档