-
Notifications
You must be signed in to change notification settings - Fork 232
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
47 changed files
with
324 additions
and
374 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,89 +1,87 @@ | ||
# IPFS Specs | ||
Specifications | ||
============== | ||
|
||
[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://ipn.io) | ||
[![](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](http://ipfs.io/) | ||
[![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs) | ||
|
||
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. | ||
![](media-artifacts/ipfs-splash.png) | ||
|
||
|
||
![](ipfs-splash.png) | ||
> 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. | ||
## 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. | ||
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. | ||
|
||
**(This is not done yet, but.)** | ||
I will tag different specs with their stability: | ||
**Specs are not finished yet. We use the following tag system to identify their state:** | ||
|
||
- `wip` this spec is a work-in-progress, it is likely not even complete. | ||
- `draft` this spec is a rough draft and will likely change substantially. | ||
- `stable` this spec is likely to improve, but not change fundamentally. | ||
- `reliable` this spec is believed to be close to final. Minor changes only. | ||
- `permanent` this spec will not change. | ||
- ![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square) - this spec is a work-in-progress, it is likely not even complete. | ||
- ![](https://img.shields.io/badge/status-draft-yellow.svg?style=flat-square) - this spec is a rough draft and will likely change substantially. | ||
- ![](https://img.shields.io/badge/status-reliable-green.svg?style=flat-square) - this spec is believed to be close to final. Minor changes only. | ||
- ![](https://img.shields.io/badge/status-stable-brightgreen.svg?style=flat-square) - this spec is likely to improve, but not change fundamentally. | ||
- ![](https://img.shields.io/badge/status-permanent-blue.svg?style=flat-square) - 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`. | ||
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](https://github.com/ipfs/specs/issues/) or in [active pull requests](https://github.com/ipfs/specs/pulls/). | ||
Go take a look! | ||
Note that, as in many IPFS repositories, most of the work is happening in [the issues](https://github.com/ipfs/specs/issues/) or in [active pull requests](https://github.com/ipfs/specs/pulls/). Go take a look! | ||
|
||
## Specs | ||
|
||
The specs contained in this repository are: | ||
|
||
Protocol: | ||
- [protocol](protocol) - the top-level spec and the stack | ||
|
||
Stack: | ||
- network - the network layer spec | ||
- routing - the routing layer spec | ||
- exchange - the exchange layer spec | ||
- merkledag - the Merkle DAG layer spec | ||
- ipns - the naming layer spec | ||
- app - the application layer spec | ||
|
||
Routing Systems: | ||
- kademlia - Kademlia DHT | ||
- dnssd - mDNS for local area networks | ||
- snr - supernode delegated routing | ||
- multirouter - combines multiple others | ||
|
||
Exchanges: | ||
- bitswap - BitTorrent-inspired exchange | ||
|
||
Service: | ||
- service - the spec IPFS libraries and servers should implement | ||
- service-http-api - the HTTP API version of ipfs-service | ||
- service-cli - the CLI version of ipfs-service | ||
|
||
Repository: | ||
- [repo](repo) - IPFS node local repository spec | ||
- config - IPFS node configuration | ||
- fs-repo - the spec of the fs-repo implementation | ||
|
||
Other protocols: | ||
- id - node identification | ||
- relay - the relay protocol | ||
|
||
Formats: | ||
**IPFS Protocol:** | ||
- [protocol](/architecture) - the top-level spec and the stack | ||
- [overviews](/overviews) - quick overviews of the various parts of IPFS | ||
|
||
**Networking layer:** | ||
- [libp2p](/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](/merkledag) - The MerkleDAG layer (pre IPLD) | ||
- [IPLD](/ipld) - InterPlanetary Linked Data | ||
- [unixfs](/unixfs) | ||
- [multihash](https://github.com/jbenet/multihash) - self-describing hash digest format | ||
- [multiaddr](https://github.com/jbenet/multiaddr) - self-describing addressing format | ||
|
||
**Block Exchanges:** | ||
- [bitswap](/bitswap) - BitTorrent-inspired exchange | ||
|
||
**Specific Internal Components:** | ||
- Blocks and Block Service | ||
- DAG and DAG Service | ||
- Data Importing | ||
- [Repo](/repo) - IPFS node local repository spec | ||
- config - IPFS node configuration | ||
- fs-repo - the spec of the fs-repo implementation | ||
|
||
**Files / Mutable File System:** | ||
- [Files Impl and API](/files) - Virtual File System interface, unix like, on top of the MerkleDAG | ||
|
||
**Public APIs:** | ||
- [Core API](/public-api/core) - IPFS programmatic interface | ||
- [HTTP API](https://github.com/ipfs/http-api-spec) - IPFS HTTP API specification | ||
- [CLI](/public-api/cli) - Command Line Interface | ||
|
||
**Records and Record Systems:** | ||
- [IPRS](/iprs-interplanetary-record-system) - InterPlanetary Record System | ||
- [IPNS](ipns-interplanetary-naming-system) - InterPlanetary Naming System | ||
|
||
**Key Management:** | ||
- [KeyStore](/keystore) - Key management on IPFS | ||
- [KeyChain](/keychain) - Distribution of cryptographic Artificats | ||
|
||
**Other/related/included:** | ||
- [PDD](/pdd-protocol-driven-developement) - Protocol Driven Development | ||
|
||
## Collaborating | ||
|
||
Suggestions, contributions, criticisms are welcome. Though please make sure to | ||
familiarize yourself deeply with IPFS, the models it adopts, and the principles | ||
it follows. | ||
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. | ||
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. |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.