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

标签 python ethereum web3py

我正在寻找智能合约的事件日志,并且为此使用 Infura 节点。根据提供的文档here ,我尝试运行

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"))

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

这两种情况都会导致类似的错误

Traceback (most recent call last): File "", line 1, in File "/home/username/.local/lib/python3.6/site-packages/web3/eth.py", line 333, in filter [filter_params], File "/home/username/.local/lib/python3.6/site-packages/web3/manager.py", line 112, in request_blocking raise ValueError(response["error"])

ValueError: {'code': -32601, 'message': 'The method eth_newFilter does not exist/is not available'}

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

最佳答案

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

我相信如果您通过 WebSocket 连接,相同的代码应该可以工作。

关于python - 如何使用 web3py 的过滤器来获取智能合约的事件日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55996298/

相关文章:

python - 在 python 函数中使用列表

python - 为什么我无法从 mplfinance 导入 Candlestick_ohlc

python - 带有 pytest 标记的 python 脚本的 Sphinx 文档

python - 识别 Pandas 对象的IDE

ethereum - 从 Solidity 中的映射中删除映射

blockchain - 如何通过区 block 号访问以太坊区 block 链上一个区 block 的数据?

blockchain - 如何删除保存在 IPFS 区 block 链中的图像?

python - web3.py swapExactTokensForTokens 交易失败

web3py - 检查钱包是否被批准使用代币

python - 从 ERC-20 代币地址获取有关代币的详细信息