IoT y Blockchain: un Demo App con Microsoft Azure

Fuente: Linkedin / Autor: Axel Banderet

Tras el crecimiento de Blockchain y Smart Contract en múltiples aplicaciones, tenía curiosidad por descubrir si podríamos aprovechar sus beneficios intrínsecos para optimizar el uso de los datos recopilados de IoT. Como resultado, este artículo presenta una aplicación de demostración (Demo App) basada en Blockchain alimentada por un dispositivo Sigfox IoT que activa acciones relacionadas con Smart Contract en Microsoft Azure.

Blockchain, una nueva forma intercambiar y almacenar información

La red Sigfox 0G permite recopilar una cantidad de datos sin precedentes desde amplios tipos de fuentes que, hasta ahora, no era posible conectar. Sin embargo, a menos que se analice y procese de forma adecuada, esta enorme cantidad de información no revela un valor relevante. Una vez manejados correctamente, estos datos extraídos revelan una enorme cantidad de valor. Este es el poder del IoT y también es la razón por la cual las propuestas de valor basadas en Sigfox nunca se tratan solo de recopilar datos, sino de crear valor a partir de ellos.

Por otro lado, en la última década Blockchain se ha convertido en una de las tecnologías más útiles y democratizadas. Como resultado, muchas aplicaciones en una multitud de verticales ahora lo están adoptando. Para recapitular rápidamente, un Blockchain es una serie de bloques de información vinculados por hashes criptográficos que se distribuyen a través de una red de nodos. Cada uno de ellos tiene una copia local del blockchain y verifica los nuevos bloques al llegar a un consenso acordado. Por lo tanto, Blockchain se convierte en un registro público distribuido de información que es inherentemente inmutable, transparente y seguro. Así es como define esta nueva forma de almacenar e intercambiar información.

Siguiendo este potencial de crecimiento, se han desarrollado varias tecnologías de punta sobre Blockchain. Los contratos inteligentes (o Smart Contracts) son uno de esos. El concepto es básicamente predefinir reglas lógicas y acciones que se activarán dependiendo de los datos procesados dentro de Blockchain. Entre otros, nos permite usar los datos de Blockchain como entrada y definir acciones modulares, automáticas, instantáneas y libres de administración basadas en ella.

Este artículo ofrece una descripción general del tutorial relacionado disponible aquí en Github. Por lo tanto, aquí comenzaremos directamente desde el final, con una demostración de la solución y discutiendo brevemente la arquitectura en una segunda fase.

Smart Contracts

En esta demostración, el Smart Contract relacionado hace cumplir ciertas reglas que están relacionadas con las condiciones durante el transporte. Específicamente, recibir y evaluar datos de temperatura y humedad en un rango acordado y aceptable. Si el Smart Contract identifica que la telemetría está fuera del rango, cambiará inmutablemente a un estado OutOfCompliance y se buscarán las soluciones adecuadas. Por defecto, el contrato comienza en el estado Creado. Luego, a medida que transita por cada intermediario de la cadena, cambiará al estado En tránsito y finalmente terminará como Completado.

En el camino, el dispositivo envía lecturas que cumplen con todo el proceso de transporte, mientras que las contrapartes involucradas transfieren la responsabilidad hasta que se completa el transporte.

Presentemos la solución a través de un ejemplo. Una compañía farmacéutica “VitalPharma” requiere que sus productos, incluidas las vacunas, se envíen a cientos de farmacias en toda Europa. Dado que esos productos requieren una gestión de integridad sólida y un monitoreo de las condiciones, VitalPharma se está asociando con una empresa de entrega altamente confiable “delivery.it” especializada en el envío de dichos productos.

Para comprometerse con su confiabilidad, delivery.it garantiza un reembolso completo del monto del envío si no se respetan las reglas predefinidas. Al final de la cadena, el farmacéutico “Joe Bloggs” confirmará la recepción del paquete. Todos esos usuarios se enumeran en una instancia de Azure Active Directory que facilita su administración.

Cada contraparte puede iniciar sesión en la aplicación web para seguir el envío y tomar medidas. Aquí iniciamos sesión como VitalPharma y primero definimos las reglas del contrato inteligente:

El envío aparece como Creado:

Una vez que se realiza el envío mediante delivery.it, VitalPharma puede transferir la responsabilidad.

Al iniciar sesión con la cuenta de delivery.it, parece que ahora somos responsables del envío. El mismo proceso continuará hasta que el último elemento de la cadena acepte el envío.

Ahora viene la parte interesante. Si el Sens’it mide, por ejemplo, una temperatura fuera de control, esto es lo que sucede:

Dicho contrato cambia automáticamente a un estado OutOfCompliance.

Se pueden configurar alertas automáticas y soluciones como un reembolso:

Dichos mecanismos deberían ayudar a optimizar y automatizar el futuro procesamiento de datos de IoT.

Arquitectura

Comenzando con un diagrama simplificado del flujo de datos:

Si bien aquí abajo hay una imagen general de lo que realmente se implementa:

Las siguientes secciones profundizarán en los diversos elementos de la arquitectura, mientras que se puede encontrar información adicional en GitHub.

1. Escribe en Azure

2. Preparando los datos

Sigfox Sens’it envía algunos datos a través de la red Sigfox 0G. Luego, la nube de Sigfox lo empuja a través de una devolución de llamada HTTPS hasta Microsoft Azure IoT Hub.

Luego se solicita un conjunto de servicios de Azure. Primero usamos un Function App para analizar los datos en valores decimales de temperatura y humedad. Luego se recopila en un Service Bus que es responsable de enrutarlo a una Logic App.

Esta aplicación lógica tiene un objetivo simple: formatear los datos mencionados anteriormente en algo que Azure Workbench Blockchain pueda ingerir.

3. Empujarlo hacia el Blockchain

Dos servicios al consumidor están escuchando los mensajes entrantes en el Service Bus anterior. El primero es un Database Consumer que insertará automáticamente información de eventos en una base de datos SQL simple.

El segundo es un Data Ledger Technology Consumer responsable de reenviar los metadatos para que las transacciones se escriban en el blockchain. Transaction Builder & Signer ensambla las transacciones de blockchain en función de los datos de entrada relacionados. Una vez ensambladas, cada transacción se firma y se entrega al Azure Blockchain Service a través de un enrutador específico. Las claves privadas se almacenan en Azure Key Vault

4. ¿Cómo interactuar desde las WebApps?

Finalmente, Azure Workbench Blockchain proporciona herramientas de interacción plug and play, como una aplicación web de cliente y una aplicación de teléfono inteligente. Están conectados a Azure Active Directory para la administración de usuarios y roles.

IoT y Blockchain

IoT y Blockchain pueden ser una combinación interesante en muchos mercados verticales: Industria 4.0, Cadena de suministro, Venta minorista … mientras que el desarrollo de herramientas como Azure Workbench Blockchain permite implementar una prueba de concepto en solo unos días. Si está interesado en reproducir, pronto habrá más información disponible en Sigfox Build Platform.

Para finalizar, aquí discutimos sobre el uso de blockchain privado, sin embargo, creo que también podríamos imaginar otras aplicaciones basadas en blockchain públicas.

¡Consigue tu Sens’it!

Fuentes

https://github.com/Azure-Samples/blockchain

https://docs.microsoft.com/en-gb/azure/blockchain/workbench