Tengo muchas preguntas sobre el flujo de trabajo (secuencia) de la interacción con el contrato inteligente desde la aplicación Java, así que primero explicaré lo que he hecho y luego haré mis preguntas, y si tengo algún problema, házmelo saber.
1- Escribí un contrato inteligente 2- Use truffle para obtener el envoltorio java del contrato inteligente (contract.java) 3- Use testrpc para probar el contrato
Tengo 2 clases que usan cuentas testrpc (credenciales) para interactuar con el contrato inteligente y llamar a sus funciones
Cada clase (node1.java, node2.java) llama a una función en el contrato inteligente llamada (send) para enviar sus datos a la cadena.
He agregado un evento que se activa si los 2 nodos han enviado datos allí
Lo que no entiendo es cómo puedo dejar que el código Java (digamos MainProgram.class) siempre verifique ese evento. Debido a que necesito verificar si ambos nodos envían sus datos, llamaré a otra función para analizar estos datos.
Cómo puedo administrar, controlar y verificar qué transacciones se han realizado o no, me refiero a cómo puedo usar los eventos en el código de Java y dejar que el código se ejecute para siempre y verificar si este evento ocurre, actúe.
Espero poder explicar claramente lo que necesito.
Gracias de antemano.
En su contenedor de Java para cada tipo de evento en su SmartContract, habrá una función que se verá así:
public Observable<ApprovalEventResponse> approvalEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
...
return typedResponse;
}
});
}
Puede suscribirse a este observable desde su código Java de la siguiente manera:
contract.approvalEventObservable(DefaultBlockParameter.valueOf("Earliest"),DefaultBlockParameter.valueOf("Latest")).asObservable().subscribe( event ->{
System.out.prtinln(event._approver);
});
Esto reproducirá todos los eventos que hayan ocurrido e imprimirá el atributo de los eventos anteriores y también imprimirá nuevos eventos cuando ocurran.
Sheemar
Rajesh