As an enthusiast of the decentralized blockchain technology, although, i must remark, that I am not an expert on the topic, i enjoy reading papers and articles about it and I can say that it is easy to hear about the deployment of disruptive technologies aimed to change the world and, many times, if we delve into it and we do some investigation this promising technologies doesn’t provide us any enhancement with respect to the current classical solutions.
Nevertheless, time ago, I had read about a decentralized protocol which aim for (nothing more and nothing else) replacing the application layer protocol HTTP, which, today, is showing performance constraints. This sounds as surprisingly that I must read more about that, this novel protocol pretends to build a new web decentralized infrastructure changing the way in that web page distribution is currently working.
In July 2014, Juan Benet, father of the creature, published its whitepaper [Benet, Juan. (2014). IPFS - Content Addressed, Versioned, P2P File System. ] . As it is stated in the document abstract: "The InterPlanetary File System (IPFS) is a peer-to-peer distributed file system that seeks to connect all computing devices with the same system of files", this sounds awesome, and has many implications, so...go for it and take a deeper look into it.
So, what is IPFS?, I believe that the previous sentence is quite exact thereon, but doesn’t clarify us anything about the way it is implemented. The solution proposed by Juan Benet capitalize solutions applied to classical and widely used peer-to-peer systems, actually, IPFS is a infrastructure built using well known algorithms. All this well proven techniques are combined in a cohesive way. IPFS uses Distruted Hash Tables (DHT), BitTorrent solutions, as its data exchange protocol, the tracking of availability of file pieces or the peer bandwidth allocation strategy ( PropShare ), besides, IPFS also leverages the way in that the Git version control implementation works (Merkle DAG-Merkle Directed Acyclic Graph) ,other concepts related with self-certified file systems are also used.
The interesting part of all of this,is that, instead of looking for the physical location of data, as we do when using HTTP (we ask a server for a web page and the server serve us the requested content), with IPFS, we are looking for the content following a p2p schema. I think on it as a giant decentralized database where all files are referenced by its hash, when you ask for a file into the network you look for its hash instead of looking for the server where it is stored, Do you believe that this is disruptive?, I do¡. Anyone involved in the network, i.e. anyone who runs a node, can store a hash reference to a file, the best part, in my opinion, comes when you download a file from the network ,from this moment, you becomes a content host,you are now part of the giant database, you are at the same time a client and a host.
This decentralized approach is awesome and avoid many obvious problems, as it is stated in the ipfs web page, decentralization "supports a resilient internet", we don't depend of a single data origin, this make this system resilient, against, for example, DOS attacks, decentralization "makes it harder to censor content", internet has as a foundation principle the free access to information, unfortunatelly, this is not possible in many places, IPFS makes harder for some dictatorial states blocking the access to information, besides, decentralization "can speed up the web when you are far away or disconnected" ,this is because the protocol ,by design, searches firstly the information in the closest nodes (for example, in your own network), in certain communities, where the access to wider internet is slow this might becomes a great performance improvement.
At this point,as a reader, you may say...you begin the article speaking about blockchain but What is the relation between IPFS and the blockchain technologies? ,ok, good question, let's go. IPFS can be also used to serve applications, not only files, in what way can we do that?, using it in combination with a blockchain. The blockchain technology can be used as a application back-end leveraging the smart contracts potential (Ethereum can be an example) and the front end can be served from IPFS network.
IPFS is very good to solve the limitation of storing files in a blockchain, in general, blockchains are not good storing big amounts of data, then, IPFS can be used to do that, and example of this approach is Filecoin [https://www.filecoin.io].
Keep an eye on this¡¡,maybe this technology is the future of web,or no...who knows?