¿Cómo puedo configurar un servicio web web3 que escuche eventos de mi contrato inteligente?

Tengo un contrato inteligente que transmite eventos a clientes web3, cada vez que se transmite un evento, el cliente que escucha realiza una llamada de transmisión a mi contrato.

Me gustaría configurar un detector de eventos 'siempre activo', por lo que algún tipo de servicio web y todo lo que hace es escuchar los eventos que se transmiten desde mi contrato inteligente y hacer llamadas de tx. De esta manera, el navegador no tendría que estar abierto para enviar tx a mi contrato cuando 'escucha' un evento.

En mi opinión, obviamente, este servicio web necesitaría tener su propio nodo local ejecutándose y tener una base de monedas con suficientes fondos para ejecutar el tx.

¿Cómo podría lograr este escenario?

Básicamente, necesito un archivo web3 para escuchar siempre, sin que nadie visite la página real en el navegador que tiene los oyentes js.

¿Es esto alcanzable? ¿Algo como nodejs podría hacer esto?

Por favor, ayuda, es crucial para mi solicitud de contrato inteligente.

Respuestas (1)

Sin duda, podría crear un demonio que escuche el evento y llame al contrato. Tal como lo describe, ni siquiera necesita ser un servicio web ; Por ejemplo, simplemente escriba el código que normalmente habría ejecutado en el navegador para escuchar el evento, luego active el contrato y ejecútelo desde la línea de comando con node. Es posible que desee ejecutar esto con upstart o dios que lo iniciará nuevamente si se cae por alguna razón.

Sin embargo, ¿hay alguna razón por la que no pueda simplemente hacer que el contrato que actualmente está llamando al evento original llame al segundo contrato directamente?

Entonces, ¿nodejs puede potencialmente ejecutar un nodo y escuchar estos eventos?
Node.js no ejecutaría un nodo Ethereum, sino que se conectaría a un nodo Ethereum. Tendría algún código ejecutándose en un proceso node.js que escucha los mensajes de su nodo Ethereum, de la misma manera que actualmente tiene un código ejecutándose en un proceso JavaScript del navegador que escucha los mensajes de su nodo Ethereum. La forma obvia de hacer esto sería tener un nodo Ethereum y su demonio node.js ejecutándose en el mismo cuadro, por lo que el demonio node.js se conectaría al nodo Ethereum en localhost.