Ehe InterPlanetary File System project or Interplanetary File System (IPFS) is a curious project with a fairly clear objective: create a computer network with a global reach that allows the storage of information in a completely decentralized manner, with high scalability, and of course, with great resistance to censorship of any kind.
You can imagine it as a huge network that contains huge amounts of information spread all over the world and which you can access in a totally transparent and secure way. Without a doubt, the perfect complement to the ever-growing Internet, whose reach now reaches even the smallest electronic devices such as our clocks, alarm clocks and even coffee makers.
But what is behind this project? As start? What solution does it bring to our digital world? Well, you will know the answers to these and more questions below.
IPFS, the beginnings of the project
IPFS is an idea that comes from the mind of Juan Benet, a programmer who founded the company in 2014 Protocol Labs. However, it was not until 2015, when Benet presented IPFS to the world. The idea is to build a P2P network that allows those who are part of it, to store and distribute information in a completely decentralized way throughout the planet. The system works based on the well-known technology of distributed hash table or DHT, the same that is used in the BitTorrent protocol, from which IPFS takes some functions for your P2P network.
Since then IPFS has been a project in constant development and version 0.7.0 of this system is currently available. Although it is a development version, IPFS currently allows the deployment of many of its final functions in a stable way, and many of them are still in constant improvement, making it clear that it is a system that we can use today.
A file system for the Internet
However What led to the creation of IPFS? Well, basically the creation of IPFS comes to solve a gigantic storage space need that is constantly expanding with the current Internet that we have. It is estimated that a total of 2019 zettabytes of information was generated worldwide in 42. That is, 42 billion terabytes of additional information to all the data that has already been generated in previous years.
But the main problem with this data is that it ends up in the hands of third parties who generally exploit it for their different economic activities. For example, it is not uncommon for companies like Facebook to take your data on their social network and use it to sell it to third parties interested in information that may come from your tastes or activities, this in order to create profiles that allow them to offer other products and services. It may sound innocent but it is not. In fact, this is a violation of your privacy since not only your data in the social network is used, but all your activity is tracked inside and even outside the network, so that it is sold to third parties.
Other companies like Google Drive, for their part, are able to analyze what you write and save on their servers, and if they find something that "violates their regulations" they will simply delete it from their servers, without giving you the right to protect said information. in another medium. In short, the big Internet companies use your data to sell it and practice an intolerable censorship in every way.
To solve this problem, IPFS was born. The idea of IPFS is to transform the way data is stored, allowing it to be completely decentralized, and controlling access to it is in your hands at all times. Not only that, IPFS allows our computer to store data from a website and serve it to whoever needs it, whoever needs it. Well, that's IPFS, and if you're not mistaken, it's similar to what BitTorrent does to share files, only, in this case, the protocol would be integrated into applications and websites like the ones we use all the time, making the interaction with fully transparent IPFS.
Not only that, with IPFS the world's storage capacity would increase dramatically. And this because our computers would become part of that huge data disk that will store information from the entire Internet. This would help solve (or greatly decrease) the need for storage space to cope with the demand from around the world. In addition, it would help decentralize the network, and even allow us to keep a complete history of that information that interests us in a resistant and uncensored network.
How does IPFS work?
IPFS is a system that works under the "search by content" scheme, that is, every time we do a search in IPFS, we must tell the system "what we are looking for" instead of telling it "where to look for it".
Let's take a look at what all of this means for a moment, and use the current Internet as an example. When we visit a website on the Internet, what our browser does is the following:
Take the URL or address and perform a DNS query, to find out in which IP address that server is located.
Once it has the IP address, the browser makes a request for information to the server and begins to download the information.
It shows us the information of the URL that we have indicated.
This is a fairly simplified form of everything that happens every time we use our web browser. This type of operation is called "search by location", and it is so called because we need to know where the information is "located" in order to access it. That location is the IP address of the server, and from there starts the situation that nobody wants, if the server is down, you will not be able to access the information you are looking for, because the location is not available.
However, in the case of IPFS, “search by content” works in a completely different way. In fact, we can break it down as follows:
You tell the system what content you are looking for.
The system takes your request for information and sends it to the network, where the system nodes will begin to respond to you. Furthermore, such information is
protected by encryption, a data hashing system and digital signature, to prevent anyone from accessing it without permission.
You will receive the response of the nodes showing you the versions of the content available throughout the network.
If you choose an option, you will be able to access the content and even its entire history, since if that option has been displayed it is because it is active on the network at the time of your request.
This means that IPFS does searches that are defined by content, and in which nodes on the network respond. For example, if you want to enter Bit2Me Academy in IPFS, just type Bit2Me Academy, and those nodes that store information from this website will show you all the content they have stored, being able to access it at any time.
Of course, behind this there is a series of technology that makes all this possible, and that you will learn about below.
The starting point for IPFS is the Distributed Hash Table or DHT. This function is responsible for creating a unique and unrepeatable hash for each of the contents within the system. Not only that, it is also responsible for creating a global search index for the entire distributed network, making sure that the content of the network is not duplicated and allowing us to redirect searches to the correct nodes so that we can access the information whenever we want. .
Simply put, DHT creates a huge library of unique and unrepeatable hashes that allows us to quickly search for the content we want. For this system, IPFS uses the well-known SHA-256 hash, the same as that used in Bitcoin and many other cryptocurrencies. The reason? It is simple to implement, safe, and current hardware can perform the calculations allowing this job to require little computing power in generating the hashes.
A DAG to manage the network
Another important part of how IPFS works is that its network is structured in a huge DAG or Directed Acyclic Graph. This is a topic that we have already discussed here at Bit2Me Academy. Now, the IPFS DAG is specifically a Merkle DAG, that is, a DAG in which each node has a unique identifier that is a hash of the node's content.
The Merkle DAG used is only a slight modification to what would be a blockchain, where each block has a Merke Root and the data of said block is summarized. In this sense, the DAG construct has been chosen over the blockchain for a very powerful technical reason: IPFS runs asynchronously and is more scalable. Furthermore, it is a design where total immutability is not its purpose (although it is possible to configure the system to be immutable), and of course, there is no need to protect against attacks such as double spending, 51% attack, among others.
Against this technical background, the IPFS DAG is designed to enable more efficient content and search redirection between nodes. Not only that, a Merkle DAG allows the creation of “change histories” that allow us to track the individual change of files at different times, allowing us to navigate through them without problems. In this way, we can preserve not only the latest version of a website, but its complete history from when it began to its most current moment. Additionally, this feature allows the application of three important functions:
The first is the well-known "deduplication" that prevents us from having duplicate content on the node, and throughout the network.
The second is known as "delta storage" in which small files are created that allow us to know exactly what content has been changed between different versions. Thus, taking a certain base content and adding the respective deltas we can recreate a more current (or older) content than the base content that has been taken.
Finally, the third function is that this DAG allows the network to participate in user access to certain information. Thus, for example, if a data is in 2 or more nodes, the user can begin to download the information from all those locations, improving the download time and general response of the network.
Privacy in IPFS
However, the idea of storing our data on computers scattered around the world is not something that many like. The danger that this could pose to our privacy is immense so: How does IPFS solve this problem?
Well, first of all, you should know that everything in IPFS is within a public network. So, anyone can access it by having a client for it. So every piece of data you put in IPFS will be part of the DHT and Merkle DAG of the network, making it clear that everything is accessible.
This, however, is something that can be solved thanks to the fact that IPFS is a free software system and any person or group of developers can add this function to the network, allowing anonymization of data and even adding advanced cryptography to protect it from unauthorized access. This in fact is the case of several projects that use IPFS for their operation.
How much do you know, cryptonuta?
Can IPFS to bypass censorship and lack of access to websites?
One of the great features of IPFS is that it can provide access to sites that have been censored by a company or nation. A good example is the Turkish version of Wikipedia, which was duplicated using IPFS.
IPFS use cases
Now, let's know some quite striking use cases of this technology:
In the heat of the ICO fever of 2017, and looking for a way to finance his idea, the Filecoin ICO was launched, a sister project created by Juan Benet and his company Protocol Labs. The idea of Filecoin is to create an incentive system by which IPFS users are encouraged to store files that others want to store. Filecoin allows people to rent storage space that can be paid for using the FIL token.
The history of Filecoin began in 2017, and it was not until this October 29, 2020, when its network finally came out. The launch of the project generated a lot of attention and at the moment the network already stores about 1,4 Exabytes of information. In addition to a market capitalization that exceeds $ 1200 billion, and a cost of more than $ 29 per FIL token.
Audius is a music and audio sharing platform designed to provide artists with a direct link to their listeners. Using decentralized technology, Audius can guarantee artists' rights and control of their own music. All this through a censorship-resistant platform for the expression and distribution of artistic works and compositions. To create a user-owned and operated platform, having a distributed cloud storage network as the foundation for the system was key. Audius uses IPFS as the central component of decentralized storage in its mission to give everyone the freedom to share, monetize and listen to any audio.
OpenBazaar is a peer-to-peer e-commerce platform in which buyers and sellers can participate anonymously and privately without data collection by providers or any other central authority. The OpenBazaar platform is developed by OB1, who also created Haven, a mobile version of OpenBazaar that offers shopping, chat, and the ability to send cryptocurrencies privately.
IPFS serves as the data storage layer for OpenBazaar and Haven. On the network, merchants and buyers can run storage nodes, eliminating the need for a central server. By using IPFS to create this collaborative network, OpenBazaar enables buyers and sellers to trade without the risk. Risks such as centralized data collection or the threat of your personal information being hacked.
OB1 has been successfully building on IPFS since 2015. The peer-to-peer network that IPFS enables enables the team to provide a platform where people freely exchange goods. As well as allowing OB1 to be just a technology provider. This means that you are not a product vendor, network "owner," or party to peer-to-peer business.
Pros and cons of IPFS
Among the pros of IPFS we can mention:
The storage system is completely decentralized.
The network is built in order to be highly scalable.
The network can withstand denial of service attacks among others because it is fully decentralized. In this way, timely access to information is guaranteed at all times.
Its use is completely free, and the source code is available under free software licenses.
It is extensible, which allows anyone to adapt new functions without major problems. For example, privacy modules, connection to TOR, I2P, among others, can be added.
For its cons we can mention:
It is a development still in evolution, so its use in production is not yet very extensive.
It is complex to use for inexperienced users in this type of systems.
It does not have privacy extensions by default.
Unlike projects like SIA, IPFS has not been designed with an incentive model at its core. Because of this, they have had to develop separate projects like Filecoin that are limited in their integration.