Hablemos sobre una de las tecnologías más avanzadas y extendidas para retención de información del siglo XX: la libreta de anillas con bolígrafo metido en el gusanillo que ponían muchas de nuestras abuelas al lado o debajo del teléfono para apuntar números de teléfono o notas varias.
Bromas aparte, pensemos seriamente en cómo se tomaban estas notas. En general, apuntábamos un número de teléfono, el nombre de la persona en cuestión en la primera página un día. Otro día, otro número. Después un recado. Pasábamos de página. Tomábamos otra nota, y así sucesivamente. Hablamos de libretas que podrían ser de tamaño folio o cuartilla y de unas 80-100 páginas. Cuando pasaba el tiempo e íbamos usando la libreta, acumulando notas, números, historias… encontrar cualquier cosa era una tortura. Ponte a pasar páginas, buscando dónde lo habías apuntado, puesto que apuntábamos las cosas de manera secuencial, como venían; buscando a ver cómo lo habías apuntado porque, obviamente, la libreta no es que fuera un método de almacenamiento muy estructurado; y ya, rizando el rizo, que no estuviera «en la libreta vieja».
Todo esto mejoró sustancialmente con la introducción revolucionaria de las agendas de teléfonos con las letras en el lateral, de manera que tenías a tu disposición un método de almacenamiento más «estructurado» y sabías que si tenías que buscar el número del «tío Miguel» ibas a la «T» o a la «M». Incluso podías tener una sección de notas. Básicamente, estas libretas te dotaban de un método ágil para introducir y buscar información.
Con Blockchain y las Distributed Ledger Technologies (DLT) (usaremos estos términos de manera intercambiable) nos pasa algo similar. Las implementaciones disponibles de Blockchain, en general, no están pensadas para ser un medio de almacenamiento estructurado ni de donde sea sencillo recuperar información. No es que lo dificulten, pero como nos pasaba en la libreta, la información se almacena de manera secuencial , conforme se va introduciendo. Los mecanismos de búsqueda disponibles, habitualmente, funcionan recorriendo esa libreta o blockchain secuencialmente buscando el dato en cuestión, pero no tenemos algo potente para realizar búsquedas. Además, el modo en que se almacena la información en blockchain, tampoco ayuda. En estos casos, nuestra tecnología-punta-agenda-de-teléfonos-con-letras son las bases de datos. Una base de datos permite almacenar datos de manera estructurada, cuenta con motores de búsqueda potentes, lenguajes estandarizados, como SQL. Es una herramienta pensada con el propósito de almacenar, buscar y recuperar datos.
¿Qué sucede? Que blockchain nos da otras funcionalidades que sí que necesitamos y que no nos da una base de datos. Ejemplos típicos de estas funcionalidades son la inmutabilidad o el no repudio. Es decir, la información que se almacena en una blockchain NO puede ser modificada ni alterada y si figura que esa información ha sido introducida por el tío Miguel, el tío Miguel no puede decir que no fue él quien introdujo dicha información.
Teniendo en cuenta las ventajas de una y otra tecnología, durante los últimos años en ITI hemos estado trabajando en una tecnología de sincronización de bases de datos y blockchain. ¿El objetivo? disponer de una tecnología que permite almacenar información de manera inmutable, sin repudio y otras garantías mientras que aprovechamos los motores de búsqueda de las bases de datos para poder recuperar esa información de manera ágil y sencilla o mecanismos comunes para poder introducir información en nuestro sistema.
Este ha sido el motivo central de parte de nuestro trabajo durante los últimos años, en proyectos como DELTA, ÉPSILON o, ahora, DLT4AITOYS. El esfuerzo ha sido grande, puesto que era necesario ser capaz de capturar esa información desestructurada de blockchain, introducir eventos que nos permitieran estructurar la información en una base de datos, crear drivers que nos permitieran trabajar, indistintamente, con múltiples bases de datos y distintas redes blockchain, y diseñar interfaces y mecanismos que permitan utilizar lenguajes habituales para la introducción y consulta de información, como por ejemplo podría ser SQL.
Esto ha resultado en una herramienta completamente escalable en cuanto a tecnologías, donde tenemos un cuerpo central con nuestro motor y tantos drivers para bases de datos y redes blockchain como pudiera ser necesario, pudiendo desarrollarse bajo demanda. La figura que mostramos a continuación da una idea de esta estructura, donde DELTA Core sería nuestro motor.
Este año, en el marco de DLT4AITOYS, nuestros esfuerzos se han centrado en dos líneas principales. La primera y principal, crear drivers para bases de datos de tipo SQL. Hasta ahora habíamos desarrollado un plugin para MongoDB, de tipo NoSQL y que, por tanto, facilitaba el almacenamiento de datos provenientes de blockchain, al no requerir una estructura. Ahora hemos dado el salto a PostgreSQL, lo que nos fuerza a realizar esa estructuración, pero también mejorará sustancialmente la calidad de nuestra solución. Por otra parte, estamos refinando nuestra interfaz de sincronización a nivel de lectura y trabajaremos en integrarla en un potencial caso de uso con AIJU, nuestros compañeros de viaje en DLT4AIToys.
Nuestro objetivo a la conclusión de este proyecto es disponer de un prototipo funcional que:
- Permita la sincronización con bases de datos libres de esquema, MongoDB en este caso, y con bases de datos con un modelo de datos definido, como las relacionales (y, en particular, PostgreSQL).
- Permita la sincronización desde redes DLT como Quorum y Hyperledger Fabric.
- Permita la emisión de transacciones sencilla de tipo ACID contra estas dos redes DLT.
Conseguir esto permitirá que profesionales que necesiten interactuar con una red Blockchain o DLT no necesiten aprender una nueva tecnología cada vez, salvo que tengan que desarrollar smart contracts complejos, sino que podrán seguir interactuando contra sus bases de datos habituales o utilizando lenguajes de tipo SQL, cayendo la complejidad de la interacción con la red DLT en nuestro tejado.
De esta forma, quienes necesiten interactuar con una red Blockchain o DLT podrán seguir interactuando contra sus bases de datos habituales o utilizando otros mecanismos comunes. Así, quienes necesiten llamar por teléfono, podrán encontrar el teléfono de su «tío Miguel» fácilmente. Un método de almacenamiento más estructurado y un método ágil para introducir y buscar información.