miércoles, febrero 09, 2022

Blockchain & Smart Contrats: El Internet descentralizado y el almacenamiento Off-Chain con IPFS

Durante la serie de Smart Contracts y Blockchain hemos visto diferentes maneras de descentralizar parte de la lógica de una aplicación, pero los Smart Contracts y la tecnología Blockchain no son la única manera de hacerlo. En sus inicios Internet podría haberse considerado descentralizado puesto que solo corría en algunos ordenadores distribuidos por unos pocos garajes y salas de universidades del mundo. Con el paso de los años y la creación de centros de datos y la llegada del “Cloud ComputingInternet se ha ido centralizando hasta hoy día en el que un par de empresas prácticamente poseen Internet.

Figura 1: Blockchain & Smart Contrats: El Internet descentralizado
y el almacenamiento Off-Chain con IPFS

Con el resurgimiento de la tecnología Blockchain en 2013 volvió la idea de descentralizar Internet, para tener así una red mundial resistente a la censura en el que los dueños de los datos tuvieran el control de verdad sobre ellos. Y desde entonces se han dado grandes avances como el surgimiento de redes sociales descentralizadas y Open Source, protocolos para la descentralización de internet como el proyecto DUST-RSS para usar PGP e P2P para tener blog serverless sin censura, los portales web serverless distribuidos con Osiris SPS o el archi-famoso hoy en en día IPFS que vamos a ver en esta serie

Redes sociales descentralizadas

Está claro que el paradigma de hoy día que siguen la mayoría de redes sociales es el de la WEB2.0 un modelo en el que rige la centralización y el comercio de los datos del usuario, en el que esté casi no tiene ningún control sobre cómo se maneja su propia información. En la actualidad tenemos el paradigma de WEB3 en el que gracias a la tecnología Blockchain y a los Smart Contracts pueden crearse “fácilmente” plataformas descentralizadas. Sin embargo no ha sido del todo necesaria esta tecnología para crear redes sociales de este tipo véase el ejemplo de las siguientes, de las cuales algunas incluso surgieron antes que los smart contracts.

Mastodon: Esta red social es totalmente Open Source además claro de ser descentralizada dada la arquitectura que tiene. La estructura que sigue es muy parecida a la de nodos entrelazados además de que implementa el protocolo Activity Pub, un protocolo open source para la descentralización de servicios.

En esta red cada nodo puede ser alojado en un servidor normal o en tu mismo pc y da igual al nodo que te conectes, ya sea un gran servidor o tu propio ordenador estarás conectado con todos los demás.

Diaspora: Surgió alrededor de agosto de 2012, aunque sus creadores empezaron con ello en 2010. Sus tres ideas claves como medio de conexión social son: libertad, descentralización y privacidad(donde tú eres el dueño de tus datos), asimismo también es Open Source (repo). 

 
Para lograr su descentralización siguen una arquitectura similar a la de Mastodon, solo que en este caso en vez de usar nodos usan pods, que son servidores auto alojados a la hora de ejecutar la app.

Matrix: Fue creada en 2019 y se definen a sí mismos de la siguiente manera “Matrix is an open source project that publishes the Matrix open standard for secure, decentralised, real-time communication.

Figura 4: Representación gráfica del funcionamiento de Matrix

Proveen de un gran SDK para desarrolladores con el fin de que estos creen diferentes apps y web que funcionen sobre su infraestructura, la cual es descentralizada también y que funciona de manera similar a los nodos de la blockchain en los que se va replicando toda la información en tiempo real.

Block Square: Hace unas semanas Jack Dorsey dejó su puesto de CEO de Twitter por continuar su proyecto personal, en su momento se llamaba Square y tenía como objetivo ser una red social descentralizada que ofreciera servicios SaaS.

Figura 5: Logo de las empresas Square y Block

Pero ahora con su salida de Twitter ha surgido Block que será un conglomerado tecnológico que aúne Square, Cash app, Spira y Afterparty con su reciente adquisición para poder operar transacciones en Europa.

Almacenamiento Descentralizado

Si has leído alguno de mis anteriores artículos sobre Smart Contracts sabrás que a la hora de crear uno es muy importante optimizar al máximo posible el almacenamiento que va a utilizar puesto que existen unos límites que no son rebasables y todo aquello que se almacena en la Blockchain tiene un coste y no suele ser bajo.
Teniendo esto vemos que es prácticamente imposible montar una red social completamente descentralizada en la que todos los datos se guarden en la propia Blockchain y si aun así fuera posible a día de hoy los costes serían inasumibles.

Figura 6: Entender e investigar BlockChain & BitCoin
de Felix Brezo y Yaiza Rubio en 0xWord

Por ello existen soluciones Off-Chain (fuera de la propia cadena de Blockchain) que se encargan de almacenar datos de manera descentralizada asegurándonos que los archivos subidos son inmutables. Permitiéndonos así delegar parte del almacenamiento a otros servicios que no sean la Blockchain sin tener que romper los principios de la descentralización en nuestra aplicación.

IPFS (Inter Planetary File System)

Un buen ejemplo de almacenamiento Off-Chain es IPFS o "Inter Planetary File System", un sistema que permite guardar archivos en su red descentralizada para que estos estén siempre accesibles. En el sitio web oficial se definen como:

“A peer-to-peer hypermedia protocol designed to preserve and grow humanity's knowledge by making the web upgradeable, resilient, and more open.”

A un alto nivel cuando se sube un archivo al sistema este separa tu archivo en pedazos más pequeños y a cada uno le asigna un identificador único después a cada uno lo envía a diferentes nodos de la red que se encargaran de almacenarlos.


Cuando se requiera un archivo del sistema este pedirá a los diferentes nodos que envíen las diferentes partes que almacenan con el identificador único que antes nos dio. Además cuando un nodo descarga u observa un fichero al completo lo copia y lo cachea para que así próximas veces el archivo esté disponible más rápidamente. Luego cuantas más veces sea accedido un archivo más rápidamente estará disponible desde los diferentes nodos de la red, con lo que se crea una especie de servicio CDN (Content Delivery Network) en el que los archivos más “populares” son aquellos serán más rápidamente accesibles.

Figura 8: Estructura de almacenamiento

Los archivos una vez subidos a la red son inmutables y por lo tanto resistentes a la censura y al cambio. Y lo más interesante aún es que para subir un archivo a la red simplemente hay que correr su programa en el ordenador o utilizar algún servicio como Infura que nos cobrará 0.2 dólares/GB. Estas son unas sumas ridículas si la comparamos con la cifra de 76.000 dólares/GB que cobra Ethereum a día de hoy.

Figura 9: El almacenamiento distribuido de IPFS

Por supuesto, esta es una explicación del funcionamiento de IPFS hecha de una manera muy abstracta y a alto nivel, para aquellos que queráis entender más en profundidad cómo funciona el sistema os dejo aquí el enlace del whitepaper original de IPFS. Hoy día cada vez son más los protocolos y redes como IPFS que facilitan la descentralización de las aplicaciones y sus datos pero aún falta mucho camino y tecnologías para que internet pueda ser descentralizado pero quién sabe qué nos deparará el futuro ;)


Si tenéis cualquier duda con algo de estos artículos sobre el mundo de la Web3 estaré encantado de responderos tanto en mi perfil de MyPublicInbox como en mi cuenta de Twitter (aparece en mi perfil de MyPublicInbox). Nos vemos en los siguientes artículos.

Autor: Chema Garabito. Desarrollador Full-Stack. Ideas Locas Telefónica CDO.

No hay comentarios:

Publicar un comentario