To understand how and where we store files, first, you need to know what the IPFS is. The IPFS or InterPlanetary File System is a protocol and a p2p (peer-to-peer) file-sharing system. It stores and shares data in a distributed file system aiming to change the way information is distributed around the world.
IPFS was created in February 2015 when Protocol Labs wanted to build a system that would fundamentally change the way data is transmitted around and beyond the globe, aiming to pave the way for a more resilient web and distribution of information. It allows users to host content as well as receive it, similarly to BitTorrent.
How Does IPFS Work?
What makes IPFS very convenient for users is the fact that it’s built around a decentralized system of user-operators who hold a portion of the overall data. What makes it a lot easier for data to be managed, distributed, and secured is the fact that it's stored in centralized servers and accessed by location-based addressing. That's also very convenient for scaling the capacity of both servers and clients.
IPFS was designed to point the weaknesses of the client-server model and HTTP web using its p2p file-sharing system. Hundreds of developers worked on creating IPFS using new and exciting innovations, and we'll try to explain 3 of the most important ones:
1. Distributed Hash Tables
2. Block Exchanges
3. Merkle DAG
Distributed Hash Tables (DHT)
A distributed hash table or DHT is a decentralized storage system. It stores information as a key/value pair where data is spread across a network of computers and coordinated efficiently. The main advantages of DHTs are that they’re decentralized and autonomous, reliable, and scalable, which makes the system resilient.
IPFS implements the generalized version of Bittorent’s data exchange protocol that successfully transfers data between millions of nodes. Its version of this protocol is called BitSwap, which represents a marketplace for any type of data.
A Merkle DAG is a Directed Acyclic Graph (DAG) combined with Merkle Tree (hash tree). The main purpose of hash trees is to allow secure and efficient verification of any kind of data that is stored and transferred, as well as to ensure that data blocks exchanged on p2p (peer-to-peer) networks are not damaged or altered when received, or even to check if other peers sent fake blocks. Among many useful features, it significantly strengthens and improves the security of IPFS, which makes it far more secure than client-server systems.
IPFS is a decentralized and secure way to store, handle and transfer data in and between computers. It can be used in many different ways, from delivering content to websites, to storing and creating backups, secure file-sharing, and encrypted communication. In the long run, IPFS and its complementary protocols could provide a more resilient infrastructure for the next generation of the web.