Cadena de suministro utilizando el SDK de Lisk
Motivación
Blockchain tiene la capacidad de beneficiar masivamente tanto a la cadena de suministro como a las industrias de transporte, al introducir un nuevo nivel de transparencia y capacidad de respuesta de datos que ayuda a mejorar los procesos y atraer clientes potenciales. La aplicación de blockchain a ciertas cadenas de suministro puede beneficiar al productor primario hasta el consumidor final, incluidas todas las otras partes auxiliares intermedias y, además, también proporciona información mejorada sobre todo el proceso.
La red blockchain es la capa de base de datos descentralizada que almacena toda la información relevante sobre la cadena de suministro y los productos, y además garantiza que los datos no se puedan manipular una vez que se almacenan en la cadena de bloques.
Objetivo
El objetivo aquí es crear un sistema de seguimiento de la cadena de suministro descentralizado simple. Los participantes de la red pueden enviar, transportar y recibir paquetes entre ellos.
Para el transporte del paquete, se implementa un sistema de confianza simple, que permite al remitente establecer ciertos requisitos para el transportista del paquete. El paquete será un participante activo en el proceso de transporte, ya que se rastreará con sensores durante el transporte. Esto se hace para garantizar que no haya sido manipulado durante el transporte.
El transportista será recompensado con el transporte exitoso y penalizado si el transporte ha fallado por alguna razón.
Para un uso conveniente del sistema, se proporcionará una aplicación cliente llamada Lisk Transport que visualiza toda la información relevante sobre el sistema de seguimiento de la cadena de suministro. A su vez, la aplicación Lisk Transport permite a los usuarios interactuar con el sistema mediante la publicación de transacciones personalizadas.
Procedimiento general
El diagrama que se muestra a continuación describe el flujo de trabajo general y la descripción de cada paso del sistema de seguimiento de la cadena de suministro:
Inicializar cuenta de paquete
Antes de registrar el paquete en la red, el remitente debe crear una nueva cuenta para el paquete y almacenar la frase de contraseña en el dispositivo IoT dentro del paquete. Esto es necesario porque el paquete debe firmar las transacciones que envía a la red para comunicarse con él.
Paquete de registro
El remitente del paquete registra los paquetes en la red blockchain.
Al crear el
RegisterPacketTransaction
, el remitente define lo siguiente:packetId
: El ID del paquete que se ha inicializado en el paso anterior.postage
: Esta cantidad se pagará al transportista por el transporte del paquete.security
: La seguridad es la cantidad de tokens que se bloquearán en la cuenta del operador, cuando este reciba el paquete del remitente.minTrust
: La cantidad mínima de confianza que requiere un transportista para transportar este paquete.recipientId
: El ID del destinatario deseado del paquete. Solo el destinatario puede enviar elFinishTransaction
último, que completará el transporte.
Esta transacción realizará lo siguiente:
- Agregue los datos anteriores a la cuenta del paquete.
- Establezca el
status
del paquete enpending
. - Transfiera el franqueo de la cuenta del remitente a la cuenta del paquete.
Iniciar transporte
El siguiente paso sería que el operador vaya a la dirección del remitente del paquete, luego reciba el paquete y comience la entrega al destinatario. El transportista debe firmar una transacción
StartTransportTransaction
, que verifique que el paquete se haya pasado al transportista.
Al crear el
StartTransportTransaction
, el operador define lo siguiente:packetID
: El ID del paquete que el transportista va a transportar.
Esta transacción realizará lo siguiente:
- Bloquee el
security
paquete especificado en la cuenta del operador. El transportista no puede acceder a esta seguridad, a menos que el transporte se haya completado con éxito. - Agregue el
carrier
a la cuenta del paquete. - Establezca el
status
del paquete depending
aongoing
.
Alarma de luz
Durante el transporte del paquete, se rastreará con diferentes sensores para verificar si ha sido manipulado durante la fase de transporte. Si se ha producido alguna manipulación, el paquete enviará una transacción de alarma autofirmada a la red.
Esto
LightAlarmTransaction
realizará lo siguiente:- Cambia el paquete
status
aalarm
. - Agregue el actual
timestamp
a la listaasset.alarms.light
dentro de la cuenta del paquete.
Terminar el transporte
Al llegar al destinatario del paquete, el transportista pasa el paquete al destinatario. El destinatario debe firmar el
FinishTransportTransaction
. Esto verifica que el paquete ha sido enviado al destinatario.
Al enviar la transacción, el destinatario debe especificar lo siguiente:
packetID
: La ID del paquete que recibió el destinatario.status
: El estado del transporte, que tiene 2 opciones:"success"
o"fail"
Esta transacción realizará lo siguiente:
- Si
status="success"
- Enviar
postage
a la cuenta del operador. - Desbloqueo
security
en la cuenta del operador. - Aumento
trust
de portador +1. - Establecer paquete
status
ensuccess
.
- Si
status="fail"
- Enviar
postage
a la cuenta del remitente. - Agregue
security
a la cuenta del remitente y anulelockedSecurity
de la cuenta para el operador. - Disminución
trust
del portador en -1. - Establecer paquete
status
enfail
.
Información para desarrolladores: para informacón de guia de instalacón y taller ver aquí