What is IPFS?
The InterPlanetary File System is one of several popular new decentralized file sharing networks. Files published to IPFS are distributed across the nodes who access them. Each visitor becomes a server, and files can be routed and transferred, sort of like torrent data being assembled from bittorrent peers.
Each file is turned into a Merkle Tree, and stored based on its content hash. This content hash becomes the key in a Distributed Hash Table, allowing nodes to look up which peers have the file based on it's hash. Like with Bittorrent, this means that crawling the DHT can reveal which peers have which data meaning IPFS is not inherently anonymous.
Advantages of Content Addressing
TLDR: Drastically reduced storage footprint, permanence (not to be confused with persistence), and resiliency.
What does it take to take to share an email chain with image attachments with a million people? How many copies of that file get made on different mail servers across the world? Now multiply this times billions of emails. Now add websites that post the email online with the same images. This represents a massive inefficiency in the way we share files over TCP/IP. What if files were retrieved via content hash instead of routing by server IP address? The bajillion copies could become one single file. Wow.
IPFS goes even further by breaking down large files into 256kb chunks. This means that two video files that are identical except one version has an added intro might still share many common data chunks, further reducing the overall storage footprint.
There are some other subtle benefits of this system too. You can now go back in time and look at old versions of your website. Since everything is content addresses it will be exactly as it was in that version. If this sounds similar to the advantages of a version control system like git, its because it is. Both systems use a Merkle-DAG under the hood.
What's a Merkle-DAG?
If interested, here's the entrance to a rabbit hole about DAG vs Blockchain:
While content addressing suggests immutability, content that has not been accessed may become impossible to download from lack of peers, similar to stale torrent files (permanence vs persistence). For this reason, Filecoin was created to add a monetary incentive for users to store published data. Similarly, IOTA uses masternodes which are incentivized to store the full DAG. That being said, this structure still works really well for serving up "active" content.
This article is the source of some of the images in this post, and goes into much more detail about how IPFS works.
IPFS is used by some awesome projects like OpenBazaar. In OB, users can upload photos of the items they list for sale to IPFS. This means OB doesn't need to operate an image hosting service, or require users to use a 3rd party service like DropBox to create their listings. This allows OpenBazaar to stay as decentralized as possible while still delivering a good user experience.
Web Servers are a central point of failure. It's easy to shut them down, making censorship resistance a truly rare quality. Hiding a server behind TOR proxies does not change the fact that a single server exists, and can be unplugged, or attacked (like SilkRoad, or MegaUpload). While we have fail-overs like Cloudflare to help with DDOS attacks, they are just redundant layers of the same structure. In this paradigm, there is no built-in protection from an unjust subpoena, or overreaching government censorship for example.
Hug of Life?
Another reason to go serverless is less intuitive: speed. If we can download the website files from our nearest neighbors instead of a central server, a "hug of death" would speed things up rather than bring them to a screeching halt. This is a really interesting property of these networks in terms of scalability.
It's all about the Benjamins
Lastly, these systems could be less expensive too since you don't pay for a web host.
Lets Get Started!
While all of the technology needed to make the upgraded P2P web a reality is woefully undersupported, the seeds to an exciting new world do indeed exist, and you can get pretty far with what we have available today if you're patient and committed to decentralization.
Below, we'll go through creating a P2P website on IPFS (includes a demo site you can download that is ready to publish), creating an IPNS record, and touch on linking it to a distributed DNS system so it can be accessed using a standard domain name (such as a Namecoin's .bit addresses). The goal is to create a website with no central points of failure or censorship opportunities at all.
11 of 11 reviewers say it's worth paying for
0 of 11 reviewers say it's not worth paying for