¿Qué es el almacenamiento descentralizado y cómo forma parte de Web3?

Publicada el

Un análisis en profundidad de las redes descentralizadas IPFS, Arweave y Storj, y de cómo facilitan las aplicaciones Web3.

IPFS

IPFS son las siglas de Interplanetary File System. IPFS es una red de almacenamiento entre iguales. Permite encontrar, almacenar y compartir archivos. IPFS tiene tres características únicas que lo diferencian de los sistemas de archivos existentes:

  • Identificación única mediante direccionamiento de contenidos
  • Vinculación de contenidos mediante grafos acíclicos dirigidos (DAG)
  • Descubrimiento de contenidos mediante tablas hash distribuidas (DHT)

Identificación única mediante el direccionamiento de contenidos

Actualmente, cuando se quiere encontrar algún tipo de contenido en Internet, hay que saber dónde está almacenado. Si, por ejemplo, quieres encontrar la entrada de Wikipedia sobre «cifrado de extremo a extremo», tendrás que conocer la dirección de Internet donde está almacenada esa página de Wikipedia (esa dirección es ). (Esa dirección es https://en.wikipedia.org/wiki/End-to-end_encryption.) Esta forma de identificar el contenido por el lugar donde está almacenado se denomina direccionamiento por ubicación.

IPFS, en cambio, utiliza el direccionamiento por contenido. En lugar de localizar el contenido preguntando dónde está almacenado, IPFS pregunta qué contenido se está solicitando.

Para ello, a cada contenido del protocolo IPFS se le asigna un identificador de contenido o CID (Content Identifier). Un CID es un hash criptográfico. Este hash es único para la pieza original de contenido de la que se derivó.

Muchos sistemas distribuidos hacen uso de los CID, pero no necesariamente tienen la misma interoperabilidad de datos subyacente. Para resolver este problema, IPFS utiliza el proyecto Interplanetary Linked Data (IPLD). El IPLD proporciona bibliotecas para combinar módulos enchufables (analizadores sintácticos para cada tipo posible de nodo IPLD) con el fin de resolver una ruta, un selector o una consulta a través de nodos enlazados. Esto permite explorar datos independientemente del protocolo subyacente.

Enlace de contenidos mediante grafos acíclicos dirigidos (DAG)

Un grafo acíclico dirigido o DAG es un grafo dirigido sin ciclos dirigidos. Esto significa que en un DAG nunca puede producirse un bucle cerrado. En el caso del IPFS, el tipo exacto de DAG utilizado es el llamado DAG de Merkel. Además de todos los atributos de un DAG, un Merkel DAG también contiene, dentro de cada nodo, un identificador único almacenado como un hash del contenido del nodo. Los Merkel DAG utilizados en IPFS están optimizados para representar directorios y archivos.

Para el almacenamiento, IPFS puede dividir el contenido en bloques. Estos bloques pueden almacenarse en distintas ubicaciones y autenticarse rápidamente. Esto es similar a cómo BitTorrent permite obtener un archivo de varios pares a la vez.

Para ponerlo todo junto, si tienes una carpeta almacenada en IPFS, el CID de esa carpeta es un hash derivado del contenido de la carpeta. Sin embargo, cada uno de los archivos también tendrá un CID que a su vez será un hash derivado del contenido de los archivos. El contenido de cada archivo puede dividirse en bloques, cada uno de los cuales tendrá su propio CID, etc.

Una de las principales ventajas de almacenar el contenido de esta manera es que dos archivos similares pueden hacer referencia al mismo bloque subyacente. Esto significa que si necesita actualizar el contenido de un archivo, sólo tiene que actualizar los bloques específicos que han sido alterados y puede mantener las referencias a los bloques inalterados. Esto hace que el tratamiento de grandes cantidades de datos sea mucho más eficaz que si hubiera que cambiar o volver a crear toda la estructura del fichero cada vez que se realiza una edición o se añade nuevo contenido.

Tablas hash distribuidas (DHT)

Al buscar contenidos de sus pares en el protocolo IPFS, éste hace uso de una tabla hash distribuida. Una tabla hash es una estructura de datos que almacena pares clave-valor. En una tabla hash distribuida, la estructura de datos se almacena en todos los nodos pares de una determinada red distribuida.

El proyecto libp2p es el protocolo dentro de IPFS que maneja la tabla hash distribuida y toda la comunicación entre los nodos pares.

Cuando se recuperan contenidos utilizando el sistema IPFS, los nodos utilizan libp2p para consultar la Tabla Hash Distribuida dos veces – primero para encontrar qué pares en la red están almacenando bloques particulares, y luego para encontrar la ubicación actual de estos pares deseados en la red.

Una vez que un nodo ha consultado la DHT para averiguar qué pares tienen los bloques que desea y dónde se encuentran actualmente en la red, IPFS utiliza un módulo llamado Bitswap para conectar e intercambiar bloques entre pares. Cuando se solicita un bloque, un nodo se conecta a un peer elegido y envía una wantlist, que es una lista de bloques deseados. Una vez recibidos los bloques deseados, pueden verificarse haciendo un hash de su contenido y comparando el resultado con el CID asociado de cualquier bloque recibido.

Protocol Labs, los creadores del protocolo IPFS, son también los creadores del protocolo complementario Filecoin. La diferencia entre IPFS y Filecoin es que mientras IPFS permite a los pares de una red almacenar, transferir y recuperar datos entre sí, Filecoin está diseñado como un sistema para incentivar el almacenamiento persistente de datos.

Filecoin permite a los clientes pagar por almacenar datos con distintos niveles de disponibilidad y redundancia. A los proveedores de almacenamiento se les paga en Filecoin no sólo por almacenar continuamente los datos, sino también por demostrar criptográficamente que almacenan los datos que dicen almacenar.

IPFS y Filecoin son protocolos complementarios. Esto significa que se pueden utilizar los dos a la vez o también se pueden separar y utilizar por separado o junto con otros protocolos.

Arweave

Arweave es otra solución de almacenamiento distribuido que adopta un enfoque diferente en cuanto a incentivos y permanencia.

Uno de los principales factores diferenciadores entre Arweave e IPFS es que el protocolo Arweave promete un almacenamiento permanente mediante la creación de lo que ellos llaman la permaweb.

¿Qué hace que el almacenamiento de Arweave sea tan permanente? La diferencia radica en la estructura de incentivos del protocolo.

Con Arweave, un usuario final puede teóricamente pagar una sola vez para almacenar datos para siempre.

¿Cómo funciona Arweave?

Areave utiliza 4 tecnologías básicas para ofrecer una solución de almacenamiento permanente de bajo coste y alto rendimiento:

  • Blockweave
  • Prueba de acceso
  • Wildfire
  • Sombras de bloques

Blockweave

Blockweave se diferencia de la mayoría de las cadenas de bloques en que no requiere que todos los bloques de una red participen para validar una transacción. Con Arweave, los nodos no tienen que estar en posesión de toda la cadena. Esto es posible porque los nodos pueden seguir cumpliendo funciones de red teniendo una lista de hash de bloque y una lista de monedero. La lista hash de bloques contiene los hashes de todos los bloques anteriores. Esto permite verificar los bloques antiguos y evaluar rápidamente los nuevos. La lista de carteras contiene todas las carteras activas en el sistema. Al introducir estos dos conceptos, las transacciones pueden verificarse sin necesidad de poseer el bloque más reciente.

Además, los mineros no necesitan verificar toda la cadena de bloques desde su génesis hasta el presente. En su lugar, utilizan un sistema de «verificación en curso». Los mineros verifican que la transacción ha sido firmada por la clave privada del propietario del monedero.

Prueba de Acceso

El protocolo Arweave utiliza Proof of Access y Proof of Work como mecanismos de consenso. Para que los mineros minen o verifiquen un nuevo bloque, su nodo minero necesita acceder al bloque de recuperación de ese bloque. El bloque de recuperación es un bloque histórico que se genera a partir del bloque actual. Esta prueba de acceso es necesaria como parte de la construcción del bloque y su verificación es la forma en que Arweave valida un nuevo bloque. Este requisito incentiva intrínsecamente el almacenamiento, ya que los mineros necesitarán acceder a bloques arbitrarios para recibir recompensas mineras a través de la extracción de nuevos bloques. Este sistema de Prueba de Acceso funciona a través de su estructura probabilística e incentivada.

Wildfire

El protocolo Arweave también utiliza un mecanismo similar al de bittorrent, llamado Agente Wildfire de Incentivo Interactivo Adaptativo (AIIA).

Esto crea una especie de «meta-juego» además de las recompensas de $AR que incentiva el comportamiento pro-social de los mineros. Ser un nodo receptivo significa obtener un rango más alto de los compañeros. Los nodos menos receptivos pueden elegir entre mejorar o seguir bajando de rango.

¿Qué es esta clasificación o puntuación? Es una media móvil de bytes por segundo sobre un número de peticiones recientes a ese peer.

Esto permite a los nodos elegir adecuadamente dónde utilizar su ancho de banda y tener una alta probabilidad de comunicaciones precisas y rápidas. Este sistema evita el envío de mensajes a nodos defectuosos de la red, permitiendo así un sistema de comunicaciones eficiente dado el ancho de banda finito de los nodos.

Sombras de bloques

Las sombras de bloque permiten reconstruir bloques completos sin necesidad de enviar cada bloque completo a cada nodo de la red cuando se mina. Esto permite que las transacciones se minen en un bloque a la misma velocidad a la que se distribuyen por la red, ya que las sombras de bloque sólo tienen un tamaño de unos pocos kilobytes. Las sombras de bloque permiten al protocolo Arweave soportar bloques de tamaño ilimitado, permitiendo así una red con almacenamiento permanente en la cadena.

$AR

$AR es a $BTC lo que un satoshi es a un winston. En otras palabras, un winston es la denominación más pequeña de $AR.

$AR es un token de utilidad, ya que se utiliza para pagar el almacenamiento permanente de datos. Sin embargo, los usuarios también pueden utilizarlo como medio de intercambio de valor. Se crearon 55 millones de $AR en el bloque génesis en el lanzamiento de la red en 2018. La circulación máxima será de 66 millones de $AR a medida que se introduzcan más $AR en circulación en forma de recompensas de minería de bloques.

¿Cómo se utiliza realmente la $AR? Para escribir una transacción en un bloque, un usuario tiene que pagar algunos $AR como tarifa de transacción. La mayor parte de la comisión se destina a una dotación de almacenamiento que, con el tiempo, se distribuye gradualmente a los monederos de los mineros.

¿Cuáles son los casos de uso de Arweave y en qué se diferencian de otros proveedores de almacenamiento descentralizado?

Dado que la principal propuesta de valor de Arweave es la permanencia y el coste inicial de su almacenamiento, utilizarlo como archivo tiene mucho sentido, ya que una vez que un registro se añade al blockweave, no puede eliminarse. Además, los datos subidos están firmados por el usuario que los sube, lo que hace muy rastreable el origen de comportamientos antisociales, como la desinformación. Sin embargo, Arweave no está optimizado para cambios en los datos almacenados en la permaweb, ni está diseñado para la privacidad.

Storj DCS

Otra solución de almacenamiento descentralizado es Storj DCS (Decentralized Cloud Storage). Storj DCS es un objeto seguro en la nube para desarrolladores que es compatible con S3 con una reducción de costes de hasta el 80%.

Storj DCS se centra en proporcionar una plataforma descentralizada de almacenamiento seguro en la nube «paga sólo por lo que almacenas». Cuando utilizas Storj DCS, obtienes tus primeros 150GB de almacenamiento gratis y sólo tienes que pagar por cualquier capacidad de almacenamiento adicional que necesites más allá de 150GB. Por ejemplo, almacenar 1 TB de datos con Storj DCS le costará 4 dólares al mes.

Para entender cómo funciona Storj DCS, utilizaremos el desglose que aparece en el artículo técnico de Storj DCS para dividir el marco en ocho componentes individuales. Estos componentes son

  • Nodos de almacenamiento
  • Comunicación peer-to-peer y descubrimiento
  • Redundancia
  • Metadatos
  • Cifrado
  • Auditorías y reputación
  • Reparación de datos
  • Pagos
  1. Nodos de almacenamiento

La función del nodo de almacenamiento es almacenar y devolver datos dentro de la red. El nodo de almacenamiento también debe

  • Proporcionar ancho de banda a la red
  • Tener una capacidad de respuesta adecuada

El nodo de almacenamiento se selecciona mediante un proceso explícito no determinista. Esto se debe a que los nodos se seleccionan a través de variables cambiantes externas al protocolo. Estas variables cambiantes externas incluyen aspectos como el tiempo de ping, la ubicación geográfica y el historial de los nodos a la hora de responder con precisión a las auditorías.

A cambio de almacenar contenidos, el framework paga a los nodos.

Cada nodo tendrá también su propia autoridad de certificación, que requiere un par de claves públicas y privadas y un certificado autofirmado. El ID de cualquier nodo será un hash de su clave pública.

  1. Comunicación y descubrimiento entre pares

Cada nodo de la red puede autenticar la identidad de cualquiera de sus pares validando la cadena de certificados y realizando un hash de la clave pública de la autoridad de certificación de su par.

Storj DCS utiliza una tabla hash distribuida (DHT) de Kademila con un servicio básico de caché descentralizado sobre la DHT. La razón del servicio de caché descentralizado es conseguir tiempos de respuesta de milisegundos, difíciles de obtener con una DHT de Kademila sin modificar.

  1. Redundancia

Storj DCS utiliza el código de borrado Reed-Solomon para implementar la redundancia de los datos en la red.

Los archivos de Storj DCS se dividen en segmentos de un tamaño estandarizado. La división de los archivos en segmentos estandarizados ofrece numerosas ventajas, como una distribución más equitativa de las demandas de ancho de banda en la red y la posibilidad de realizar transferencias paralelas.

Los segmentos de Storj DCS también pueden dividirse en franjas de datos si la red lo considera oportuno.

  1. Metadatos

La mayor parte de los metadatos almacenados en Storj DCS se hace almacenando punteros. Los componentes individuales de la red que necesitan ciertos metadatos pueden realizar las acciones deseadas según sea necesario recuperando un puntero de una base de datos de punteros.

Esta base de datos de punteros es gestionada por el cliente utilizando su base de datos de confianza preferida, como MongoDB o SQLite.

  1. Cifrado

Para garantizar que un usuario sepa si algo (o alguien) ha manipulado sus datos, Storj DCS utiliza un cifrado autenticado compatible tanto con el cifrado AES-GCM como con la combinación Salsa20 y Poly1305.

  1. Auditorías y reputación

Para garantizar que cada nodo de la red almacena los datos que dice almacenar, Storj DCS implementa un sistema de auditoría. Los auditores de la red envían un reto a un nodo de almacenamiento y esperan recibir una respuesta válida. En este contexto, un desafío es una petición al nodo de almacenamiento para que demuestre que tiene los datos esperados.

  1. Reparación de datos

Cuando los nodos se desconectan, es importante que las copias de seguridad de los datos almacenados en ellos se vuelvan a crear en otros nodos de la red para garantizar que no se pierda ningún dato. Para ello, Storj DCS utiliza el sistema de caché de la red para saber qué nodos han estado conectados recientemente. Si un nodo se desconecta, puede realizarse una búsqueda en un índice inverso de la base de metadatos del usuario. Cualquier puntero de segmento almacenado en un nodo desconectado recientemente puede entonces descargarse y reconstruirse y, posteriormente, cargarse en nuevos nodos de la red. Los punteros almacenados en la base de metadatos pueden entonces actualizarse para reflejar los nuevos cambios. De este modo se garantiza que no se pierdan datos cuando los nodos se desconectan de la red.

  1. Pagos

Los clientes pueden pagar al DCS de Storj a través de cualquier método de pago (el token nativo de STORJ, tarjeta de crédito, factura, etc.). Sin embargo, los pagos a los nodos de almacenamiento se realizan a través del token STORJ ERC20 basado en Ethereum.

A los nodos de almacenamiento no se les paga por la transferencia inicial de datos al nodo. Sin embargo, se les paga mes a mes por almacenar los datos transferidos.

Equipo de invertirX

Por Equipo de invertirX

invertirX es un sitio web que ofrece contenido sobre finanzas personales y descentralizadas. Si deseas obtener ideas serias y efectivas para invertir tu dinero, puedes encontrarlo en nuestro sitio web.