Obtenga una gran cantidad de bloques con web3 (nodejs)

Estoy escribiendo un programa nodejs que obtiene una gran cantidad de bloques (> 100,000) y analiza cada transacción interna para filtrar/analizar los datos.

Actualmente estoy usando la función getBlock web3 (v1) :

eth.getBlock(i, true, handleFunction)

Sin embargo, a pesar de que handleFunction se llama de forma asíncrona, mi programa (si no se acelera manualmente) emite 100,000 solicitudes, sobrecalentando el websocket de infura, creo...

Aceleré manualmente para hacer solo 10 solicitudes y esperar hasta que se manejen todas, luego pasar a las siguientes 10.

Mi pregunta: me imagino que mucha gente se enfrenta a este mismo problema, entonces, ¿hay algún método de web3 más apropiado para solicitar múltiples bloques? ¿O hay algún aspecto del diseño que pueda mejorar?

¿Sería imposible ejecutar su propio nodo de luz?

Respuestas (1)

Perdón por la autopromoción, pero puede usar QuickBlocks para hacer lo mismo de manera mucho más efectiva porque además almacenará en caché los bloques localmente para que la próxima vez que haga la misma consulta (o similar), los bloques serán locales y por lo tanto mucho mas rápido. Estamos trabajando en un contenedor para que QuickBlocks se pueda llamar desde node.js, pero aún no está listo. Actualmente funciona como una línea de comando.

Sí, miré eso, pero tendría que esperar la versión de nodejs... Tengo una configuración donde guardo los resultados localmente y hago cosas como extraer ciertos campos a un archivo csv, etc., etc. Básicamente, si solo etherscan.io permitiera exportar/pasar más datos a través de su API, todo sería mucho más fácil, pero tienen límites tan estrictos...