Hackathon de IOTA: Red de carga de vehículos abiertos (Parte 2)

53
pasarela de pagos con criptomonedas

Esta es la segunda entrega que resume las experiencias del equipo ganador «PlugInBaby» durante el Hackathon de IOTA. En la primera publicación, describimos el proceso de generación de ideas. En este post, la miembro del equipo Rebecca Johnson entra en más detalles con respecto a cómo el equipo construyó el proyecto y qué es exactamente lo que logra.

Nuestro PoC descentraliza y democratiza el acceso a una red de cargadores de vehículos eléctricos al permitir a los cargadores transmitir sin costo su estado (fuera de línea, ocupado, disponible) a través de transacciones de valor 0 en la Tangle. Luego, usando una aplicación móvil, los usuarios que buscan una estación de carga pueden consultar en la Tangle utilizando transacciones de valor 0 para buscar etiquetas de estaciones disponibles. Pueden reservar un lugar de carga y reservar micro transacciones necesarias para pagar la electricidad, todo usando IOTA.

Usar la Tangle como base de datos hace que la solución sea bastante elegante. El protocolo para enviar datos y valores es esencialmente el mismo, lo que elimina la necesidad de una capa de procesamiento de pagos centralizada y permite que la ética DIY se extienda hasta el usuario final.

Este enfoque también es lo suficientemente flexible como para dejar espacio para la participación de las empresas de servicios públicos y otras partes interesadas, ya que el hardware y el software son de código abierto. Las mejoras son bienvenidas y cualquiera es libre de implementar la idea. El código se puede encontrar aquí.

Requisitos y Suposiciones

  • Nos limitamos a usar solo IOTA para implementar la funcionalidad de la base de datos. Esto conlleva las ventajas teóricas de la escalabilidad futura, la descentralización total y los costos de transacción cero para los mensajes enviados hacia y desde la Tangle, así como un mecanismo para la compra de electricidad de máquina a máquina.
  • Suponemos que la API y la interacción entre el cargador y la aplicación de automóvil están fuera del alcance del hackathon.
  • Los proveedores de la estación de carga deben enviar mensajes de estado para sus estaciones (libres, en uso, fuera de línea) usando 0 transacciones de saldos a la Tangle. Nuestro back-end proporciona esta capacidad a través de entradas de terminal. Como esto es solo un PoC, no construimos una API o UI para esta parte.
  • Un front-end basado en web, una conexión de back-end para la Tangle y una API para la comunicación entre los dos necesarios para construir. Ante esto, el equipo se dividió en dos grupos de 3-4 desarrolladores cada uno.

Back-End

La experiencia del equipo de PlugInBaby fue similar a la del equipo de Freedom Pass. Empezamos siguiendo este tutorial de Baltic Data Science y ganamos velocidad al utilizar algunos de los recursos de la sesión de preguntas y respuestas con Chris Dukakis de IOTA. Después de eso, nos conectamos a un nodo testnet y comenzamos a emitir transacciones.

Al igual que el equipo de Freedom Pass, también consideramos el uso de un nodo principal, pero el problema de cómo conectarnos con los vecinos finalmente fue un criterio decisivo. Esto fue en realidad debido a preocupaciones de seguridad. Uno de los miembros de nuestro equipo tenía una configuración Java Runtime Environment en una máquina virtual remota y consideramos la posibilidad de configurar una instancia del IRI. Al final, sin embargo, no nos sentíamos cómodos con los riesgos de seguridad que presentaba la conexión con nodos desconocidos.

A diferencia de los otros equipos, el equipo de «PlugInBaby» usó la biblioteca de IOTA Python para construir y conectar el back-end. La documentación para esta biblioteca es bastante escasa en comparación con la Biblioteca de JavaScript. Quisiéramos agradecer a Andreas Osowski, Lewis Freiberg y Chris Dukakis de IOTA por su apoyo las 24 horas para poner todo en marcha.

Nuestro miembro del equipo Lukasz Zmudzinski ha escrito una gran publicación de blog en su sitio que describe con mayor detalle los métodos de Python que usamos para leer y escribir en la Tangle. Utilizamos el marco web de Tornado y la biblioteca de redes asíncronas para este proyecto y escribimos nuestra propia API para comunicarnos con la interfaz.

 

Interfaz

El front-end fue escrito principalmente en JavaScript y utiliza server.js para Node. Para acelerar el desarrollo, comenzamos a usar un estándar / esqueleto para las aplicaciones web Node.js. Más tarde usamos bootstrap y AngularJS para mejorar el diseño y hacer que nuestra aplicación web esté lista para dispositivos móviles y sea receptiva.

Los usuarios pueden consultar en la Tangle para las transacciones de proveedores con estaciones gratuitas y también leer información dinámica sobre precios. El mecanismo de búsqueda usa información escrita en etiquetas mientras que la información de estado sobre la estación de carga y la latitud / longitud de la estación se escriben en el mensaje. Esta información se pasa a través de llamadas API al front-end para su interpretación en la interfaz de usuario.

Experiencia de Usuario

Paso 1: El usuario utiliza una aplicación de teléfono inteligente para consultar en la Tangle de las estaciones de carga disponibles.

Paso 2: El usuario selecciona una estación de carga del mapa. Cada estación tiene un precio dinámico que se muestra en tiempo real junto con el pin del mapa cuando se selecciona la estación.

Paso 3: El usuario conduce a la estación y le informa a la estación que han llegado enviando un mensaje a la Tangle.

Etapa 4: La estación de carga le dice a la aplicación que el automóvil está completamente cargado.

Paso 5: La billetera IOTA del usuario está cargada y la transacción está firmada por la semilla almacenada en la aplicación.

Paso 6: El cargador restablece su estado a disponible en la Tangle y todas las transacciones / mensajes están disponibles para verificación.

Lo que aprendimos

El PlugInBaby PoC demuestra la viabilidad de una aplicación de búsqueda y pago basada en IOTA para cargadores DIY basados ​​en IOTA, pero está lejos de estar lista para su uso fuera del laboratorio / hackathon. Surgieron varios problemas que deberán resolverse antes de que este sistema sea apropiado para uso público:

  • Las etiquetas solo permiten 27 caracteres que no serían suficientes para almacenar datos de latitud y longitud más un ID de transacción sin truncamiento. El equipo terminó usando el campo de mensaje para almacenar datos (ubicación + estado del cargador) mientras las etiquetas se usaban para almacenar un identificador de cargador con capacidad de búsqueda.
  • La velocidad es bastante limitada en el testnet. Específicamente, encontramos que los tiempos de confirmación de testnet eran bastante largos a altas horas de la noche (2-3 minutos) cuando menos usuarios estaban en línea ejecutando aplicaciones de prueba. Esto se debe al hecho de que cada transacción nueva debe aprobar otras dos transacciones. Este enfoque escala bien pero también requiere muchos nodos activos para enviar y aprobar transacciones. A medida que crecen tanto el testnet como el mainnet, este problema debería mitigarse.
  • Se requirió el almacenamiento en memoria caché de transacciones para hacer que la demostración se pueda usar dentro del tiempo de presentación de tres minutos asignado.
  • Si bien el apoyo del equipo de IOTA fue excelente, notamos que la documentación, particularmente con respecto a las bibliotecas phython, es bastante deficiente. Esto hace que el desarrollo sea un proceso lento de prueba y error.
  • La seguridad y la privacidad generalmente son preguntas abiertas dentro del ecosistema de IOTA. El equipo asumió que estos problemas están fuera del alcance de este PoC. Dicho esto, planteamos inquietudes sobre la privacidad con respecto a la posibilidad de uso indebido de API y la falta de privacidad a menudo durante el proceso de desarrollo. La documentación mejorada y los mensajes de error más descriptivos contribuirían en gran medida a facilitar el manejo de estos problemas.
  • Masked Authenticated Messaging (MAM), la capa de Transacción privada planeada y la integración de pruebas de conocimiento cero en el ecosistema de IOTA son áreas interesantes para nuevas investigaciones dadas las limitaciones actuales de IOTA en el área de seguridad y privacidad.

Conclusion

En resumen, el equipo aprendió mucho sobre la implementación de un caso de uso emocionante que realmente tiene sentido para IOTA. ¿Es esta la única manera de construir tal sistema? No. Hay muchas otras maneras de buscar, navegar y pagar la carga de vehículos eléctricos. Muchos sistemas centralizados listos para el mercado ya están funcionando. Nuestro PoC demuestra, sin embargo, que es posible resolver este caso de uso usando solo IOTA, lo que permite la posibilidad de un enfoque descentralizado escalable. Esto, a su vez, podría abrir el campo a muchos más jugadores y proporcionar un sistema común sobre el cual se basarían varias entidades.

Fuente: http://datarella.com/iota-hackathon-open-car-charging-network-part-2/

Comentarios

comentarios