¿Se activan los eventos en un contrato después de que se extrae esa transacción en particular?

Digamos que tengo un evento de notificación() en una función llamada comprar().

event notify();
   buy(){
   //...
   notify();
}

El problema aquí es que mi control del reloj de notificación se activa solo después de que se extrae esa transacción. ¿Así funcionan los eventos? Si es así, ¿hay alguna alternativa para conocer las transacciones que ocurren en mi contrato al instante? var filter = contractObject.notify();

filter.watch(function (error, log, data)
 {  console.log(data);  });

Respuestas (1)

Úselo pendingcuando construya su web3.eth.filter.

web3.eth.filtertiene un parámetro:

Cadena|Objeto: la cadena "más reciente" o "pendiente" para observar cambios en el último bloque o transacciones pendientes, respectivamente. O un objeto de opciones de filtro de la siguiente manera: fromBlock: Number|String: el número del bloque más antiguo (más reciente se puede dar para indicar el bloque más reciente y pendiente de extracción actual). Por defecto más reciente. toBlock: Number|String: el número del bloque más reciente (más reciente se puede dar para indicar el bloque más reciente y pendiente de extracción actual). Por defecto más reciente.

Algunas cosas a tener en cuenta con las transacciones pendientes:

  • es posible que nunca se extraigan, por ejemplo, uno que tiene un precio de gasolina demasiado bajo
  • son locales: la red no tiene una vista compartida global de ellos, un cliente puede saber sobre txA pendiente y no sobre txB pendiente, y otro cliente solo puede saber viceversa.

Esas son algunas de las razones por las que el valor predeterminado es escuchar solo los eventos que se han extraído en un bloque ( latest). Incluso entonces, tenga en cuenta que es posible que desee manejar una reorganización de la cadena .