lanzamiento del sistema de archivos descentralizado (InterPlanetary File System), que forma un almacenamiento global de archivos versionado, desplegado en forma de red P2P, compuesta por sistemas de participantes. IPFS combina ideas previamente implementadas en sistemas como Git, BitTorrent, Kademlia, SFS y Web, y se asemeja a un único 'enjambre' de BitTorrent (pares que participan en la distribución), intercambiando objetos de Git. IPFS se diferencia por una direccionamiento basado en el contenido, no en la ubicación, y nombres arbitrarios. El código de la implementación de referencia está escrito en el lenguaje Go y bajo las licencias Apache 2.0 y MIT.
La nueva versión se destaca por incluir por defecto el transporte basado en el protocolo , que es una capa sobre el protocolo UDP, que soporta la multiplexión de múltiples conexiones y proporciona métodos de cifrado equivalentes a TLS/SSL. En IPFS, el socket para recibir conexiones UDP se inicia automáticamente en la misma dirección y puerto de red que el manejador del transporte basado en TCP. QUIC se aplica tanto para conexiones entrantes como salientes, y al conectarse a nuevos nodos, en caso de que QUIC no esté disponible, se retrocede al uso de TCP.
La segunda innovación importante es el soporte para el transporte seguro , el protocolo y desarrollado dentro de , un stack de red modular para aplicaciones P2P. Después de la negociación inicial de la conexión, todos los intercambios de datos subsecuentes entre los participantes están cifrados y protegidos contra la interceptación.
NOISE reemplazó al transporte , pero como método prioritario de cifrado de conexiones entre nodos, TLS 1.3 sigue siendo utilizado. NOISE es bastante sencillo de implementar y se posiciona como un transporte universal multiplataforma que puede ser desarrollado en varios lenguajes de programación.
En esta nueva versión también se ofrece la posibilidad de agregar páginas personalizadas de '404 Not Found' y se ha añadido soporte opcional para el método de codificación Base36, que es óptimo para datos alfanuméricos sin distinción de mayúsculas y minúsculas, como nombres de dominio (al utilizar Base32, las claves Ed25519 IPNS superan el límite de tamaño del subdominio por dos bytes, mientras que con Base36 se ajustan dentro del límite). Además, se ha añadido una opción a la configuración
««, que define la lista de nodos para conectarse, mantener la conexión y reconectar con el fin de determinar los vínculos 'pegajosos' entre los pares utilizados con frecuencia.
Recordemos que en IPFS, el enlace para acceder a un archivo está directamente relacionado con su contenido e incluye un hash criptográfico del contenido. La dirección del archivo no puede renombrarse arbitrariamente; sólo puede cambiar tras un cambio en el contenido. De manera similar, no se puede modificar un archivo sin cambiar la dirección (la versión antigua permanecerá en la dirección anterior, mientras que la nueva será accesible a través de una dirección diferente, ya que el hash del contenido del archivo cambiará). Dado que el identificador del archivo cambia con cada modificación, para no tener que enviar nuevos enlaces cada vez, se ofrecen servicios para vincular direcciones permanentes que consideren diferentes versiones del archivo.MFS DNSLink ).
se utiliza una tabla hash distribuida ( DHTPara acceder al sistema de archivos global de IPFS, se puede utilizar el protocolo HTTP o montar un sistema de archivos virtual /ipfs mediante el módulo FUSE.
IPFS ayuda a resolver problemas como la fiabilidad del almacenamiento (si el almacenamiento original falla, el archivo se puede descargar de los sistemas de otros usuarios), la resistencia a la censura de contenido (para bloquearlo, se requeriría bloquear todos los sistemas de usuarios que tengan una copia de los datos) y la organización del acceso en ausencia de conexión directa a Internet o en condiciones de mala calidad de la conexión (se puede descargar datos a través de los participantes más cercanos en una red local). Además del almacenamiento de archivos y el intercambio de datos, IPFS puede utilizarse como base para crear nuevos servicios, por ejemplo, para operar sitios web que no dependen de servidores, o para crear sistemas distribuidos. .
Fuente: opennet.ru
