В библиотеке web3.py, отслеживание транзакций по нескольким кошелькам может быть достигнуто с помощью использования фильтров событий (event filters).
Фильтр событий позволяет отслеживать события, связанные с определенными адресами кошельков. Вы можете создать фильтр для отслеживания транзакций, передав адреса кошельков, для которых вы хотите получать уведомления о транзакциях.
Пример кода для реализации отслеживания транзакций по нескольким кошелькам приведен ниже:
from web3 import Web3 # Подключение к Ethereum узлу w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID')) # Адреса кошельков, для которых мы хотим отслеживать транзакции wallets = ['0xAddress1', '0xAddress2', '0xAddress3'] # Создание фильтра событий для адресов кошельков filter = w3.eth.filter({ 'fromBlock': 'latest', 'address': wallets }) # Обработчик событий для новых транзакций def handle_event(event): print('Новая транзакция:', event) # Подписка на события с использованием фильтра subscription = filter.watch(handle_event) # Запуск бесконечного цикла для обработки событий while True: try: w3.eth.getBlock('latest') except KeyboardInterrupt: subscription.unsubscribe() break except: pass
Вышеуказанный код подключается к Ethereum узлу при помощи HTTP провайдера (в данном случае Infura). Затем мы определяем адреса кошельков, для которых хотим отслеживать транзакции. Создаем фильтр событий с использованием этих адресов и предоставляем блок 'latest', чтобы получить уведомления о новых транзакциях.
Далее определяем функцию-обработчик события, которая будет вызываться при каждой новой транзакции. В данном примере она просто выводит информацию о новой транзакции.
Подписываемся на события, используя фильтр, и запускаем бесконечный цикл для обработки событий. Цикл продолжается до тех пор, пока не будет нажата клавиша прерывания или произойдет ошибка.
Обратите внимание, что в приведенном выше коде используется только HTTP провайдер для подключения к узлу Ethereum. Вы также можете использовать другие провайдеры, такие как WebSocketProvider или IPCProvider, в зависимости от ваших потребностей. Также обязательно замените 'YOUR_INFURA_PROJECT_ID' на ваш реальный идентификационный номер проекта Infura, чтобы подключиться к узлу Infura.
Надеюсь, эта информация поможет вам реализовать отслеживание транзакций по нескольким кошелькам с использованием библиотеки web3.py.