IPFS o InterPlanetary File System, es un sistema de archivo descentralizado que busca garantizar la seguridad, privacidad y resistencia a la censura de tus datos.
El proyecto InterPlanetary File System o Sistema de Archivos Interplanetario (IPFS) es un curioso proyecto con un objetivo bastante claro: crear una red de computadoras de alcance global que permita el almacenamiento de información de forma completamente descentralizada, con una alta escalabilidad, y por supuesto, con una gran resistencia a la censura de cualquier tipo.
Puedes imaginarlo como una enorme red que contiene inmensas cantidades de información repartidas por todo el mundo y a la que puedes acceder de forma totalmente transparente y segura. Sin duda, el complemento perfecto para la cada vez más creciente Internet, cuyo alcance ahora llega incluso a los dispositivos electrónicos más pequeños como nuestros relojes, despertadores e incluso cafeteras.
IPFS, los inicios del proyecto
IPFS es una idea que nace de la mente de Juan Benet, un programador que fundó en 2014 la empresa Protocol Labs. Sin embargo, no fue hasta 2015, cuando Benet presentó al mundo IPFS. La idea es construir una red P2P que permita a quienes formen parte de la misma, almacenar y distribuir información de forma completamente descentralizada a lo largo y ancho del planeta. El sistema, funciona en base a la conocida tecnología de tabla de hash distribuida o DHT, la misma que es usada en el protocolo BitTorrent, del cual IPFS toma algunas funciones para su red P2P.
Desde entonces, IPFS ha sido un proyecto en constante desarrollo y en la actualidad se encuentra disponible la versión 0.26.0 de este sistema. Pese a que es una versión de desarrollo, IPFS actualmente permite el despliegue de muchas de sus funciones finales de forma estable, y muchas de ellas aún siguen en constante mejora dejando claro que es un sistema que ya podemos usar en la actualidad.
Un sistema de archivos para Internet
¿Por qué se creó IPFS? Pues bien, básicamente la creación de IPFS viene a resolver una necesidad de espacio de almacenamiento gigantesca que está en constante expansión con la actual Internet que tenemos. Se estima que, en 2019, se generaron en todo el mundo un total de 42 zettabytes de información. Eso es, 42 mil millones de terabytes de información adicionales a todos los datos que ya se han generado en años anteriores.
Pero el principal problema de estos datos es que terminan en manos de terceros que generalmente explotan los mismos para sus distintas actividades económicas. Por ejemplo, no es raro que empresas como Meta tome tus datos en su red social y los use para venderlos a terceros interesados en información que puede provenir de tus gustos o actividades, esto con el fin de crear perfiles que les permitan ofrecer otros productos y servicios. Puede sonar como algo inocente pero, no lo es. De hecho, esto es una violación a tu privacidad puesto que no solo tus datos en la red social son usados, sino que se rastrea toda tu actividad dentro e incluso fuera de la red, para que esta sea vendida a terceros.
Otras compañías como Google Drive por su parte, son capaces de analizar lo que escribes y guardas en sus servidores, y en caso de encontrar algo que “viole sus reglamentos” simplemente borrarán el mismo de sus servidores, sin darte el derecho a resguardar dicha información en otro medio. En pocas palabras, las grandes compañías de Internet usan tus datos para venderlos y practicar una censura intolerable en todos los sentidos.
Para solucionar este problema nace IPFS. La idea de IPFS es transformar la forma en cómo se almacenan los datos, dejando que estos estén completamente descentralizados, y el control de acceso a los mismos esté en tus manos en todo momento. No solo eso, IPFS permite que nuestro ordenador puede almacenar datos de una web y servirlos a quien los necesite. Pues bien, eso es IPFS, y sí no te equivocas, es parecido a lo que hace BitTorrent para compartir archivos, solo que, en este caso, el protocolo estaría integrado a aplicaciones y webs como las que usamos todo el tiempo, haciendo la interacción con IPFS completamente transparente.
No solo eso, con IPFS la capacidad de almacenamiento del mundo aumentaría de forma dramática. Y esto debido a que nuestros computadores se convertirían en parte de ese enorme disco de datos que almacenará información de todo Internet. Esto ayudaría a resolver (o disminuiría en gran medida) la necesidad de espacio de almacenamiento para hacer frente a la demanda de todo el mundo. Además, ayudaría a descentralizar la red, e incluso, nos permitiría guardar un historial completo de aquella información que nos interese en una red resistente y sin censura.
¿Cómo funciona IPFS?
IPFS es un sistema que funciona bajo el esquema “búsqueda por contenido”, es decir, cada vez que realizamos una búsqueda en IPFS, debemos decirle al sistema “qué buscamos” en lugar de decirle “dónde buscarlo”.
Examinemos por un momento qué significa todo esto, y para ello usemos como ejemplo el Internet actual. Cuando visitamos una web en Internet, lo que nuestro navegador hace es lo siguiente:
- Toma la URL o dirección y realiza una consulta DNS, para saber en qué dirección IP está ubicado ese servidor.
- Una vez tiene la dirección IP, el navegador realiza una petición de información al servidor y comienza a descargar la información.
- Nos muestra la información de la URL que hemos indicado.
Esta es una forma bastante simplificada de todo lo que sucede cada vez que usamos nuestro navegador web. Este tipo de funcionamiento se llama “búsqueda por ubicación”, y se llama así porque necesitamos conocer donde está “ubicada” la información para poder acceder a la misma. Esa ubicación es la dirección IP del servidor, y de allí parte aquella situación que nadie desea, si el servidor está caído, no podrás acceder a la información que buscas, porque la ubicación no está disponible.
Sin embargo, en el caso de IPFS, la “búsqueda por contenido” funciona de forma completamente distinta. De hecho, la podemos desglosar de la siguiente forma:
- Indicas al sistema qué contenido estás buscando.
- El sistema toma tu pedido de información y lo envía a la red, donde los nodos del sistema comenzarán a responderte. Además, dicha información está
protegida por cifrado, un sistema hash de datos y firmado digital, para evitar que cualquier persona pueda acceder al mismo sin el debido permiso. - Recibirás la respuesta de los nodos mostrándote las versiones del contenido disponibles en toda la red.
- Si eliges una opción, podrás acceder al contenido e incluso todo su historial, dado que si esa opción se ha desplegado es porque está activa en la red para el momento de tu solicitud.
Esto significa que IPFS hace búsquedas que son definidas por contenido, y en la que los nodos de la red responden. Por ejemplo, si quieres entrar a Bit2Me Academy en IPFS, solo bastaría escribir Bit2Me Academy, y aquellos nodos que almacenan información de esta web te mostrarán todo el contenido que tienen almacenado, pudiendo acceder al mismo en todo momento.
DHT, el punto de partida de IPFS
El punto de partida de IPFS es la tabla de hash distribuida o DHT. Esta función es la que se encarga de crear un hash único e irrepetible para cada uno de los contenidos dentro del sistema. No solo eso, es también la encargada de permitir crear un índice de búsqueda global para toda la red distribuida, asegurándose que el contenido de la red no esté duplicado y permitiendo redireccionar las búsquedas a los nodos correctos para que podamos acceder a la información cuando queramos.
En pocas palabras, DHT crea una enorme biblioteca de hashes únicos e irrepetibles que nos permite realizar una búsqueda rápida del contenido que deseamos. Para este sistema, IPFS usa el conocido hash SHA-256, el mismo que se usa en Bitcoin y muchas otras criptomonedas. ¿La razón? Es sencillo de implementar, seguro, y el hardware actual puede ejecutar los cálculos permitiendo que este trabajo exija poco poder de cómputo en la generación de los hashes.
Un DAG para manejar la red
Otra parte importante en el funcionamiento de IPFS es que su red está estructurada en una enorme DAG o Grafo Acíclico Dirigido. En este caso, el DAG de IPFS es específicamente un DAG Merkle, es decir, uno en el que cada nodo tiene un identificador único que es un hash del contenido del nodo.
El DAG Merkle usado es solo una modificación ligera a lo que sería una blockchain, donde cada bloque tiene un Merke Root y están resumidos los datos de dicho bloque. En este sentido, la construcción DAG ha sido elegida por sobre la blockchain por una razón técnica muy poderosa: IPFS se ejecuta de forma asincrónica y es más escalable. Además, es un diseño donde la inmutabilidad total no es su finalidad (aunque es posible configurar el sistema para que sea inmutable), y por supuesto, no hay necesidad de protegerse a ataques como doble gasto, ataque de 51%, entre otros.
Ante este panorama técnico, el DAG de IPFS está diseñado para permitir un redireccionamiento de contenidos y de búsqueda entre los nodos más eficiente. No solo eso, un Merkle DAG permite la creación de “historiales de cambio” que permiten rastrear el cambio individual de los archivos en distintos momentos, permitiéndonos navegar por los mismo sin problemas. De esta forma, podemos preservar no solo la última versión de una web, sino su historial completo desde que inició hasta su momento más actual. Adicional, esta característica permite la aplicación de tres importantes funciones:
- La primera es la conocida “deduplicación” que nos evita tener contenido duplicado en el nodo, y en toda la red.
- La segunda es conocida como “almacenamiento delta” en la que se crean pequeños ficheros que nos permiten saber que se ha cambiado exactamente de un contenido entre distintas versiones. Así, tomando un determinado contenido base y agregando los respectivos deltas podemos recrear un contenido más actual (o antiguo) que el contenido base que ha sido tomado.
- Finalmente, la tercera función es que este DAG permite que la red pueda participar en el acceso de los usuarios a una determinada información. Así, por ejemplo, si un dato está en 2 o más nodos, el usuario puede comenzar a descargar la información desde todas esas ubicaciones, mejorando el tiempo de descarga y respuesta general de la red.
Privacidad en IPFS
Ahora bien, la idea de almacenar nuestros datos en ordenadores repartidos por todo el mundo no es algo que guste a muchos. El peligro que esto podría suponer a nuestra privacidad es inmenso así que: ¿Cómo soluciona IPFS este problema?
Pues bien, en primer lugar, debes saber que todo en IPFS está dentro de una red pública. Así que, cualquiera puede acceder a la misma teniendo un cliente para ello. De forma que cada dato que pongas en IPFS formará parte del DHT y el Merkle DAG de la red, dejando claro que todo es accesible.
Esto es algo que puede solucionarse gracias a que IPFS es un sistema de software libre y cualquier persona o grupo de desarrolladores puede agregar esta función a la red, permitiendo anonimizar datos e incluso agregar criptografía avanzada para proteger los mismos de accesos no autorizados. Este de hecho, es el caso de varios proyectos que usan IPFS para su funcionamiento.
Casos de uso de IPFS
Ahora bien, conozcamos algunos casos de uso bastante llamativos de esta tecnología:
Filecoin
En plena fiebre ICO de 2017, y buscando una forma de financiar su idea, se lanzó la ICO de Filecoin, un proyecto hermano creado por Juan Benet y su empresa Protocol Labs. La idea de Filecoin, es crear un sistema de incentivos por el cual los usuarios de IPFS se sientan incentivados a almacenar los ficheros que otros desean almacenar. Filecoin permite a las personas alquilar espacio de almacenamiento que puede ser pagado usando el token FIL.
La historia de Filecoin comenzó en 2017, y no fue sino hasta este 29 de octubre de 2020, cuando salió finalmente su red. El lanzamiento del proyecto generó mucha atención y en este momento la red ya almacena cerca de 1,4 Exabytes de información. Además de una capitalización de mercado que superar los 1200 millones de dólares, y un coste de más de 29 $ por token FIL.
Audius
Audius es una plataforma para compartir música y audio diseñada para proporcionar a los artistas un vínculo directo con sus oyentes. Utilizando tecnología descentralizada, Audius puede garantizar los derechos de los artistas y el control de su propia música. Todo ello, a través de una plataforma resistente a la censura para la expresión y distribución de obras y composiciones artísticas. Para crear una plataforma operada y propiedad del usuario, era clave tener una red de almacenamiento en la nube distribuida como base para el sistema. Audius usa IPFS como el componente central de almacenamiento descentralizado en su misión de brindar a todos la libertad de compartir, monetizar y escuchar cualquier audio.
OpenBazaar
OpenBazaar es una plataforma de comercio electrónico de igual a igual en la que compradores y vendedores pueden participar de forma anónima y privada sin que los proveedores o cualquier otra autoridad central recopilen datos. La plataforma OpenBazaar es desarrollada por OB1, quien también crearon a Haven, una versión móvil de OpenBazaar que ofrece compras, chat y la capacidad de enviar criptomonedas de forma privada.
IPFS sirve como capa de almacenamiento de datos para OpenBazaar y Haven. En la red, los comerciantes y compradores pueden ejecutar nodos de almacenamiento, eliminando la necesidad de un servidor central. Al utilizar IPFS para crear esta red colaborativa, OpenBazaar permite a compradores y vendedores comerciar sin los riesgos. Riesgos como la recopilación de datos centralizada o la amenaza de que se piratee su información personal.
OB1 se ha estado construyendo con éxito en IPFS desde 2015. La red peer-to-peer que IPFS habilita permite al equipo proporcionar una plataforma donde las personas intercambian bienes libremente. Además de permitir que OB1 sea solo un proveedor de tecnología. Esto significa que no un vendedor de productos, «propietario» de la red o una parte en asuntos comerciales entre pares.
Pros y contras de IPFS
Entre los pros de IPFS podemos mencionar:
- El sistema de almacenamiento está completamente descentralizado.
- La red está construida con el fin de que sea altamente escalable.
- La red puede resistir ataques de denegación de servicio entre otros debido a que se encuentra totalmente descentralizada. De esa forma, se garantiza el acceso oportuno a la información en todo momento.
- Su uso es completamente gratuito, y el código fuente está disponible bajo licencias de software libre.
- Es extensible, lo que permite que cualquier persona pueda adaptar nuevas funciones sin mayores problemas. Por ejemplo, se pueden agregar módulos de privacidad, conexión a TOR, I2P, entre otros.
Por sus contras podemos mencionar:
- Es un desarrollo aún en evolución, por lo que su uso en producción aún no es muy extenso.
- Es complejo de usar para usuarios inexpertos en este tipo de sistemas.
- No cuenta con extensiones de privacidad por defecto.
- A diferencia de proyectos como SIA, IPFS no ha sido diseñado con un modelo de incentivos en su núcleo. Debido a ello, han debido desarrollar proyectos separados como Filecoin que están limitados en su integración.