Я пишу программу nodejs, которая получает большое количество блоков (> 100 000) и просматривает каждую транзакцию внутри, чтобы фильтровать/анализировать данные.
В настоящее время я использую функцию getBlock web3 (v1):
eth.getBlock(i, true, handleFunction)
Однако, несмотря на то, что handleFunction вызывается асинхронно, моя программа (если не регулировать вручную) выдает 100 000 запросов, что, я думаю, перегревает веб-сокет infura...
Я вручную сделал дроссель, чтобы сделать только 10 запросов и подождать, пока все они не будут обработаны, а затем перейти к следующим 10.
Мой вопрос: я полагаю, что многие люди сталкиваются с этой же проблемой, поэтому есть ли какой-либо метод из web3, более подходящий для запроса нескольких блоков? Или есть какой-то аспект дизайна, который я могу улучшить?
Извините за саморекламу, но вы можете использовать QuickBlocks, чтобы делать то же самое гораздо эффективнее, потому что он дополнительно кэширует блоки локально, так что в следующий раз, когда вы будете выполнять тот же (или аналогичный) запрос, блоки будут локальными и, следовательно, намного быстрее. Мы работаем над оболочкой для QuickBlocks, которую можно будет вызывать из node.js, но она еще не готова. В настоящее время он работает как командная строка.
Вигнеш Картикеян