Получите большое количество блоков с помощью web3 (nodejs)

Я пишу программу nodejs, которая получает большое количество блоков (> 100 000) и просматривает каждую транзакцию внутри, чтобы фильтровать/анализировать данные.

В настоящее время я использую функцию getBlock web3 (v1):

eth.getBlock(i, true, handleFunction)

Однако, несмотря на то, что handleFunction вызывается асинхронно, моя программа (если не регулировать вручную) выдает 100 000 запросов, что, я думаю, перегревает веб-сокет infura...

Я вручную сделал дроссель, чтобы сделать только 10 запросов и подождать, пока все они не будут обработаны, а затем перейти к следующим 10.

Мой вопрос: я полагаю, что многие люди сталкиваются с этой же проблемой, поэтому есть ли какой-либо метод из web3, более подходящий для запроса нескольких блоков? Или есть какой-то аспект дизайна, который я могу улучшить?

Будет ли запуск собственного светового узла исключен?

Ответы (1)

Извините за саморекламу, но вы можете использовать QuickBlocks, чтобы делать то же самое гораздо эффективнее, потому что он дополнительно кэширует блоки локально, так что в следующий раз, когда вы будете выполнять тот же (или аналогичный) запрос, блоки будут локальными и, следовательно, намного быстрее. Мы работаем над оболочкой для QuickBlocks, которую можно будет вызывать из node.js, но она еще не готова. В настоящее время он работает как командная строка.

Да, я посмотрел на это, но мне придется подождать версию nodejs... У меня есть настройка, в которой я сам сохраняю результаты локально и делаю такие вещи, как извлечение определенных полей в файл csv и т. д. и т. д. По сути, если бы только etherscan.io позволял экспортировать/получать больше данных через свой API, все было бы намного проще, но у них такие строгие ограничения...