[英]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.