繁体   English   中英

如何使用web3py过滤器获取智能合约的事件日志?

[英]How to use filters with web3py to get event logs for a smart contract?

我正在寻找智能合约的事件日志,我正在使用Infura节点。 根据这里提供的文档,我尝试了运行

new_block_filter = web3.eth.filter('latest')

我认为应该这样

new_block_filter = w3.eth.filter('latest')

其中w3应该是这样的

w3 = Web3(HTTPProvider("https://mainnet.infura.io/v3/infura-project-id"))

但是文档中有错误。 无论如何我尝试了这个,我相信这是创建过滤器的最简单方法以及这里提到的方法。

这两个都会导致错误

回溯(最近一次调用最后一次):文件“”,第1行,在文件“/home/username/.local/lib/python3.6/site-packages/web3/eth.py”,第333行,在过滤器中[filter_params ],文件“/home/username/.local/lib/python3.6/site-packages/web3/manager.py”,第112行,在request_blocking中引发ValueError(response [“error”])

ValueError:{'code': - 32601,'message':'方法eth_newFilter不存在/不可用'}

有关如何创建和使用这些过滤器的任何想法,以及在知道主题参数时如何获取智能合约的事件日志。

错误消息表示它所说的内容。 Infura不支持通过HTTPS的RPC方法eth_newFilter ,这是您的代码最终调用的方法。

我相信如果你通过WebSocket连接相同的代码应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM