Merge pull request #98 from zixuanzh/feature-breakdown

Adding feature breakdown to readme
This commit is contained in:
Robert Zajac 2018-12-23 11:13:59 -05:00 committed by GitHub
commit f6c6ec2213
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

111
README.md
View File

@ -28,9 +28,114 @@ pytest
```
Note that tests/libp2p/test_libp2p.py contains an end-to-end messaging test between two libp2p hosts, which is the bulk of our proof of concept.
# Explanation of Basic Two Node Communication
## Feature Breakdown
py-libp2p aims for conformity with [the standard libp2p modules](https://github.com/libp2p/libp2p/blob/master/REQUIREMENTS.md#libp2p-modules-implementations). Below is a breakdown of the modules we have developed, are developing, and may develop in the future.
## Core Concepts
> Legend: :green_apple: Done   :lemon: In Progress   :tomato: Missing   :chestnut: Not planned
| libp2p Node | Status |
| -------------------------------------------- | :-----------: |
| **`libp2p`** | :green_apple: |
| Identify Protocol | Status |
| -------------------------------------------- | :-----------: |
| **`Identify`** | :tomato: |
| Transport Protocols | Status |
| -------------------------------------------- | :-----------: |
| **`TCP`** | :lemon: tests |
| **`UDP`** | :tomato: |
| **`WebSockets`** | :tomato: |
| **`UTP`** | :tomato: |
| **`WebRTC`** | :chestnut: |
| **`SCTP`** | :chestnut: |
| **`Tor`** | :chestnut: |
| **`i2p`** | :chestnut: |
| **`cjdns`** | :chestnut: |
| **`Bluetooth LE`** | :chestnut: |
| **`Audio TP`** | :chestnut: |
| **`Zerotier`** | :chestnut: |
| **`QUIC`** | :chestnut: |
| Stream Muxers | Status |
| -------------------------------------------- | :-----------: |
| **`multiplex`** | :lemon: tests |
| **`yamux`** | :tomato: |
| **`benchmarks`** | :chestnut: |
| **`muxado`** | :chestnut: |
| **`spdystream`** | :chestnut: |
| **`spdy`** | :chestnut: |
| **`http2`** | :chestnut: |
| **`QUIC`** | :chestnut: |
| Protocol Muxers | Status |
| -------------------------------------------- | :-----------: |
| **`multiselect`** | :green_apple: |
| Switch (Swarm) | Status |
| -------------------------------------------- | :-----------: |
| **`Switch`** | :lemon: tests |
| **`Dialer stack`** | :chestnut: |
| Peer Discovery | Status |
| -------------------------------------------- | :-----------: |
| **`bootstrap list`** | :green_apple: |
| **`Kademlia DHT`** | :tomato: |
| **`mDNS`** | :tomato: |
| **`PEX`** | :chestnut: |
| **`DNS`** | :chestnut: |
| Content Routing | Status |
| -------------------------------------------- | :-----------: |
| **`Kademlia DHT`** | :tomato: |
| **`floodsub`** | :tomato: |
| **`gossipsub`** | :tomato: |
| **`PHT`** | :chestnut: |
| Peer Routing | Status |
| -------------------------------------------- | :-----------: |
| **`Kademlia DHT`** | :tomato: |
| **`floodsub`** | :tomato: |
| **`gossipsub`** | :tomato: |
| **`PHT`** | :chestnut: |
| NAT Traversal | Status |
| -------------------------------------------- | :-----------: |
| **`nat-pmp`** | :chestnut: |
| **`upnp`** | :chestnut: |
| **`ext addr discovery`** | :chestnut: |
| **`STUN-like`** | :chestnut: |
| **`line-switch relay`** | :chestnut: |
| **`pkt-switch relay`** | :chestnut: |
| Exchange | Status |
| -------------------------------------------- | :-----------: |
| **`HTTP`** | :chestnut: |
| **`Bitswap`** | :chestnut: |
| **`Bittorrent`** | :chestnut: |
| Consensus | Status |
| -------------------------------------------- | :-----------: |
| **`Paxos`** | :chestnut: |
| **`Raft`** | :chestnut: |
| **`PBTF`** | :chestnut: |
| **`Nakamoto`** | :chestnut: |
## Explanation of Basic Two Node Communication
### Core Concepts
_(non-normative, useful for team notes, not a reference)_
@ -44,7 +149,7 @@ Several components of the libp2p stack take part when establishing a connection
5. **Secure channel**: optionally establishes a secure, encrypted, and authenticated channel over the _Connection_.
5. **Upgrader**: a component that takes a raw layer 3 connection returned by the _Transport_, and performs the security and multiplexing negotiation to set up a secure, multiplexed channel on top of which _Streams_ can be opened.
## Communication between two hosts X and Y
### Communication between two hosts X and Y
_(non-normative, useful for team notes, not a reference)_