GithubHelp home page GithubHelp logo

kryndex / specs-1 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ipfs/specs

0.0 2.0 0.0 10.58 MB

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

Home Page: http://ipfs.io

Go 100.00%

specs-1's Introduction

Specifications

standard-readme compliant

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

Some day we will hopefully transform these specs into RFCs. For now, they assume a high level of familiarity with the concepts.

Table of Contents

Work In Progress

Warning: this is a work in progress. IPFS is a young system and we want to get it right. We will continue to evaluate and re-think pieces. At this point, the IPFS protocol is solid enough to write this spec and produce interoperable implementations in different languages.

Specs are not finished yet. We use the following tag system to identify their state:

  • - this spec is a work-in-progress, it is likely not even complete.
  • - this spec is a rough draft and will likely change substantially.
  • - this spec is believed to be close to final. Minor changes only.
  • - this spec is likely to improve, but not change fundamentally.
  • - this spec will not change.

Nothing in this spec repository is permanent yet. The most important pieces of IPFS are now reliable or stable. Many subsystems remain as draft.

Note that, as in many IPFS repositories, most of the work is happening in the issues or in active pull requests. Go take a look!

Specs

The specs contained in this repository are:

IPFS Protocol:

  • protocol - the top-level spec and the stack
  • overviews - quick overviews of the various parts of IPFS

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:
    • network - the network layer spec
    • routing - the routing layer spec
      • kademlia - Kademlia DHT
      • relay - the relay protocol
      • dnssd - mDNS for local area networks
      • snr - supernode delegated routing
      • multirouter - combines multiple others

Data Structures and formats:

  • MerkleDAG - The MerkleDAG layer (pre IPLD).
  • IPLD - InterPlanetary Linked Data.
  • unixfs
  • 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.

Block Exchanges:

  • bitswap - BitTorrent-inspired exchange

Specific Internal Components:

  • Blocks and Block Service
  • DAG and DAG Service
  • Data Importing
  • Repo - IPFS node local repository spec
    • config - IPFS node configuration
    • fs-repo - the spec of the fs-repo implementation

Files / Mutable File System:

Public APIs:

  • CLI - Command Line Interface
  • HTTP API - IPFS HTTP API specification
  • Core API - IPFS programatic interface

Records and Record Systems:

  • IPRS - InterPlanetary Record System
  • IPNS - InterPlanetary Naming System

Key Management:

  • KeyStore - Key management on IPFS
  • KeyChain - Distribution of cryptographic Artificats

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.

Please be aware that specs are really hard to design by committee. Treat this space like you would the workshop of an artist. Please suggest improvements, but please don't be disappointed if we say no to something. What we leave out is often more important than what we add in.

Feel free to join in. All welcome. Open an issue!

This repository falls under the IPFS Code of Conduct.

License

TBD. See ipfs#137.

specs-1's People

Contributors

daviddias avatar jbenet avatar mildred avatar richardlitt avatar ivilata avatar whyrusleeping avatar jesseweinstein avatar dignifiedquire avatar noffle avatar elavoie avatar xioustic avatar sidharder avatar chriscool avatar wking avatar findkiko avatar pokeball99 avatar mateon1 avatar keks avatar remram44 avatar wasserfuhr avatar nicola avatar musoke avatar mnp avatar mitar avatar michaelmure avatar therealklanni avatar kubuxu avatar harlantwood avatar eobrain avatar dukejones avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.