paint-brush
Una guía para principiantes de IPFSby@kojoaddaquay
77,593
77,593

Una guía para principiantes de IPFS

Addaquay2018/03/21
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow
ES

En mi <a href="https://medium.com/@kojoaddaquay/decentralizing-the-sharing-economy-a-review-of-the-origin-protocol-bf0003334233" target="_blank">publicación</a> anterior, discutimos el futuro de la economía colaborativa y las emocionantes innovaciones que podrían ser fundamentales para darle forma. Una de las tecnologías clave mencionadas fue el Sistema de archivos interplanetarios (IPFS). Es un sistema de intercambio de archivos punto a punto (p2p) que tiene como objetivo cambiar fundamentalmente la forma en que se distribuye la información en todo el mundo y más allá. IPFS consta de varias innovaciones en protocolos de comunicación y sistemas distribuidos que se han combinado para producir un sistema de archivos como ningún otro. Entonces, para comprender toda la amplitud y profundidad de lo que IPFS está tratando de lograr, es importante comprender los avances tecnológicos que lo hacen posible.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - Una guía para principiantes de IPFS
Addaquay HackerNoon profile picture

En mi publicación anterior, discutimos el futuro de la economía colaborativa y las emocionantes innovaciones que podrían ser fundamentales para darle forma. Una de las tecnologías clave mencionadas fue el Sistema de archivos interplanetarios (IPFS). Es un sistema de intercambio de archivos punto a punto (p2p) que tiene como objetivo cambiar fundamentalmente la forma en que se distribuye la información en todo el mundo y más allá. IPFS consta de varias innovaciones en protocolos de comunicación y sistemas distribuidos que se han combinado para producir un sistema de archivos como ningún otro. Entonces, para comprender toda la amplitud y profundidad de lo que IPFS está tratando de lograr, es importante comprender los avances tecnológicos que lo hacen posible.

Protocolos de comunicación y sistemas distribuidos

Para que dos personas intercambien información, necesitan conjuntos comunes de reglas que definan cómo y cuándo se transmite la información. Estas reglas se conocen ampliamente como protocolos de comunicación, pero eso es bastante complicado, por lo que simplemente lo llamamos lenguaje. Si alguna vez ha estado en un país extranjero donde no habla el idioma nativo, probablemente haya experimentado una falla (o falta) de protocolos de comunicación. Este fue el caso de las computadoras; no podían comunicarse entre sí y existieron como dispositivos informáticos aislados hasta principios de la década de 1980, cuando se inventaron los primeros protocolos de comunicación para la informática.

“los protocolos son para la comunicación lo que los lenguajes de programación son para los cómputos”

En las computadoras, los protocolos de comunicación generalmente existen en paquetes (llamados conjunto de protocolos) de varias capas. Por ejemplo, el conjunto de protocolos de Internet consta de 4 capas, cada una de las cuales es responsable de funciones específicas. Además de los protocolos de comunicación, una relación importante a comprender es la estructura básica de las interconexiones entre las computadoras. Esto se conoce como la arquitectura del sistema . Existen varios, pero los dos tipos relevantes para nosotros son las redes cliente-servidor y punto a punto.

Internet está dominado por las relaciones cliente-servidor, que se basan en el conjunto de protocolos de Internet. De estos, el Protocolo de Transferencia de Hipertexto ( HTTP ) es la base para la comunicación.

Los datos se almacenan en servidores centralizados y se accede a ellos mediante direccionamiento basado en la ubicación. Esto facilita la distribución, la gestión, la protección de los datos y la ampliación de la capacidad de servidores y clientes. Sin embargo, existen muchas debilidades en los ámbitos de la seguridad, la privacidad y la eficiencia: el control del servidor se traduce en el control de los datos. Esto significa que cualquier parte con control del servidor puede acceder, modificar y eliminar sus datos; podría ser una entidad con autoridad legítima sobre el servidor o un hacker malicioso. En el direccionamiento basado en la ubicación, los datos se identifican por su ubicación y no por su contenido. Esta limitación significa que debe ir hasta una ubicación específica para acceder a una parte de los datos, incluso si esos mismos datos están disponibles en algún lugar más cercano. Tampoco hay forma de saber si los datos han sido alterados, ya que el cliente solo necesita saber dónde está, no qué es.

Pero el modelo cliente-servidor y HTTP han servido a Internet de manera bastante confiable durante la mayor parte de su historia. Esto se debe a que la web HTTP es muy eficaz para mover archivos pequeños como texto e imágenes. En las primeras dos décadas de la web, el tamaño de la página web promedio solo ha aumentado de ~2 kilobytes a ~2 megabytes.

Fuente

HTTP es excelente para cargar sitios web, pero no fue diseñado para la transferencia de grandes cantidades de datos (como archivos de audio y video). Estas limitaciones posiblemente permitieron el surgimiento y el éxito generalizado de sistemas alternativos para compartir archivos como Napster (música) y BitTorrent (películas y prácticamente cualquier cosa).

Avance rápido hasta 2018, donde la transmisión de video HD a pedido y los grandes datos se están volviendo omnipresentes; continuamos la marcha ascendente de producir/consumir más y más datos, junto con el desarrollo de computadoras cada vez más poderosas para procesarlos. Los grandes avances en la computación en la nube han ayudado a sostener esta transición, sin embargo, la infraestructura fundamental para distribuir todos estos datos se ha mantenido prácticamente igual.

El sistema de archivos interplanetarios

IPFS intenta abordar las deficiencias del modelo cliente-servidor y la web HTTP a través de un novedoso sistema de intercambio de archivos p2p. Este sistema es una síntesis de varias innovaciones nuevas y existentes. IPFS es un proyecto de código abierto creado por Protocol Labs , un laboratorio de I+D para protocolos de red y antigua empresa emergente de Y Combinator. Protocol Labs también desarrolla sistemas complementarios como IPLD y Filecoin , que se explicarán a continuación. Cientos de desarrolladores de todo el mundo contribuyeron al desarrollo de IPFS, por lo que su orquestación ha sido una tarea enorme. Aquí están los componentes principales:

Tablas hash distribuidas

Una tabla hash es una estructura de datos que almacena información como pares clave/valor. En las tablas hash distribuidas (DHT), los datos se distribuyen a través de una red de computadoras y se coordinan de manera eficiente para permitir un acceso y una búsqueda eficientes entre nodos.

Las principales ventajas de los DHT son la descentralización, la tolerancia a fallas y la escalabilidad. Los nodos no requieren coordinación central, el sistema puede funcionar de manera confiable incluso cuando los nodos fallan o abandonan la red, y los DHT pueden escalar para acomodar millones de nodos. Juntas, estas características dan como resultado un sistema que generalmente es más resistente que las estructuras cliente-servidor.

Intercambios de bloques

El popular sistema de intercambio de archivos Bittorrent puede coordinar con éxito la transferencia de datos entre millones de nodos basándose en un innovador protocolo de intercambio de datos, sin embargo, está limitado al ecosistema de torrents. IPFS implementa una versión generalizada de este protocolo llamada BitSwap, que funciona como un mercado para cualquier tipo de datos. Este mercado es la base de Filecoin : un mercado de almacenamiento p2p basado en IPFS.

DAG de Merkle

Un merkle DAG es una combinación de un Merkle Tree y un gráfico acíclico dirigido ( DAG ). Los árboles de Merkle garantizan que los bloques de datos intercambiados en las redes p2p sean correctos, no estén dañados ni alterados. Esta verificación se realiza mediante la organización de bloques de datos mediante funciones hash criptográficas . Esta es simplemente una función que toma una entrada y calcula una cadena alfanumérica única (hash) correspondiente a esa entrada. Es fácil verificar que una entrada dará como resultado un hash determinado, pero es increíblemente difícil adivinar la entrada a partir de un hash.

No confundas estos dos. Fuente: http://www.merkletrees.org/

Los bloques de datos individuales se denominan 'nodos de hoja', que se procesan para formar 'nodos que no son de hoja'. Estos nodos que no son hojas se pueden combinar y aplicar hash, hasta que todos los bloques de datos se puedan representar mediante un único hash de raíz. Aquí hay una manera más fácil de conceptualizarlo:

Un DAG es una forma de modelar secuencias topológicas de información que no tienen ciclos. Un ejemplo simple de un DAG es un árbol genealógico. Un DAG Merkle es básicamente una estructura de datos en la que se utilizan hashes para hacer referencia a bloques de datos y objetos en un DAG. Esto crea varias características útiles: todo el contenido de IPFS se puede identificar de forma única, ya que cada bloque de datos tiene un hash único. Además, los datos son resistentes a la manipulación porque alterarlos cambiaría el hash, como se muestra a continuación:

Fuente: ethereum.org

El principio central de IPFS es modelar todos los datos en un DAG merkle generalizado. Es difícil exagerar la importancia de esta función de seguridad. A modo de comparación con los sistemas cliente-servidor, vea cómo este tipo pirateó 40 sitios web en 7 minutos .

Sistemas de control de versiones

Otra característica poderosa de la estructura Merkle DAG es que le permite construir un sistema de control de versiones distribuido ( VCS ). El ejemplo más popular de esto es Github, que permite a los desarrolladores colaborar fácilmente en proyectos simultáneamente. Los archivos en Github se almacenan y versionan usando un DAG de merkle. Permite a los usuarios duplicar y editar de forma independiente varias versiones de un archivo, almacenar estas versiones y luego fusionar las ediciones con el archivo original.

IPFS utiliza un modelo similar para los objetos de datos: siempre que se pueda acceder a los objetos correspondientes a los datos originales y a cualquier versión nueva, se puede recuperar todo el historial del archivo. Dado que los bloques de datos se almacenan localmente en la red y se pueden almacenar en caché de forma indefinida, esto significa que los objetos IPFS se pueden almacenar de forma permanente.

Además, IPFS no depende del acceso a los protocolos de Internet. Los datos se pueden distribuir en redes superpuestas , que son simplemente redes construidas sobre otra red. Estas características son notables porque son elementos centrales en una web resistente a la censura. Podría ser una herramienta útil en la promoción de la libertad de expresión para contrarrestar la prevalencia de la censura en Internet en todo el mundo, pero también debemos ser conscientes del potencial de abuso por parte de malos actores.

Sistema de archivos de autocertificación

El último componente esencial de IPFS que cubriremos es el Sistema de archivos de autocertificación ( SFS ). Es un sistema de archivos distribuido que no requiere permisos especiales para el intercambio de datos. Es "autocertificado" porque los datos que se entregan a un cliente se autentican mediante el nombre del archivo (que está firmado por el servidor). ¿El resultado? Puede acceder de forma segura al contenido remoto con la transparencia del almacenamiento local.

IPFS se basa en este concepto para crear el espacio de nombres interplanetario (IPNS). Es un SFS que utiliza criptografía de clave pública para autocertificar objetos publicados por los usuarios de la red. Mencionamos anteriormente que todos los objetos en IPFS se pueden identificar de forma única, pero esto también se extiende a los nodos. Cada nodo de la red tiene un conjunto de claves públicas, claves privadas y una ID de nodo que es el hash de su clave pública. Por lo tanto, los nodos pueden usar sus claves privadas para 'firmar' cualquier objeto de datos que publiquen, y la autenticidad de estos datos se puede verificar usando la clave pública del remitente.

Aquí hay un resumen rápido de los componentes clave de IPFS:

  • Con la tabla hash distribuida, los nodos pueden almacenar y compartir datos sin coordinación central
  • IPNS permite que los datos intercambiados se autentiquen y verifiquen instantáneamente mediante criptografía de clave pública.
  • El Merkle DAG permite datos identificados de forma única, resistentes a manipulaciones y almacenados de forma permanente
  • Puede acceder a versiones anteriores de datos editados a través del Sistema de control de versiones

Marco conceptual sencillo

Entonces, ¿por qué es todo esto importante?

IPFS proporciona distribución de datos de alto rendimiento y baja latencia. También es descentralizado y seguro. Esto abre varios casos de uso interesantes y emocionantes. Se puede usar para entregar contenido a sitios web, almacenar archivos globalmente con versiones y copias de seguridad automáticas, facilitar el intercambio seguro de archivos y la comunicación cifrada.

A continuación se muestran algunos proyectos interesantes que se están construyendo en IPFS:

Akasha , una red social de próxima generación

Balance3 , una plataforma contable de triple entrada

BlockFreight , una red abierta para carga global

Digix , una plataforma para tokenizar oro físico

Infura , un proveedor de infraestructura para DApps

Livepeer , una plataforma de transmisión de video en vivo descentralizada

Origin , un mercado peer-to-peer para la economía colaborativa

uPort , un sistema de identidad auto-soberano

La variedad de estas aplicaciones demuestra la versatilidad de IPFS para varios casos de uso diferentes. También se utiliza como sistema de archivos complementario para cadenas de bloques públicas y otras aplicaciones p2p. En el momento de escribir este artículo, puede costar varios dólares almacenar un kilobyte de datos en un contrato inteligente de Ethereum. Esta es una limitación importante y actualmente hay un crecimiento masivo en el lanzamiento de nuevas aplicaciones descentralizadas (DApps). IPFS es interoperable con contratos inteligentes y datos de blockchain , por lo que puede agregar capacidad de almacenamiento confiable y de bajo costo al ecosistema ethereum. El intento de hacer que los datos de la cadena de bloques de Ethereum sean accesibles de forma nativa en IPFS es un protocolo separado conocido como IPLD (Datos enlazados interplanetarios).

Desafíos

A pesar del impresionante rendimiento de IPFS, aún quedan algunos problemas por resolver por completo. En primer lugar, el direccionamiento de contenido en IPNS actualmente no es muy fácil de usar. Su enlace IPNS típico se ve así:

ipfs.io/ipns/QmeQe5FTgMs8PNspzTQ3LRz1iMhdq9K34TQnsCP2jqt8wV/

Estos enlaces se pueden acortar a nombres más simples usando un Sistema de Nombres de Dominio (DNS), pero esto introduce un punto de falla externo para la distribución de contenido. Sin embargo, aún se puede acceder al contenido a través de la dirección IPNS original. Algunos usuarios también informan que IPNS puede ser lento para resolver nombres de dominio, con demoras de hasta unos segundos. No está claro exactamente cuál es la raíz de este problema.

Actualización : el 26/03/2018, IPNS lanzó una actualización con una función experimental para acelerar la publicación/resolución. Detalles disponibles aquí

En IPFS también hay pocos incentivos para que los nodos mantengan copias de seguridad a largo plazo de los datos en la red. Los nodos pueden optar por borrar los datos almacenados en caché para ahorrar espacio, lo que significa que, en teoría, los archivos pueden terminar "desapareciendo" con el tiempo si no quedan nodos que alojen los datos. En los niveles de adopción actuales, este no es un problema importante, pero a largo plazo, la copia de seguridad de grandes cantidades de datos requiere fuertes incentivos económicos.

Mercados de almacenamiento

Filecoin es un protocolo separado diseñado para agregar incentivos económicos al almacenamiento de archivos en IPFS y fomentar un mercado de almacenamiento distribuido que compita con el almacenamiento en la nube empresarial (como Amazon S3, etc.). En lugar de una infraestructura centralizada con precios fijos, IPFS + FileCoin ofrece almacenamiento en una red global de proveedores locales que tienen la libertad de establecer precios en función de la oferta y la demanda. En lugar de un algoritmo de consenso de Prueba de trabajo como Bitcoin , Filecoin utiliza Prueba de almacenamiento para garantizar la seguridad y la confiabilidad. De modo que cualquiera puede unirse a la red, ofrecer espacio de disco duro no utilizado en su dispositivo informático y ser recompensado con tokens de Filecoin por los servicios de almacenamiento y recuperación de datos.

La red se está desarrollando en Ethereum, por lo que la integración de contratos inteligentes podría producir funciones avanzadas como depósito en garantía, seguro, etc. en el mercado de almacenamiento. En teoría, este modelo económico debería desarrollar un mercado libre altamente competitivo con costos potencialmente más bajos que los proveedores a gran escala. Pero FileCoin aún no se ha lanzado, por lo que será interesante observar cómo se desarrollan estos conceptos en la realidad.

Empezando

IPFS es un esfuerzo muy ambicioso y, obviamente, la mecánica precisa de cómo funciona el sistema es mucho más compleja de lo que se ha descrito en esta guía. Dejaremos esos detalles para que los criptógrafos e informáticos los disfruten. No es necesario ser un experto para usar IPFS, por lo que si alguna de las ventajas o los casos de uso le parecen útiles o atractivos, descargue IPFS y comience aquí . Si tiene gigabytes o terabytes de almacenamiento sin usar y desea hacer un buen uso de esa capacidad inactiva, puede registrarse para ser uno de los primeros mineros de Filecoin cuando se lance la red. También puede registrarse si está interesado en ser uno de los primeros usuarios de almacenamiento.

Usar IPFS es bastante notable y comprender la magia técnica que lo hace posible es aún más emocionante. Si tiene éxito, IPFS y sus protocolos complementarios podrían proporcionar una infraestructura resistente para la próxima generación de la web. La web que prometió ser distribuida, segura y transparente.

Fuentes

Comer, Douglas. Redes informáticas e internet . Pearson, 2015. goo.gl/AbM8st

Documento técnico de IPFS (borrador 3) http://goo.gl/zwKD9J

Documento técnico de Filecoin https://goo.gl/RrxcvX