¿Cómo ver el registro de todas las instancias de un tipo específico de contrato?

Adjuntar un observador para cada instancia de un contrato no es una buena idea en términos de memoria y CPU. Entonces, ¿hay alguna manera de observar los eventos de todas las instancias de un contrato, es decir, registrando un solo observador para todas las instancias del contrato?

Tenga en cuenta que no quiero proporcionar la dirección de las instancias del contrato porque eso forzará la búsqueda completa de la base de datos.

Necesito mostrar los cambios en el contrato en tiempo real en el cliente y también actualizar la base de datos en tiempo real.

¿No puede poner en el evento un parámetro indexado que identifique el tipo de contrato y luego escuchar el filtrado de eventos en ese parámetro indexado?
@dragosb actualmente solo puede filtrar direcciones o matrices de direcciones, por lo que incluso si transmite el tipo de contrato o la dirección del contrato en eventos, no podría encontrar ese evento a menos que estuviera viendo la dirección de esa instancia de todos modos.
Esto simplemente no es verdad. Puede filtrar eventos en función de los temas que son los parámetros indexados... o tal vez estoy malinterpretando lo que está diciendo

Respuestas (4)

Una posibilidad es que el contrato pueda llamar a un contrato de "observador" central en cualquier momento que deseen hacer un registro, y luego solo necesita ver los registros de ese contrato.

Para responder a su pregunta, no, desafortunadamente no puede capturar eventos basados ​​en una clase/contrato, solo en instancias (direcciones).

Puede poner en el evento un parámetro indexado que identifique el tipo de contrato y luego escuchar el filtrado de eventos en ese parámetro indexado.

Otra forma es especificar en el evento como un parámetro indexado su dirección para que pueda obtener todos sus contratos y luego, como un parámetro de datos de evento simple, especifique el tipo de contrato y la cadena que puede filtrar analizando la parte de datos del evento.

Un sistema de monitoreo programable que se ejecutó fuera de la cadena, como QuickBlocks, puede hacer esto. QuickBlocks le permite ver cada bloque que sale de su nodo local y hacer lo que quiera con él, incluido el filtro basado en cualquier código C++ que escriba para completar el filtro.