使用 web3.py 和 infura.io 监听 Uniswap 合约事件

Posted

技术标签:

【中文标题】使用 web3.py 和 infura.io 监听 Uniswap 合约事件【英文标题】:Listening to Uniswap contract events using web3.py and infura.io 【发布时间】:2020-10-04 05:09:39 【问题描述】:

我想使用 web3.py 和 infura.io 来监听 Uniswap 工厂事件,但是我不太确定从哪里着手。

这是一个链接:https://uniswap.org/docs/v2/smart-contracts/factory/

更具体地说,我想监听PairCreated 事件。

【问题讨论】:

【参考方案1】:

这里是粗略的指南

    为 Uniswap 合约获取 ABI

    创建一个web3.py contract object

    您可以使用web3.eth.getLogs() 查询过去区块范围内的事件

    您不能一次查询所有事件,因为事件太多,Infura 会超时。相反,您需要在块范围切片上仔细查询事件。

这是一些旧代码,可能适用于最新的 web3.py 版本,也可能不适用

https://github.com/TokenMarketNet/sto/blob/master/sto/ethereum/scanner.py#L153

如果您想要一个实时扫描器,您可以在事件发生时通过 WebSocket 连接列出事件:

https://web3py.readthedocs.io/en/stable/filters.html#asynchronous-filter-polling

【讨论】:

以上是关于使用 web3.py 和 infura.io 监听 Uniswap 合约事件的主要内容,如果未能解决你的问题,请参考以下文章

web3 (python) 创建的交易不会反映在以太坊区块链上

403 客户端错误:禁止访问 url:https://ropsten.infura.io/v3/PROJECT_ID

如何使用 web3 连接到受保护的 infura 项目?

区块链的类型与网络ID

区块链的类型与网络ID

如何通过 web3 和 infura 提供商集成智能合约