1. What is IPFS?
IPFS (InterPlanetary File System) is an open-source hypermedia communication protocol by which peer-to-peer nodes store and distribute data in a single distributed file system.
The author of the solution, Juan Benet, founder and head of the U.S. startup Protocol Labs, has called it a “Distributed, Permanent Web,” meaning that a site created in IPFS can never be closed by anyone.
“In a sense, IPFS is similar to the Internet, but IPFS can be seen as a single BitTorrent swarm exchanging objects in a single Git repository. In other words, IPFS represents a high-performance block storage model with content-addressable hyperlinks,” he explained in the project’s whitepaper.
2. How does IPFS work?
When information is loaded into IPFS, the address for accessing an object, file, or user data in the system is generated with reference not to the server, but to its unique cryptographic hash identifier (Content Identifier, CID).
When a file is reloaded, the CID does not change and new hash identifiers are assigned to updated versions of the file. So that users who have access to an earlier version of a file can have it for later versions as well, the InterPlanetary Naming System (IPNS) – an analogue of DNS on the traditional Internet – is used.
The system splits files larger than 256 Kb into parts, hashes them and organizes into IPLD objects (InterPlanetary Linked Data) consisting of two components: the data and links to the parts of the file connected to each other by using a directed acyclic Merkle tree graph (Merkle DAG).
Then, the software responsible for communication in the system, IPFS daemon, temporarily caches the data or at the choice of the user “pin” them to itself permanently and on request distributes them to other nodes. Subsequently, such nodes can serve as content providers or remain content recipients.
After requesting the content in the distributed hash table (Distributed Hash Table, DHT) the system searches for nodes nearest to the user with a copy of the desired data, and it is they who provide parts of the file.
Example of a hyperlink in IPFS:
3. How is IPFS used?
The IPFS protocol and implementations are still under development and may contain bugs and hidden vulnerabilities. However, it is believed that IPFS can be useful for storing important information and creating static sites. In practice, its use increases data transfer speed and network bandwidth, reduces the load on nodes by distributing it, bypasses censorship, and avoids DDoS attacks and dead links. There is no point of failure in the system, and nodes do not need to trust each other. In addition, content in IPFS can theoretically be stored forever.
The first IPFS-enabled web resource in 2015 was the hosting service Neocities. Decentralized video platform DTube, online trading platform OpenBazaar and other solutions were created on the basis of IPFS.
The IPFS link added to a cryptocurrency transaction allows huge amounts of change-protected data to be stored in the blockchain without weighing it down. For example, this spring after Julian Assange was arrested, a Bitcoin Cash developer posted a full archive of Wikileaks documents – about 30 GB – on Wikileaks.cash in IPFS and as a link in the BCH blockchain as a sign of support.
Since 2014, the Protocol Labs development team has also been working on creating a decentralized Filecoin file hosting service based on IPFS. The project is preparing to launch test and main networks, but back in 2018, Juan Benet discovered that his company’s work has inspired the creators of TRON: several sheets from the documentation on Filecoin and IPFS in a slightly modified form were included in the whitepaper of this Chinese project. And in the spring of 2019, TRON announced its intention to launch its own version of IPFS based on BitTorrent – BTFS.