‘OpenVallsChain’, portal de datos abierto distribuido. Caso práctico de aplicación de blockchain en la AAPP Local

Posted on 165 visualizaciones 0 comentarios

Descripción corta:

El proyecto Open Valls Chain nace con el objetivo de proveer a la ciudadanía de Valls y al empleado público un conjunto de datos estructurados y interoperable.

El ayuntamiento de Valls está inmerso en un proceso de transformación digital y el portal de datos abiertos es una de las herramientas utilizadas para visualizar este proceso y entregar valor a través de la publicación de datos.

La solución, a parte de presentarla de manera centralizada (portal de datos abiertos estándar), se presenta y publica de manera distribuida, utilizando tecnologías de registro distribuido (blockchain)

Esto hace que proporcionemos los conjuntos de datos abiertos de forma persistente en local y al mismo tiempo registrados en un red distribuida de manera inmutable. Se registran todas las actualizaciones de datos y además se publica el propio recurso (dataset) de forma distribuida.

Se utiliza este proyecto para dinamizar y modernizar las operaciones del departamento de TI, desplegando servicios en una arquitectura flexible de contenedores. Introducimos en este proyecto metodología de desarrollo DevOps.

Adicionalmente se quiere mejorar el servicio de Transparencia, automatizando el proceso de publicación.

Fecha de elaboración del texto:

Noviembre 2019

Autor:

  • Ricardo González Mas. Jefe de Servicio TIC

Administración / Proveedor que lo propone: Ajuntament de Valls (www.valls.cat)

Área responsable del proyecto: Departamento de Sistemas de Información y Comunicaciones

Estado del Proyecto / Caso en la fecha del alta: En producción desde el 13 de Noviembre de 2019

Carácter innovador:

El proyecto se ha desarrollado para proveer por primera vez en el ayuntamiento de Valls ( y quizás en la administración local del estado) un servicio público distribuido, en el que la no dependencia de una entidad centralizadora que publica y mantiene la información, entrega un valor al ciudadano o al consumidor de datos superior al que tradicionalmente se aporta:

  • Resiliencia de datos: la publicación de manera distribuida asegura la disponibilidad del dato.
  • Persistencia y inmutabilidad: Los datos no pueden cambiar. Una vez se adquiere el compromiso de publicación, estos datos permanecen publicados de manera inmutable.
  • Trazabilidad: Se puede controlar todos los eventos de publicación de datos, evidenciando el origen de la publicación (ajuntament de Valls) y ‘notarizando’ el histórico y la secuencia de publicación
  • Distribución: Publicamos las evidencias de publicación en una red blockchain pública y el dato propiamente a través de un servicio de almacenaje distribuido P2P (IPFS)

Todas estas características hacen que en la provisión de datos se ‘empodere’ al ciudadano, en el sentido que él es el que decide acceder a la información cuando y como quiere, sin posibilidad que la administración publicadora pueda deshacer este compromiso de publicación o modifique la información entregada.

Problemática:

Hasta ahora, los portales web, entre los que se incluyen los portales de datos abiertos, son servicios centralizados: estos pueden cerrarse en cualquier momento. Si el portal ‘cae’, el acceso a los datos publicados es imposible.

La mayoría de servicio públicos digitales en entorno web se acogen al modelo A, centralizado. Si evolucionamos el modelo, publicaríamos en un sistema descentralizado (asimilable al cloud computing). La propuesta es pasar al modelo C, totalmente descentralizado, en el que no se depende de un nodo central (A) o de sistemas autónomos dependientes de un nodo central (B)

También existe la problemática de segurizar la manera de probar el origen de los datos, aunque este punto se pude solucionar con una autoridad de certificación y un sello de tiempo por cada publicación. Pero volvemos a depender de un tercero centralizador que nos certifique.

Por último, los usuarios tampoco saben qué cambios se han producido en un recurso de datos publicado.

Otro elemento central del  proyecto es poder proveer contenidos autogestionados. Esto significa, que no hay intervención humana en la publicación. Una vez se programa qué publicar y la periodicidad, el portal se auto-abastece.

La solución por tanto debe cumplir:

  • Descentralización por defecto
  • Evidencia de la procedencia del dato publicador
  • Registro de cambios en los recursos publicados
  • Almacenamiento persistente y distribuido en nodos descentralizados, incluso en nodos que pueda disponer el propio cliente consumidor de datos.
  • Autogestión de contenidos

Solución planteada:

La solución planteada se basa en una arquitectura abierta desarrollada sobre productos de código abierto.

El diseño y desarrollo de la solución ha sido realizado íntegramente por el personal del departamento de Sistemas de la Información y Comunicaciones del ayuntamiento de Valls.

Como esquema principal de la solución tenemos los diferentes elementos:

1) Fuentes de información: Conjunto de orígenes de datos que la organización (Ajuntament de Valls) quiere consumir y publicar. Entre los diferentes orígenes de datos tenemos:

  • Sistemas de información departamentales: servicios económicos, registro, contratación …
  • Bases de datos
  • Sistemas ad-hoc: Estación meteorológica
  • Otras web: otros portales de datos
  • etc

2) Procesador de datos (‘broker’). Para ello utilizamos la herramienta ‘Logstash’. Esta herramienta forma parte del ‘ELK Stack’ (www.elastic.co)  y habitualmente se utiliza para proceso de logs.

En nuestro caso, se convierte en la interfaz de ‘ingestión’ de datos, ‘proceso’ y ‘publicación’, a través de las 3 fases de trabajo de la herramienta:

Este elemento de software es el que estandariza el proceso de publicación de datos, definiendo el flujo de información por software. Esto quiere decir, que todo queda definido en un fichero de configuración (YML)  por recurso a publicar: origen de datos, proceso, salidas y periodicidad de publicación. Nos permite poner el foco en la configuración y no en la herramienta propiamente.

Como salidas al proceso de publicación tenemos el portal centralizado de datos (3) y la red de registro distribuido (4)

3) Portal centralizado de datos: Utilizamos el software de código libre ‘CKAN’ (https://ckan.org/ ). Este portal nos provee de las funcionalidades básicas que debe tener un portal de datos abiertos y asegura un evolutivo acorde a los estándares de mercado.  El elemento principal para interactuar con el portal es la API, que servirá para crear el contenido de manera dinámica, a cada llamada del intermediario (2)

4) API de intercambio con red distribuida. Se ha desarrollado un API para interactuar con la red de registro distribuido. Esta API, basada en Nodejs, recibe las peticiones del intermediario (2), gestiona la publicación de la información a la red blockchain (Ethereum) a través de un Contrato Inteligente y distribuye la información en una red de almacenaje distribuido (IPFS)

Una vez transacciona con la red distribuida, para dejar evidencias del proceso, se publica en el portal centralizado (3) información sobre las diferentes transacciones realizadas.

Todos los elementos de la solución están desplegados en producción usando tecnología de contenedores ‘Docker’ (www.docker.com). Esto nos ha proporcionado facilidad en el despliegue y una mejora del mantenimiento  de la solución.

Detalles de la solución:

Como se ha explicado en el apartado anterior se destacan 3 elementos: intermediario de datos (Logstash), portal de datos abierto (CKAN) y API intermediaria con la red de registro distribuido.

Nos centraremos en el apartado diferenciador del proyecto, la API de intercambio con la red distribuida.

La API es el mecanismo para interconectar los diferentes sistemas de forma estándar:

  • CKAN, a través de la API para consultar información de los recursos y para actualizar el portal
  • Logstash: La salida de este intermediario activa la API para comunicar con el entorno Blockchain
  • Redes distribuidas: Transacciona con Etehreum a través del ‘Smart Contract’ desarrollado y publica el dato propiamente en una red IPFS
  • REST: LA API no tiene estados, interfaz uniforme, estandar http
  • Nodejs: ExpressJs, Body-Parser. Permite desarrollo rápido de aplicaciones tipo API utilizando javascript

El esquema de este elemento de software es:

Los clientes interactúan con al API y esta transacciona con los diferentes elementos de la solución.

Centrándonos en la comunicación con la red blockchain, el esquema de publicación es el siguiente:

El esquema presenta el proceso de publicación:

  1. La aplicación distribuida, en este caso la API, publica en la red Ethereum. El identificador (wallet) que publica es: 0x9EcA25ee04FDCc9d9CDFF377aa8da019Dba38437 que es único en la red blockchain Ethereum y identifica al emisor, en este caso el Ajuntament de Valls.
  2. Para publicar en la red Ethereum se utiliza el Smart Contract identificado por 0x2a36487e0a6e4593b4b1312ed4c095f3290693bb . Este software, que se ejecuta de forma distribuida en la red blockchain mantiene las interfaces de consulta de datos / actualización. La información que se guarda es la siguiente:

Una organización contiene información de identificación y datasets publicados.

Cada dataset es un conjunto de recursos  y el recurso, es propiamente, lo datos (fichero de datos) que queremos publicar. Para visualizar un ejemplo podemos mostrar esta información:

La Organización (Ajuntament de Valls), publica el Dataset “Registro de Facturas”, el recurso “Registro de Facturas de 2019”.

La red Ethereum no está diseñada, al menos en la versión actual, para almacenar conjuntos grandes de datos. Un recurso de datos puede consistir en un fichero con miles de entradas, de orden de magnitud de kb o Mb. Almacenar el fichero en la red blockchain no es escalable, por los costes de transacción y el rendimiento de la propia transacción. Por ese motivo, se ha utilizado un servicio complementario IPFS (Interplanetary File System https://ipfs.io)

IPFS funciona con identificadores únicos de ficheros inmutables dentro de la red de pares que forman los nodos P2P de la red. Esto quiere decir que no existen duplicados en la red y que cada cambio de un fichero, genera un nuevo identificador.

Por cada recurso de datos a publicar, se genera este identificador único. Este identificador nos permite acceder al recurso de manera unívoca. En la red Ethereum publicamos este identificador, de manera que dejamos constancia del dato en la propia red distribuida.

Nota: En la implementación, usamos una red pública abierta Ethereum, pero no la productiva, sino una red de test llamada ‘Ropsten’. El motivo principal son los costes de transacción en la red Etehreum de producción. Para validar el modelo, es suficiente usar la red pública de test, puesto que permite acreditar perfectamente todas las transacciones realizadas y nos ayuda a validar el modelo distribuido. Otro motivo de peso es la dificultad para contratar la adquisición ‘criptomoneda’ y explicarlo dentro de la organización sin morir en el intento…

Para acreditar las transacciones que realizamos en la red Etehreum podemos utilizar el servicio de acceso público ‘Etherescan’ (https://etherscan.io)

Accediendo a https://ropsten.etherscan.io/address/0x9eca25ee04fdcc9d9cdff377aa8da019dba38437  se detallan todas las transacciones sobre la red que estamos realizando:

Si se accede al detalle de una transacción (Tnx Hash) se detalla información sobre la comunicación con el Smart Contract, incluyendo los datos publicados.

De igual forma, cualquiera que tenga un nodo IPFS podrá recuperar cualquier recurso de datos publicado. Para validar públicamente esta información, podemos utilizar el Gateway Público de IPFS y recupera cualquier dato publicado (https://ipfs.io/ipfs/identificadorpublicado)

Para evidenciar esta información en el portal centralizado, se actualiza en la descripción del ‘Dataset’, información sobre la publicación en la red distribuida, para dejar evidencias accesibles sobre estas transacciones:

El producto final es el portal de datos abiertos centralizado, que se ha publicado bajo el dominio:

https://dadesobertes.valls.cat

 

Este portal es lo que denominamos ‘front-end’ y nos da acceso centralizado a los datos (back-end). Estos datos estan publicados de manera centralizada (el propio portal de datos) y de forma descentralizada (en Ethereum + IPFS). En caso que el portal centralizado no estuviese disponible, el acceso a los datos siempre se podría realizar interactuando con el Contrato Inteligente sobre la red Ethereum.

Para completar la prueba de servicio público distribuido, se ha publicado un front-end distribuido web con funcionalidades básicas.

Para ello hemos utilizado el servicio IPNS (Inter-Planetary Name System) que nos proporciona el framework IPFS. Este servicio de nombres resuelve la problemática de tener contenido inmutable. Bajo un link invariable, vamos publicando el contenido web (que puede cambiar, manteniendo siempre el link inicial operativo) Esta URL, a través del gateway público de IPFS.io es: https://ipfs.io/ipns/QmS4sKXTmxgMiU3E6AJaFbxw15NaG9jNvm4y5yo8resXo7/

Cualquier usuario que tenga un cliente IPFS podría disponer de esta propia web en local, accediendo al recurso identificado por QmS4sKXTmxgMiU3E6AJaFbxw15NaG9jNvm4y5yo8resXo7

Igualmente, podemos vincular esta url a un dominio estándar de internet, donde publicaremos el front-end de forma distribuida. La url de acceso es http://open.vallschain.io

Es una prueba de concepto para la publicación de servicios web distribuidos, sin la funcionalidad del portal centralizado (CKAN), pero publicando y actualizando los enlaces a los datos publicados en la red distribuida (Ethereum y IPFS)

Ventajas

Se cumplen los objetivos planteados en la definición de alcance del proyecto:

  • Portal de datos abiertos
  • Publicación automatizada (definida por software)
  • Publicación de datos de manera centralizada y distribuida
  • Validación de la tecnología Blockchain
  • Generación de conocimiento entorno a esta tecnología y aplicabilidad en la administración local
  • Mejora imagen del departamento de TI y ayuntamiento entorno al proceso de transformación digital de la organización

Financiación: Recursos propios

Dificultades y costes: 

  • No existencia de referentes que utilicen tecnología de registro distribuido aplicado a la publicación de datos.
  • Dispersión de información para el desarrollo. Formación y auto-formación
  • No disponer de redes públicas distribuidas para realizar este tipo de proyectos.
  • Comunicación interna y externa: explicar bien el proyecto y los beneficios del uso de tecnología de registro distribuido

Requerimientos técnicos / tecnológicos, personales, inversión…

  • Recursos propios, personal interno del departamento
  • Herramientas open source. Tecnología abierta

Contacto: Ricardo González Mas

Cargo: Jefe Servicio TIC

Teléfono: 977.63.60.18

Correo electrónico: rgonzalez@valls.cat

Dirección: Plaça del Blat,1. 43800. Valls. Tarragona

Desde el 25 de mayo hemos actualizado nuestra forma de comunicarnos contigo debido a la entrada en vigor del Reglamento General de Protección de Datos (RGPD).

Si no has recibido ningún correo nuevo o quieres comenzar a recibirlos, suscríbete y recibe gratis en tu correo nuestro boletín mensual con toda la actualidad del sector público.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *