IPFS in Plain English

The goal is to explain the InterPlanetary File System in “plain English”. That is, end users (early adopter end users, but end users all the same) understanding what it is.

1 Like

Anyone on the forum good at this? I have not understood thus far.

It’s on my TODO list! I explained this to someone in a series of very long emails the other day, that I should post here and try and improve.

Is the goal to explain IPFS in particular, libp2p and all? I think explaining “the content-addressable web” is a lot easier and a great start, not sure what else would be useful to include in a person’s first contact with it that is specific to how IPFS in particular does things.

In the context of why Fission chose IPFS as one of our technical building blocks, it’s IPFS in particular.

Agreed that content addressing is the attribute that is important for us.

1 Like

creating an analogy to bittorrent: my understanding is that data on ipfs can be hosted on various [‘nodes’] (which are like seeders) and is downloaded from the most convenient one (maybe the closest one?). i’ve heard boris say something like as long as there is one [‘node’] with the data, it’s accessible to the entire network. have i misunderstood anything here?

does the ‘availability’ translate to censorship-resistance? why isn’t it easy to just block a particular [‘node’] or all of ipfs?

Yes, like BitTorrent. There are components of both BitTorrent and git in IPFS.

Node is the correct language. A node is an instance of an IPFS server. go-ipfs is the most common one. Fission runs js-ipfs in the browser as a node that connects to the IPFS network.

Each piece of content is hashed and split into a tree of blocks, each block also having a hash. The blocks are around 30K in size, so a 100K file would be 4 blocks.

The root hash or content address is unique.

Asking for that content address sends messages between the nodes seeing if nearby nodes have that content or any of the sub-blocks, which will then send them along if they have them, as well as passing on the request to other peer nodes.

The blocks are also stored / cached at intermediate nodes. Eventually they are discarded unless they are “pinned”.

Blocking a node: nodes connect to each other peer-to-peer using libp2p for the peer connections. If one connection is blocked, there can be other paths.

Network blocking is possible for all protocols. But anyone can run a node and doesn’t need access to the Internet as a whole.
So you could run it on your phone or laptop and connect over local Wifi or Bluetooth and share with people.

Also, because of how content has a unique address that is immutable, any time anyone plugs in a USB key holding a copy of that content and runs a node, it’s once again available on the network. As opposed to something running on a server with a domain name or IP address can be blocked. It’s the content itself that is the address.

Most often people need to run things like Tor to protect their network connection as another way to prevent being blocked.

1 Like

very cool, i want to see this as dataviz.

ok so because it’s p2p, it’s roughly as hard to censor as bittorrent, and if the protocol is network blocked in an entire country: 1) people can setup local nodes hands across america style and the data will eventually find its way in or out, or 2) someone uses a different protocol and makes it available locally to propagate from within.

1 Like