From /tech/ Wiki
Jump to navigationJump to search

IPFS (InterPlanetary File System) is a content-addressed distributed file system. IPFS is also a catch-all phrase for a variety of inter-related projects maintained by Protocol Labs. The goal of IPFS is to replace HTTP as the dominate hypermedia protocol on the internet.

This Stallman pic has the following IPFS multihash: QmbtzK4j3Qa9RvLkP3K4dYoptdopY181QL96deHtvYuX4h.

The IPFS Stack

  • IPFS
  • Multiformats
    • Multihash - self-describing hashes
    • Multiaddr - self-describing network addresses
    • Multibase - self-describing base encodings
    • Multicodec - self-describing serialization
    • Multistream - self-describing stream network protocols
    • Multigram (WIP) - self-describing packet network protocols
  • IPLD - Abstract Data Model
  • libp2p - Networking and Peer Discovery
  • Filecoin - Incentive Layer

"Hey pal, what are you pulling here, huh? Multi-what?" may be what you're saying.

IPFS uses multihashes to address data. The hash addresses it's own hash algorithm.

The first two digits of a multihash identify the hash algorithm. IPFS uses SHA256 which is represented as Qm. The rest of a multihash is not simply the output of SHA-256. Try it yourself, it's not.

There's a lot of chunking, hashing, and other magic going on behind the scenes. The end result is you get something that looks like this QmRW3V9znzFW9M5FYbitSEvd5dQr which is a multihash.

Multiformats, libp2p and IPLD are separate projects from IPFS that can be used independently of IPFS. Ethereum 2.0 will likely incorporate libp2p.

IPFS Gateways

There is no shortage of IPFS gateways. ipfs.io is run by Protocol Labs. Cloudflare also runs a gateway. There is a gateway over Tor if needed.

External links