Interplanetary File System
Protocolo de almacenamiento distribuido de datos que permiten a una red de computación (Data Network) guardar cualquier información arbitraria de manera inmutable. Busca hacer internet más rápido, seguro y abierto.
Tradicionalmente, el intercambio de archivos se hacía de manera centralizada (Location based Addressing). Esto utiliza una estructura cliente-servidor que depende de estos servidores para recuperar la información.
El concepto de transferencias Peer-to-Peer se conoce desde hace tiempo. IPFS tiene ciertas características que lo hacen destacar en el espacio crypto, siendo la opción más utilizada en aplicaciones web3.
IPFS realiza este intercambio mediante content based addressing. La gran diferencia es que IPFS busca dentro de la red el contenido que desea, permitiendo obtenerlo si este está en caché del sistema u otros nodos lo han «pinneado».

IPFS es inmutable. Los datos una vez son añadidos a la red, no pueden ser modificados. Los clientes pueden verificar los datos y que estos no hayan sido alterados. Se pueden publicar modificaciones, pero en forma de nuevos archivos, nunca sobre escribiendo datos antiguos, dando lugar a la inmutabilidad comentada anteriormente.
Los datos se fragmentan, se almacenan y se hashean cuando se añaden a la red, permitiendo que datos duplicados puedan ser mapeados a los mismos nodos y ahorrar almacenamiento al crear una sola conexión.
Al ser haseada la información, se crea un código único, un identificador. Este identificador, nos es útil a nivel de seguridad, ya que si queremos descargar cierto archivo, este tendrá que tener el mismo hash que hemos requerido. Sino, no es nuestro archivo deseado.
La red puede operar independientemente de la salida o entrada de nodos. Puede haber una gran cantidad de nodos caídos y aun así el sistema ser resistente. Para poder tirar el sistema y corromper la información se necesitaría la destrucción de todos los nodos de la red.
Cuando se realiza una búsqueda de contenido, se puede optimizar la ruta buscando en los clientes que tengan un ID similar al del archivo que queremos. Esto significa que hay una relación con los IDs en función de la cercanía.
Gracias a la caché, se puede optimizar el proceso de búsqueda de determinadas consultas para una mayor velocidad en futuras búsquedas.
Para subir archivos, se tiene que correr un nodo IPFS para empezar. A pesar que el almacenamiento sea distribuido no significa que sea gratis. Para cada archivo que se almacena, debe haber un primer nodo que lo haga.
Si este archivo es suficientemente famoso, se mantendrá en cache de otros nodos. Si está «pinneado», estará disponible en la red, sino hasta que desaparezca de la cache.
El archivo es dividido en segmentos de 256 KB. Después cada segmento es hasheado, consiguiendo un identificador único. Por medio de un Merkle Tree, estos hashes se combinan para generar un hash único para todo el fichero. Este hash definirá el ID del archivo.
Relación IPFS y mundo NFT
Ahora viene lo interesante. La relación del almacenamiento de contenido con los NFTs. Podemos decir que un NFT apunta a un link que referencia algún tipo de media. Ya sea una URL en una web o un hash IPFS, lo habitual. Ah… y este link no es tu archivo, no. Es un fichero JSON con los metadatos.
Este JSON si que referencia el media file que poseemos. Y aunque este esté contenido esté referenciado en IPFS, este puede apuntar a su vez al hash de otra URL de una web que contenga el archivo deseado, no al hash IPFS.
Si el archivo está hosteado (pinned) por los creadores, proceso que no es gratuito, este se mantendrá disponible. En el momento que quiebre esta empresa, desaparecerá el fichero de IPFS.
En el momento también que el dominio esté caído, puedo comprarlo y empezar a subir mis propios archivos que apuntarán al hash IPFS de los JSON de metadatos.
En resumen, ahora mismo los NFTs están construidos bajo un castillo de naipes que perfectamente puede derrumbarse en cualquier momento. ¿Quién asegura que en una década estos archivos sigan disponibles? ¿Quebrará antes la empresa?
Leer los comentarios del código. Esta colección del artista Beeple vendida vía Nifty notifica claramente el cambio de estos archivos en función de X casuísticas. Es decir, que el equipo de desarrollo puede implementar lo que quiera. Esto es básico de entender de cara a la posible inversión en diferentes colecciones.
GLOSARIO
1) Data Network: Serie de nodos interconectados que reciben y transmiten tráfico de datos de texto, audio y video. 2) Los intercambios P2P son distintos a las descargas cliente-servidor. Se utiliza un software para localizar los archivos deseados.
3) Merkle tree: Un árbol Merkle, es una estructura de datos dividida en varias capas que tiene como finalidad relacionar cada nodo con una raíz única asociada a los mismos. Para lograr esto, cada nodo debe estar identificado con un identificador único (hash).
4) Pinning: El contenido que quieres almacenar de por vida se llama “pinned”. Cualquier nodo puede pinnear lo que quiera, ofreciéndose para siempre a la red.
5) JSON es un formato de archivos estandarizados y abiertos que permite de forma legible guardar y transmitir datos mediante matrices y valores serializables. Es un formato de datos común con diversos usos en el intercambio electrónico de datos, incluido las aplicaciones web.