Few days ago, the launch of the new version of the decentralized file system IPFS 0.8.0 (InterPlanetary File System), which is a global versioned file storage implemented in the form of a P2P network made up of member systems.
IPFS combines ideas previously implemented in systems like Git, BitTorrent, Kademlia, SFS and the Web to look like a single BitTorrent swarm (peers participating in distribution) exchanging Git objects. IPFS is addressed by content rather than location and arbitrary names. The reference implementation code is written in Go and is licensed by Apache 2.0 and MIT.
For those who are unfamiliar with IPFS, they should know that in this file system a file link is directly related to its content and includes a cryptographic hash of the content. File address cannot be arbitrarily renamed, it can only be changed after changing the content. Similarly, it is impossible to make a change to the 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).
Taking into account that the file identifier changes with each change, so as not to transfer new links each time, services are provided to link permanent addresses that take into account different versions of the file (IPNS), or set an alias by analogy with traditional FS and DNS.
After downloading the file to your system, the participant automatically becomes one of the points for distribution. A distributed hash table (DHT) is used to determine the network participants on the nodes of which the content of interest is present.
IPFS helps solve problems such as storage reliability (if the original storage is disabled, the file can be downloaded from other users' systems), to withstand content censorship and also to be able to organize access in the absence of an Internet connection or if the quality of the communication channel is poor .
Main new features of IPFS 0.8
In this new version the ability to create external services was implemented to pin user data (pin - bind data to a node, to ensure that important data is saved). The data assigned to the service can have separate names, different from the content identifier (CID), so it is possible to search for data both by name and by CID.
To process data fix requests, IPFS Pinning Service API is proposed, which can be used directly in go-ipfs. In the command line to pin, the command "ipfs pin remote" is offered.
The pin subsystem has been redesigned to make it much faster and more flexible in the way it tracks pins. For users who work with many pins, this will lead to a large speed increase in the list and modification of the set of anchored elements, as well as a decrease in memory use.
Part of the redesign was configured to take into account the ability to interact with the pins locals in the same way that we can now interact with remote pins (eg names, being able to set the same CID multiple times, etc.). Stay tuned for more fixation enhancements.
When generating "https: //" links for gateways, the ability to transfer DNSLink names using subdomains has been added.
Links are now usable, where periods in original names are replaced with the "-" character and existing "-" characters are escaped with another similar character, and support for the QUIC protocol has been extended. To increase performance, the ability to increase receive buffers for UDP is provided.
Finally if you want to know more about it about this new version, you can check the details in the following link.
How to use IPFS on Linux?
For those who are interested in being able to implement IPFS in their system, they can do so by following the instructions that are detailed in this article.