new release of the decentralized file system (InterPlanetary File System), creating a global versioned storage for files, deployed as a P2P network formed from participant systems. IPFS combines ideas previously implemented in systems like Git, BitTorrent, Kademlia, SFS, and the Web, resembling a single 'swarm' of BitTorrent (peers participating in the sharing), exchanging Git objects. Access to the global File System can be made through the HTTP protocol or by mounting a virtual FS /ipfs using the FUSE module. The reference implementation code is written in Go and under Apache 2.0 and MIT licenses. Additionally there is an implementation of the IPFS protocol in JavaScript, which can work in a browser.
A key of IPFS is content addressing, where the link for accessing a file is directly tied to its contents (including the cryptographic hash of the content). IPFS has built-in support for versioning. A file's address cannot be randomly renamed; it can only change when the content changes. Similarly, it is impossible to modify a file without changing its address (the old version will remain at the previous address, and the new one will be accessible via a different address, as the hash of the file's content will change). Given that the file identifier changes with every modification, services are provided to bind permanent addresses accounting for different versions of the file, to avoid having to pass new links every time (), 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 ().
Essentially, IPFS can be seen as a distributed reincarnation of the Web, with addressing based on content rather than location and arbitrary names. Besides file storage and data sharing, IPFS can serve as a foundation for creating new services, such as organizing the operation of websites that are not tied to servers, or for developing distributed applications. .
IPFS helps address issues such as reliable storage (if the original storage goes down, the file can be retrieved from other users' systems), resisting content censorship (blocking would require shutting down all users' systems that have a copy of the data), and enabling access in the absence of a direct internet connection or in conditions of poor signal quality (data can be downloaded through nearby peers on a local network).
In the version , performance and reliability have been significantly improved. The public network based on IPFS has surpassed 100,000 nodes, and the changes in IPFS 0.5 reflect the protocol's adaptation to work under such conditions. The optimizations have primarily focused on enhancing the content routing mechanisms responsible for data discovery, announcing, and retrieval, as well as on improving the efficiency of the implementation of (DHT), which provides information about nodes that have the sought data. The code related to DHT has been almost completely rewritten, significantly speeding up content search and IPNS record determination.
In particular, the speed of data addition operations has increased by 2 times, announcing new content to the network by 2.5 times,
data retrieval by 2 to 5 times, and content search by 2 to 6 times.
The redesigned routing and announcement mechanisms have accelerated network operation by 2-3 times due to more efficient use of bandwidth and background traffic transfer. The next release is set to introduce transport based on the QUIC protocol, which will enable even greater performance gains by reducing delays.
The performance has been accelerated and the reliability of the IPNS (Inter-Planetary Name System) has increased, which is used for creating permanent links to changing content. The new experimental pubsub transport has enabled us to accelerate the delivery of IPNS records by 30-40 times during testing on a network with a thousand nodes (a special simulator was developed for these experiments. ). The performance of the Badger layer, used for interaction with the operating system's filesystem, has approximately doubled. Thanks to support for asynchronous write operations, Badger now works 25 times faster than the old flatfs layer. Performance improvements have also affected the
Bitswap Among the functional improvements, the use of TLS for encrypting connections between clients and servers is noteworthy. Support for subdomains in the HTTP gateway has been added, allowing developers to host decentralized applications (dapps) and web content in isolated subdomains that can be used with hash addresses, IPNS, DNSLink, ENS, etc. A new namespace /p2p has been added for data related to peer addresses (/ipfs/peer_id → /p2p/peer_id). Support for blockchain-based "eth" links has been introduced, which will expand the use of IPFS in distributed applications.
The startup Protocol Labs, which supports the development of IPFS, is also simultaneously developing the
FileCoin Filecoin The V8 developers have introduced a decompiler for WebAssembly.
Source: opennet.ru
