/specs

Technical specifications for the IPFS protocol stack

IPFS Specifications

Matrix IRC Discord

This repository contains the specs for the IPFS Protocol and associated subsystems.

Understanding the meaning of the spec badges and their lifecycle

We use the following label system to identify the state of each spec:

  • - A work-in-progress, possibly to describe an idea before actually committing to a full draft of the spec.
  • - A draft that is ready to review. It should be implementable.
  • - A spec that has been adopted (implemented) and can be used as a reference point to learn how the system works.
  • - We consider this spec to close to final, it might be improved but the system it specifies should not change fundamentally.
  • - This spec will not change.
  • - This spec is no longer in use.

Nothing in this spec repository is permanent or even stable yet. Most of the subsystems are still a draft or in reliable state.

Index

The specs contained in this repository are:

  • IPFS Protocol:
  • User Interface (aka Public APIs):
  • Data Formats:
    • IPLD - InterPlanetary Linked Data.
    • Merkle DAG (Deprecated)
    • Self Describing Formats (multiformats):
      • multihash - self-describing hash digest format.
      • multiaddr - self-describing addressing format.
      • multicodec - self-describing protocol/encoding streams (note: a file is a stream).
      • multistream - multistream is a format -- or simple protocol -- for disambiguating, and layering streams. It is extremely simple.
  • Files / Mutable File System:
  • Storage Layer:
    • Pinning
    • Repo - IPFS node local repository spec
  • Block Exchanges:
    • Bitswap - BitTorrent-inspired exchange
  • Key Management:
    • KeyStore - Key management on IPFS
    • KeyChain - Distribution of cryptographic Artifacts
  • Networking layer:
    • libp2p - libp2p is a modular and extensible network stack, built and use by IPFS, but that it can be reused as a standalone project. Covers:
  • Records, Naming and Record Systems:
    • IPNS - InterPlanetary Naming System
  • Other/related/included:
    • PDD - Protocol Driven Development

Contribute

Suggestions, contributions, criticisms are welcome. Though please make sure to familiarize yourself deeply with IPFS, the models it adopts, and the principles it follows. This repository falls under the IPFS Code of Conduct.