簡體   English   中英

如何在 python 中收聽 multipal 事件

[英]How to listen to multipal events in python

我想問一些我的代碼:

token_CA = 'Binance Chain Wallet Address'
​
contract = web3.eth.contract(address=web3.toChecksumAddress(token_CA), abi=token_abi)
​
def handle_event(event):
    result = json.loads(Web3.toJSON(event))
    print(result)
​
async def log_loop(event_filter, poll_interval):
    while True:
        for event in event_filter.get_new_entries():
            handle_event(event)
            await asyncio.sleep(poll_interval)
​
def main():
    event_filter = contract.events.Transfer.createFilter(fromBlock='latest')
    loop = asyncio.get_event_loop()
    try:
        loop.run_until_complete(
            asyncio.gather(
                log_loop(event_filter, 2)
            )
        )
    finally:
        loop.close()
​
if __name__ == '__main__':
    main()

假設,我在數據庫中有一個 Binance 鏈地址,我想通過事件監聽他們的所有事件,我的意思是當有人轉移 BNB 或其他東西時

目前,在我的代碼中,地址是用合約變量固定的,我一次只能收聽一個地址,我必須更改token_CA變量並重新啟動腳本以收聽其他錢包事件。

但我想要的是,當我在數據庫中添加新錢包時,它會自動開始監聽那個新地址或其他東西,我可以監聽所有錢包地址的事件。 有嗎,我只是想聽我數據庫中的所有地址,如果我向我的數據庫中添加一個新的錢包地址,腳本會自動開始聽那個地址

我已經想出了如何做到這一點。

我必須更改事件過濾器

event_filter = web3.eth.filter({
    "address": [#all address which I want to track],
    "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
})

現在我可以跟蹤多個地址

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM