IPFS (the InterPlanetary File System) is a hypermedia distribution protocol addressed by content and identities. It enables the creation of completely distributed applications, and in doing so aims to make the web faster, safer, and more open. It is a free, open-source project with thousands of contributors.
IPFS is a distributed file system that seeks to connect all computing devices with the same system of files. It is becoming a new major subsystem of the internet. If built correctly, it could complement or replace HTTP. It could complement or replace even more.
Now let's go point-by-point into how.
IPFS is a protocol:
- Defines a content-addressed file system
- Coordinates content delivery
- Combines Kademlia + BitTorrent + Git
IPFS is a file system:
- Has directories and files
- Is a mountable filesystem (via FUSE)
- FUSE is a Filesystem in USErspace
IPFS is a web:
- Can be used to view documents like the conventional web
- Files are accessible via HTTP at https://ipfs.io/
- Browsers and extensions can learn to use the ipfs:// URL or dweb:/ipfs/ URI schemes directly
- Hash-addressed content guarantees the authenticity
IPFS is modular:
- Connection layer over any network protocol
- Routing layer
- Uses a routing layer DHT (Kademlia/Coral)
- Uses a path-based naming service
- Uses a BitTorrent-inspired block exchange
IPFS uses crypto:
- Cryptographic-hash content addressing
- Block-level deduplication
- File integrity plus versioning
- File-system-level encryption plus signing support
IPFS is P2P (Peer to Peer):
- Worldwide peer-to-peer file transfers
- Completely decentralized architecture
- No central point of failure
IPFS is a CDN:
- Add a file to the file system locally, and it's now available to the world
- Caching-friendly (content-hash naming)
- BitTorrent-based bandwidth distribution
IPFS has a name service:
- IPNS, an SFS-inspired name system
- IPNS is called InterPlanetary Name System
- Global namespace based on PKI (Public Key Infrastructure)
- It serves to build trust chains
- It's compatible with other NSes (Name Services)
- Can map DNS, .onion, .bit, etc. to IPNS