Как проверить, что лавинная блокировка принята с помощью web3.py
Я пытаюсь создать бота, который прослушивает события на AMM для различных цепочек, и я сталкиваюсь с проблемами при попытке построить свой алгоритм для лавинной сети. При вызове функции для определенного события программа случайным образом вылетает со следующей ошибкой
ValueError: {'code': -32000, 'message': 'requested to block ... after last accepted block ...'}
Моя программа всегда извлекает журналы только до
latest
block, поэтому я не уверен, почему возникает эта ошибка (я предполагаю, что это как-то связано с тем, как узлы avax достигают консенсуса). Я все еще очень новичок в программировании web3.py и лавинном блокчейне в целом, поэтому, если у кого-то есть идеи, почему это может происходить, или как я могу проверить, принят ли блок перед запуском
getLogs
тогда буду крайне признателен!
1 ответ
Я не знаю, нашли ли вы свое решение, но вот решение, которое должно работать для вас. Вы должны получить ABI смарт-контракта, а также его адрес, чтобы запустить его.
contract = web3.eth.contract(address=ContractAddress, abi=abi)
my_filter = contract.events.<YOUR_EVENT>.createFilter(fromBlock='latest')
entries = my_filter.get_all_entries()
Кстати, я только начал свое приключение в Web3, такое как ваше, 3 месяца назад :), а также пытаюсь создать бота, но для самой популярной игры в сети. Проблема в том, что я только что обнаружил, что может понадобиться собственный узел, чтобы его бот был максимально быстрым, в зависимости от потребности в скорости.