InterPlanetary File System (IPFS) is a decentralized storage network on the Internet that is architected like a blockchain. Although any type of data can be stored on IPFS, it is mostly used for storing content non-fungible tokens (NFTs) are certifying.  
IPFS was developed by Juan Benet and Protocol Labs, the company he founded, maintains it. In order to develop IPFS, the developers took the decentralized nature of Git and the distributed, bandwidth-saving techniques of torrents and created a filing system that works across all of the nodes in the IPFS network.
IPFS files are stored on multiple nodes and are addressed with a content identifier (CID) rather than a physical location. The CID contains the hash of the file, which is a digest of the file's data, the IPFS finds the actual file.
The hash computation ensures that there cannot be multiple files with the same content but with different file names.
An IPFS is maintained by interested parties, and the more volunteers, the greater chance that the data will be available if one or more nodes go offline either temporarily or forever.
Once files are added to an IPFS, they can be removed but they cannot be altered. However, files can be updated by creating new objects that link to the previous ones. Thus, IPFS creates its own versioning system.
How the IPFS Works
The IPFS decentralized web is made up of all the computers connected to it, known as nodes. Nodes can store data and make it accessible to anyone who requests it.
If someone requests a file or a webpage, a copy of the file is cached on their node. As more and more people request that data, more and more cached copies will exist. The burden of delivering the data and fulfilling the request is gradually shared out amongst many nodes.
This calls for a new type of web address. Instead of address-based routing where you have to know the location of the data and provide a specific URL to that data, the decentralized web uses content-based routing.
You don’t say where the data is; you request what you want, and it is found and retrieved for you. Because the data is stored on many different computers, all of those computers can feed parts of the data to your computer at once, like a torrent download. This is intended to lower latency, reduce bandwidth, and avoid bottlenecks caused by a single, central, server.
How Data Is Stored
Data is stored in chunks of 256 KB, called IPFS objects. Files larger than that are split into as many IPFS objects as it takes to accommodate the file. One IPFS object per file contains links to all of the other IPFS objects that make up that file.
When a file is added to the IPFS network it is given a unique, 24-character hash ID, called the content ID, or CID. That’s how it is identified and referenced within the IPFS network. Recalculating the hash when the file is retrieved verifies the integrity of the file. If the check fails, the file has been modified. When files are legitimately updated, IPFS handles the versioning of files.
IPFS and Blockchains
Because of the similarity in their structure, IPFS and blockchains can work well together. In fact, Juan Benet, the inventor of IPFS calls this a “great marriage.” IPFS is one of a few projects that are part of a group called Protocol Labs, which was also founded by Benet. Some projects from Protocol Labs closely related to IPFS are IPLD (Inter-Planetary Linked Data) and Filecoin. IPLD is a data model for distributed data structures like blockchains. This model allows for easy storage and access of blockchain data through IPFS. Users willing to store IPFS data will be rewarded with Filecoin. IPLD allows users to seamlessly interact with multiple blockchains and has been integrated with Ethereum and Bitcoin.
IPFS connects all these different blockchains in a way that’s similar to how the web connects all these websites together. The same way that you can drop a link on one page that links to another page, you can drop a link in ethereum [for example] that links to zcash and IPFS can resolve all of that. — Juan Benet
IPFS and other projects from Protocol Labs are ambitious by nature. The idea of a permanent web that is resilient and efficient were no doubt also the goals of the original inventors of our internet protocols. However, over time as our usage of the web changed, weaknesses in these protocols became evident. Although it is in its early stages, IPFS shows promise in being a crucial piece of a new decentralized technology stack.
Did you find this article interesting?