release of a decentralized file system (InterPlanetary File System), creating a global versioned file storage deployed in the form of a P2P network formed by participant systems. IPFS combines ideas previously implemented in systems like Git, BitTorrent, Kademlia, SFS, and the Web, resembling a unified “swarm” of BitTorrent (peers participating in distribution), exchanging Git objects. IPFS is characterized by content-based addressing rather than location and arbitrary names. The code of the reference implementation is written in Go and licensed under Apache 2.0 and MIT.
The new version is notable for including by default a transport based on the protocol , which is an extension of the UDP protocol supporting multiplexing of multiple connections and providing encryption methods equivalent to TLS/SSL. In IPFS, the socket for receiving UDP connections automatically starts on the same address and network port as the TCP transport handler. QUIC is used for both incoming and outgoing connections, and in the case that QUIC is unavailable when connecting to new nodes, it falls back to using TCP.
Another significant innovation is the support for secure transport , the protocol and developed within , a modular networking stack for P2P applications. After the initial agreement of the connection, all subsequent data exchange between participants is encrypted and secured against eavesdropping.
NOISE has replaced the transport , but TLS 1.3 continues to be used as the preferred method for encrypting connections between nodes. NOISE is sufficiently 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 alphanumeric data without case sensitivity, such as domain names (when using Base32, the Ed25519 IPNS keys exceed the subdomain size limit by two bytes, while Base36 fits within the limit). Additionally, an option has been added to the settings
««, which defines the list of nodes for connection, maintaining the connection, and reconnecting to determine the 'sticky' links between frequently used peers.
Recall that in IPFS, the link to access a file is directly tied to its content and includes a cryptographic hash of that content. The file address cannot be renamed arbitrarily; it can only change if the content changes. Similarly, it is not possible to make a change to the file without altering the address (the old version will remain at the same address, while the new one will be accessible via a different address, as the hash of the file's content will change). Considering that the file identifier changes with each modification, services are provided to bind permanent addresses that account for different versions of the file.), or to anchor a pseudonym similar to traditional FS and DNS ( (Mutable File System) and ).
Similar to BitTorrent, data is directly stored on participant systems, which exchange information in a P2P manner, without relying on centralized nodes. When a file with specific content is needed, the system locates participants who have that file and delivers it from their systems in parts over multiple streams. After downloading the file to their system, a participant automatically becomes one of the points for its distribution. To identify network participants that have the desired content a distributed hash table (To access the global filesystem, IPFS can utilize the HTTP protocol or mount a virtual filesystem /ipfs using the FUSE module.
IPFS helps to address issues such as storage reliability (if the original storage fails, the file can be downloaded from other users' systems), resistance to content censorship (to block it, all user systems with a copy of the data would need to be blocked), and enabling access when there is no direct internet connection or when the quality of the connection is poor (data can be downloaded through the nearest peers in the local network). In addition to file storage and data sharing, IPFS can be used as a foundation for creating new services, such as organizing the operation of websites that are not tied to servers or developing distributed applications. .
Source: opennet.ru
