Release of the global decentralized file system IPFS 0.6

Published decentralized file system release IPFS 0.6 (InterPlanetary File System), which forms a global versioned file storage, deployed in the form of a P2P network formed from member systems. IPFS combines ideas previously implemented in systems such as Git, BitTorrent, Kademlia, SFS, and the Web, and resembles a single BitTorrent "swarm" (peers participating in the distribution) exchanging Git objects. IPFS is distinguished by addressing by content rather than location and arbitrary names. The reference implementation code is written in Go and spreads under Apache 2.0 and MIT licenses.

The new version is notable for the inclusion of protocol-based transport by default. HERE C, which is an add-on to the UDP protocol that supports multiplexing of multiple connections and provides encryption methods equivalent to TLS/SSL. In IPFS, a socket for receiving UDP connections is automatically started at the same address and network port as the TCP-based transport handler. QUIC is used for both incoming and outgoing connections, while when connecting to new hosts, if QUIC is not available, it will fall back to using TCP.

The second important innovation was the support of secure transport NOISE, based on the protocol Noise and developed within libp2p, a modular network stack for P2P applications. After the initial connection negotiation, all subsequent communication between participants is encrypted and protected from eavesdropping.
NOISE has replaced transport SECIO, but TLS 1.3 continues to be used as a priority method for encrypting connections between nodes. NOISE is quite simple to implement and is positioned as a universal cross-platform transport that can be implemented in various programming languages.

The new release also provides the ability to add custom 404 Not Found pages and adds optional support for the Base36 encoding method, which is optimal for case-insensitive alphanumeric data such as domain names (when using Base32, Ed25519 IPNS keys are two bytes larger than limit on the size of the subdomain, and with Base36 they fit into the limit). In addition, an option has been added to the settings
Β«peering", which defines a list of nodes to connect, keep connected, and reconnect, in order to define "sticky" links between frequently used peers.

Recall that in IPFS a link to access a file is directly related to its content and includes a cryptographic hash of the content. The file address cannot be arbitrarily renamed, it can only change after the content has changed. Similarly, it is impossible to make a change to a file without changing the address (the old version will remain at the same address, and the new one will be available through a different address, since the hash of the file contents will change). Given that the file identifier changes with each change, in order not to transfer new links each time, services are provided to bind permanent addresses that take into account different versions of the file (IPNS), or pinning an alias by analogy with traditional FS and DNS (MFS (Mutable File System) and DNSLink).

By analogy with BitTorrent, data is directly stored on the systems of participants who exchange information in P2P mode, without being tied to centralized nodes. If it is necessary to receive a file with certain content, the system finds participants who have this file and sends it with their systems in parts to several streams. After uploading the file to their system, the participant automatically becomes one of the points for its distribution. To identify network members on whose nodes the content of interest is present used distributed hash table (DHT). To access the global FS IPFS, the HTTP protocol can be used or the virtual FS /ipfs can be mounted using the FUSE module.

IPFS helps to solve such problems as storage reliability (if the original storage is disabled, the file can be downloaded from the systems of other users), content censorship resistance (for blocking it will be necessary to block all user systems that have a copy of the data) and organizing access in the absence of direct connection to the Internet or when the quality of the communication channel is poor (you can download data through the nearest participants in the local network). In addition to storing files and exchanging data, IPFS can be used as a basis for creating new services, for example, for organizing the operation of sites that are not tied to servers, or for creating distributed Applications.

Release of the global decentralized file system IPFS 0.6

Source: opennet.ru

Add a comment