A distributed, offline-capable, peer-to-peer networking protocol built for transferring data through content addressing. Built by Protocol Labs.
Uses libp2p. Contains UnixFS, pubsub, IPNS.
One concern w/ its performance is that it promiscuously peers with peers who aren’t dialable b/c they’re behind a NAT or on a phone. This can cause timeouts.
It primarily focuses on:
- cryptographic authenticity/integrity of files
- resilience to failure and untrusted users
- decentralization
- performance (you don’t have to go to a specific location to ge tthe data, you can go to where ever is the closest that has it)
- data sovereignty (users get to own their data)
- local-first software
Blocks in IPFS are identified by a CID (Content IDentifier) which is the hash of the data with it’s codec (described through multiformats).
Blocks are associated to one another (e.g. directories) using IPLD. CAR files transfer the IPLD info.
Bitswap is used to determine where content is as well as to do the data transfer. There’s also a notion of “wantlists” so nodes can get the data they want later if it happens to show up.
The history of running a network of ipfs nodes
- Dust: Multiple https://ipfs.io/ in your cluster
- Dead: https://ipfscluster.io/
- Tired: https://github.com/libp2p/hydra-booster
- Wired: https://github.com/elastic-ipfs/elastic-ipfs