Eventos de devolución de Truffle Exec

Configuré un archivo JavaScript que toma mi contrato y ejecuta las diversas funciones y luego devuelve los eventos correctos. El archivo se ejecuta a través de 'truffle exec'.

Estoy usando la siguiente línea para que mis eventos regresen:

      let myEvent = contract.ThisEvent({}, {fromBlock: 0, toBlock: 'latest'});
  myEvent.get((error, logs) => {
    logs.forEach(log => console.log(
      'Message: ' + log.args.message
    ))
  });

El problema al que me enfrento es que tengo una variedad de eventos con el mismo nombre pero que devuelven mensajes diferentes. La idea es que cada evento se devuelva en un orden específico (como se establece en la función). Pero cuando trato de ejecutarlos en el archivo JS, terminan siendo devueltos en la terminal en el orden incorrecto.

No estoy seguro de cómo hacer que devuelva los eventos en el orden correcto. ¿Puedo tal vez cambiar fromBlock/toBlock para que esto suceda? Y si es así, ¿hay alguna manera de averiguar de antemano en qué bloque se llevará a cabo qué evento?

¡Gracias!

Respuestas (1)

De la misma manera que lo hace log.args.message, puede hacer log.blockNumberpara ver en qué bloque se emitió ese evento y ordenarlos de esa manera, dicho esto, es posible que algunos de ellos estén fuera de orden porque las transacciones no siempre se extraen en el mismo orden en que se envían. .

Nota 1: con esa función, está recorriendo toda la cadena, lo que puede ser muy lento, generalmente los eventos se usan para lanzar notificaciones cuando algo sucede, si la está usando por diferentes razones, considere almacenarla en una estructura de datos en el dispositivo inteligente. contrato.

Si lo está utilizando para notificaciones, no necesita leer toda la cadena, solo verifique los bloques a medida que se extraen.

var event = myContractInstance.myEvent([{valueA: 23}] [, additionalFilterObject] , function(error, result){
 if (!error)
   console.log(result);
});

Nota 2: Parece que estás usando web3 0.2x (Cuidado al actualizar a la versión 1.x, las cosas cambian mucho)