Seguimiento del estado de la transacción mediante la cadena privada de ethereum

Estoy implementando un sistema de gestión de pedidos utilizando la cadena de bloques privada de ethereum. Cada pedido es un contrato inteligente. Cada orden será ejecutada por múltiples actores. Estos actores también actualizarán el estado de la orden. ¿Cómo obtengo el estado actual del pedido? Necesitará detalles como cuándo se procesó el pedido por última vez y por quién, y su estado. También necesitaré la capacidad de encontrar pedidos por estado (por ejemplo: Completado, Fallido, etc.). Encuentre pedidos que se procesaron dentro de un rango de fechas, etc. ¿Es posible recuperar dichos datos de la propia cadena de bloques?

De no ser así, ¿cuál debería ser el enfoque para implementar dicho sistema?

Respuestas (1)

Para almacenar el estado, puede usar eventos en las funciones de su contrato inteligente y registrar el estado que desee. Además, puede acceder a los registros de eventos en el recibo de transacción o también puede ver todos los eventos registrados en un contrato para acceder a los datos registrados. Además de almacenar el código de estado en los eventos, puede registrar cualquier otra cosa según sus requisitos.

Implementamos la funcionalidad del código de estado en uno de nuestros proyectos, puede echarle un vistazo y eso puede ayudarlo a comprender mejor esta solución:

Contrato inteligente con eventos de estado: https://github.com/Imaginea/lms/blob/master/contracts/LMS.sol

Casos de prueba para acceder a esos registros de eventos: https://github.com/Imaginea/lms/blob/master/test/testLMS.js

La lista de estados que usamos en nuestro código: https://github.com/Imaginea/lms/blob/master/app/components/notifications/status.js#L2

Nota: Al definir eventos, puede pasar su argumento como valor indexado para que pueda filtrar eventos en función de ese atributo más adelante.

Espero que esto ayude.

Gracias por la respuesta. Crear eventos era lo que estaba pensando hacer. Pero si creo eventos y luego registro/almaceno esos datos, ¿no sería similar a construir un sistema no distribuido? ¿Es este el enfoque correcto?
Los eventos no son más que transacciones, por lo que, según tengo entendido, se almacenarán en blockchain (que finalmente se distribuye). Recuperar el estado es muy útil y recuperarlos también es fácil.