使用 Web3 和 Python 在 Polygon 区块链上检测新的 PairCreated 事件

Posted

技术标签:

【中文标题】使用 Web3 和 Python 在 Polygon 区块链上检测新的 PairCreated 事件【英文标题】:Detecting new PairCreated events on Polygon blockchain with Web3 and Python 【发布时间】:2021-11-17 22:48:59 【问题描述】:

我正在尝试制作一个程序,一旦添加流动性(PairCreated 事件),它就会在多边形区块链上持续检测新代币。下面是代码的主要部分。

我使用的是 quickSwap 工厂地址 (0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32),因为这似乎是多边形网络的 pancakeswap 等价物(pancakeswap 的代码中有引用,我的意思是 quickswap)。也使用与 BSC 相同的 ABI,这似乎很好。

我已经设法在币安智能链上正常工作,但是在使用多边形运行时没有检测到任何东西。然而,我在某处读到 Polygon 显然不支持当前方法。

任何人都可以阐明需要做什么才能使其正常工作吗? 谢谢!

#import web3 and all other modules

web3 = Web3(Web3.WebsocketProvider(bscNode))

contract = web3.eth.contract(address=pancakeSwapFactoryAddress, abi=listeningABI)

def foundToken(event):
    jsonEventContents = json.loads(Web3.toJSON(event))
    #process token data etc
        

        
async def tokenLoop(event_filter, poll_interval):
    while True:
        try:
            for PairCreated in event_filter.get_new_entries():
                foundToken(PairCreated)
            await asyncio.sleep(poll_interval)
        except:
            pass
            
            
def listenForTokens():
    event_filter = contract.events.PairCreated.createFilter(fromBlock='latest')
    loop = asyncio.get_event_loop()
    try:
        loop.run_until_complete(
            asyncio.gather(
                tokenLoop(event_filter, 2)))       
                 
    finally:
        listenForTokens()


listenForTokens()

【问题讨论】:

【参考方案1】:

以下对我有用:

pair_created_event = contract.events.PairCreated()
event_filter = pair_created_event.createFilter(fromBlock='latest')
entries = event_filter.get_new_entries()
print(entries)

您需要调用PairCreated 事件而不是仅仅使用引用。

另外请检查您使用的合约地址。对于 PancakeSwap,您可以在他们的文档中找到官方的:https://docs.pancakeswap.finance/code/smart-contracts#main-contracts

【讨论】:

以上是关于使用 Web3 和 Python 在 Polygon 区块链上检测新的 PairCreated 事件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Web3 和 Python 计算 BSC 代币的价格

如何使用 python 将 web3 连接到以太坊主网络?

python如何使用web3py与以太坊投资智能合约交互

Python Web3.0应用开发2022

Python Web3.0应用开发2022

Python Web3 开发:用 Brownie 部署智能合约