¿Cómo monitorear un gran conjunto de direcciones de ethereum para el equilibrio?

Estoy planeando construir un sistema donde los usuarios serán notificados a través de un correo electrónico y una notificación de la aplicación si hubo algún cambio en su saldo de éter. Estaba confundido sobre cómo monitorear un gran conjunto de direcciones de ethereum las 24 horas del día, los 7 días de la semana para verificar el saldo y activar un evento basado en eso. ¿Web3.js proporciona alguna función para monitorear un gran conjunto de direcciones de ethereum?

Esta es una respuesta antigua a una pregunta similar ethereum.stackexchange.com/a/27525 . Sugeriría explorar el uso debug_getModifiedAccountsByNumberjunto con un filtro de bloque y posiblemente una base de datos externa.

Respuestas (3)

Creo que la forma más eficiente de hacer esto sería estar atento a los nuevos bloques y extraer los cambios de los saldos de las cuentas de las transacciones que encuentre en el nuevo bloque.

De esta manera, básicamente monitoreará todas las cuentas y podrá enviar notificaciones a aquellos que se suscribieron a su servicio.

Otra ventaja de este enfoque es que puede detectar cambios de saldo tan pronto como ocurren. Y podría notificar a sus clientes sobre otras cosas que suceden en la cadena de bloques, que no tienen efecto en el saldo de la cuenta.

No creo que web3 le brinde este tipo de funcionalidad, sino que puede crearla usted mismo usando getBalance .

Solo necesita llamar a la función para cada dirección que suscribió su servicio y enviar una notificación en caso de que el saldo actual refleje las condiciones que está buscando y luego puede activar la acción correspondiente.

Repita esto durante el tiempo después de un cierto tiempo de espera y tendrá un servicio 27/7.

En esta respuesta a una pregunta similar, escribí un código de muestra que monitorea los saldos de un conjunto de direcciones. Simplemente cambie el código de transferencia de fondos para llamar a su disparador de eventos. Tenga en cuenta que el código depende del proveedor web3 remoto, que puede estar bien para requisitos de bajo rendimiento. Para requisitos de alto rendimiento, podría valer la pena considerar construir directamente sobre Geth o Parity.

En realidad, ignore mi respuesta, acabo de descubrir que estaba dando la misma respuesta al mismo OP :)