Texto publicado por Gabriel Abraham Almeida Vargas

Os presento IPFS, una tecnología que puede revolucionar Internet... O a lo mejor no

IPFS (InterPlanetary Filesystem) es una nueva tecnología que permite alojar archivos y páginas web enteras en el lugar en el que siempre debieron estar. Sí, lo habéis adivinado, ¡en los ordenadores de los demás! Esta tecnología pone fin a la arquitectura cliente-servidor, y potencia el uso del P2P al máximo, combinando lo mejor del protocolo BitTorrent y el sistema de almacenamiento de los repositorios Git. Con IPFS, todos somos clientes y servidores al mismo tiempo, así que si el servidor de una supuesta página web se cae... la página sigue funcionando porque se ha replicado en varios ordenadores.
En IPFS las direcciones se crean basándonos en el contenido, y no en la ubicación del elemento. Cada archivo o carpeta tiene una cadena identificativa única (hash), y esta cadena cambia si el archivo en cuestión cambia. Del mismo modo, 2 archivos idénticos subidos por 2 personas distintas tendrán exactamente la misma cadena identificativa.
A modo de concepto, este sería un resumen muy resumido. No voy a entrar en configuraciones, tipos de almacenes, arquitecturas y comunicaciones en la red, aunque lo estoy investigando a fondo y cada día aprendo un poquito más.
¿Qué ventajas tiene frente a otras tecnologías P2P?
La principal, las pasarelas http. Incluso si no te instalas IPFS, puedes descargar archivos alojados en su red si conoces el identificador. Por ejemplo, aquí va uno que todos me pedís mucho: http://ipfs.io/ipfs/QmZUxsNnisUeHDm6H4WSdswxF7XAr4JFHsybYTig8M9zd2/windo...
Al pulsar ese enlace, la web principal de IPFS pregunta dónde está el archivo. Alguien en la red le contesta que está en mi ordenador. La web se conecta a mi ordenador, recupera el archivo y se lo pasa a quien lo descarga... la primera vez. La segunda vez, como ya lo tiene, no me lo pide a mí, sino que directamente lo sirve mucho más deprisa.
Algo que también me gusta mucho es que no hay sistema de recompensas, ni hay que tener el ordenador encendido todo el día, ni ceder una cantidad de espacio fija en el disco. Puedes hacer lo que quieras, y te beneficias igualmente de la red. Aunque se recomienda, tampoco es necesario abrir puertos concretos, el sistema funciona exactamente igual!
¿Desventajas? No hay cifrado (o yo no lo he visto, por lo menos). Tus archivos se parten en bloques y se distribuyen en distintos ordenadores, pero dichos bloques no se cifran más allá de lo que hace el protocolo Git. El mecanismo de funcionamiento por defecto, además, copia cada archivo que se añade dentro del repositorio, por lo que consume espacio y duplica datos. Esto último va a cambiar en el futuro, pero está en fase experimental.
Aunque son pocas las webs construidas sobre IPFS, a lo mejor nos podemos encontrar con alguna, así que vamos a ver cómo aprovechar el potencial de la red. Para ello, necesitamos un par de componentes que vamos a instalar, configurar y olvidar que existen:

* IPFS Desktop para Windows: https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.11.4/...
* Para Mac: https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.11.4/...
* IPFS Companion para el navegador. Firefox: https://addons.mozilla.org/firefox/addon/ipfs-companion/
* Chrome, Edge y algunos más: https://chrome.google.com/webstore/detail/ipfs-companion/nibjojkomfdiaoa...

La aplicación IPFS Desktop ejecuta un nodo IPFS plenamente operativo. La extensión de navegador hace que aprovechemos las ventajas de la red IPFS cuando detecte que una web podría estar alojada en ella, usando el nodo proporcionado por IPFS Desktop. Además, para los más atrevidos, añade la clase window.ipfs, que nos permite programar aplicaciones web que usen IPFS.
Recomiendo pulsar aplicaciones sobre el icono de la bandeja, configuración, iniciar automáticamente al hacer login. Las flechas no funcionan en el menú contextual, pero el navegador de objetos y los comandos de ratón sí.
Y ahora vamos con la mejor parte, la que muchos deseáis conocer: cómo agregar archivos y carpetas enteras a la red (también muy resumida):
1. Pulsamos aplicaciones sobre IPFS Desktop en la bandeja, y elegimos Archivos. Se abrirá una aplicación Electron con interfaz web.
2. Pulsamos el botón "Agregar a IPFS".
3. Bajamos con las flechas y elegimos "Agregar archivo". Se abre un diálogo de carga de archivos.
4. Elegimos el archivo a cargar, y esperamos un poco a que se duplique dentro del repositorio.
5. Bajamos hasta encontrar el nombre del archivo en la tabla. Debajo del nombre está el hash. Por ejemplo: QmdSbpG24ECYo1rQswnNtdXNnWaHudiJw4PbpWhNkgJJMz
6. Construimos la URL que pasaremos a los demás. Aunque todo el mundo tiene pasarela http, vamos a usar la del proyecto para simplificar: http://ipfs.io/ipfs/QmdSbpG24ECYo1rQswnNtdXNnWaHudiJw4PbpWhNkgJJMz
7. ¿Habéis visto lo que pasa al abrir la URL del paso 6? Los que tengan todo instalado observarán un comportamiento, y los que no observarán otro. Y es que los archivos tardan un poquito en propagarse por la red, paciencia.

Un par de notas y acabo:

* Por defecto, IPFS destina 10 GB de espacio en disco a la causa. Son 10 GB que usaremos para almacenar no sólo nuestros archivos, sino los de los demás.
* Si apagamos el ordenador, nuestros archivos siguen por ahí un rato, pero con el paso del tiempo mueren! IPFS tiene un "recolector de basura" que borra los archivos de los demás cada hora.
* Si subimos archivos individuales, como acabo de hacer en el ejemplo anterior, su nombre y su tipo se pierden. El navegador no sabe cómo procesar lo que está descargando, ¡cuidado! Es mejor subir una carpeta que tenga el archivo dentro, como ocurre con Windows Pe Accesible.
* Por último, ninguna de las notas anteriores es cierta al 100%. Todo se puede configurar, desde el espacio en disco que destinamos hasta cuándo pasará el recolector de basura. Así que nuestro archivo puede seguir vivo en ipfs.io durante días y, por supuesto, revivirá cuando arranquemos nuestro ordenador otra vez.

Pregunta curiosa. Si has instalado IPFS siguiendo los pasos recomendados, ¿cuánto tardas en descargar la iso de Windows Pe Accesible la primera vez? ¿Y la segunda?
No sufras más por falta de espacio en la nube. A partir de ahora, ¡la nube la tienes tú! Bueno, y los demás, que no se nos olvide.
P.S.: precisamente por la falta de cifrado, no es recomendable subir datos sensibles a la red a menos que se hayan cifrado previamente. You have been warned.