mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2025-12-31 20:36:24 +00:00
run lint and fix errors, except mypy
This commit is contained in:
195
README.md
195
README.md
@ -9,12 +9,12 @@
|
||||
[](https://riot.permaweb.io/#/room/#libp2p:permaweb.io)
|
||||
[](https://discord.gg/66KBrm2)
|
||||
|
||||
|
||||
<h1 align="center">
|
||||
<img width="250" align="center" src="https://github.com/libp2p/py-libp2p/blob/master/assets/py-libp2p-logo.png?raw=true" alt="py-libp2p hex logo" />
|
||||
</h1>
|
||||
|
||||
## WARNING
|
||||
|
||||
py-libp2p is an experimental and work-in-progress repo under heavy development. We do not yet recommend using py-libp2p in production environments.
|
||||
|
||||
The Python implementation of the libp2p networking stack
|
||||
@ -22,9 +22,11 @@ The Python implementation of the libp2p networking stack
|
||||
Read more in the [documentation on ReadTheDocs](https://py-libp2p.readthedocs.io/). [View the release notes](https://py-libp2p.readthedocs.io/en/latest/release_notes.html).
|
||||
|
||||
## Sponsorship
|
||||
|
||||
This project is graciously sponsored by the Ethereum Foundation through [Wave 5 of their Grants Program](https://blog.ethereum.org/2019/02/21/ethereum-foundation-grants-program-wave-5/).
|
||||
|
||||
## Maintainers
|
||||
|
||||
The py-libp2p team consists of:
|
||||
|
||||
[@zixuanzh](https://github.com/zixuanzh) [@alexh](https://github.com/alexh) [@stuckinaboot](https://github.com/stuckinaboot) [@robzajac](https://github.com/robzajac) [@carver](https://github.com/carver)
|
||||
@ -70,125 +72,114 @@ ptw --onfail "notify-send -t 5000 'Test failure ⚠⚠⚠⚠⚠' 'python 3 test
|
||||
|
||||
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.
|
||||
|
||||
|
||||
### Release setup
|
||||
|
||||
<<<<<<< HEAD
|
||||
\<\<\<\<\<\<\< HEAD
|
||||
Releases follow the same basic pattern as releases of some tangentially-related projects,
|
||||
like Trinity. See [Trinity's release instructions](
|
||||
https://trinity-client.readthedocs.io/en/latest/contributing.html#releasing).
|
||||
like Trinity. See [Trinity's release instructions](https://trinity-client.readthedocs.io/en/latest/contributing.html#releasing).
|
||||
|
||||
## Requirements
|
||||
=======
|
||||
|
||||
\=======
|
||||
To release a new version:
|
||||
>>>>>>> template
|
||||
|
||||
> > > > > > > template
|
||||
|
||||
The protobuf description in this repository was generated by `protoc` at version `3.7.1`.
|
||||
|
||||
## 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.
|
||||
|
||||
> Legend: :green_apple: Done :lemon: In Progress :tomato: Missing :chestnut: Not planned
|
||||
> Legend: :green_apple: Done :lemon: In Progress :tomato: Missing :chestnut: Not planned
|
||||
|
||||
| libp2p Node | Status |
|
||||
| -------------------------------------------- | :-----------: |
|
||||
| **`libp2p`** | :green_apple: |
|
||||
| libp2p Node | Status |
|
||||
| ------------ | :-----------: |
|
||||
| **`libp2p`** | :green_apple: |
|
||||
|
||||
| Identify Protocol | Status |
|
||||
| ----------------- | :-----: |
|
||||
| **`Identify`** | :lemon: |
|
||||
|
||||
| Identify Protocol | Status |
|
||||
| -------------------------------------------- | :-----------: |
|
||||
| **`Identify`** | :lemon: |
|
||||
| Transport Protocols | Status |
|
||||
| ------------------- | :-----------: |
|
||||
| **`TCP`** | :green_apple: |
|
||||
| **`UDP`** | :tomato: |
|
||||
| **`WebSockets`** | :chestnut: |
|
||||
| **`UTP`** | :chestnut: |
|
||||
| **`WebRTC`** | :chestnut: |
|
||||
| **`SCTP`** | :chestnut: |
|
||||
| **`Tor`** | :chestnut: |
|
||||
| **`i2p`** | :chestnut: |
|
||||
| **`cjdns`** | :chestnut: |
|
||||
| **`Bluetooth LE`** | :chestnut: |
|
||||
| **`Audio TP`** | :chestnut: |
|
||||
| **`Zerotier`** | :chestnut: |
|
||||
| **`QUIC`** | :chestnut: |
|
||||
|
||||
| Stream Muxers | Status |
|
||||
| ---------------- | :-----------: |
|
||||
| **`multiplex`** | :green_apple: |
|
||||
| **`yamux`** | :tomato: |
|
||||
| **`benchmarks`** | :chestnut: |
|
||||
| **`muxado`** | :chestnut: |
|
||||
| **`spdystream`** | :chestnut: |
|
||||
| **`spdy`** | :chestnut: |
|
||||
| **`http2`** | :chestnut: |
|
||||
| **`QUIC`** | :chestnut: |
|
||||
|
||||
| Transport Protocols | Status |
|
||||
| -------------------------------------------- | :-----------: |
|
||||
| **`TCP`** | :green_apple: |
|
||||
| **`UDP`** | :tomato: |
|
||||
| **`WebSockets`** | :chestnut: |
|
||||
| **`UTP`** | :chestnut: |
|
||||
| **`WebRTC`** | :chestnut: |
|
||||
| **`SCTP`** | :chestnut: |
|
||||
| **`Tor`** | :chestnut: |
|
||||
| **`i2p`** | :chestnut: |
|
||||
| **`cjdns`** | :chestnut: |
|
||||
| **`Bluetooth LE`** | :chestnut: |
|
||||
| **`Audio TP`** | :chestnut: |
|
||||
| **`Zerotier`** | :chestnut: |
|
||||
| **`QUIC`** | :chestnut: |
|
||||
| Protocol Muxers | Status |
|
||||
| ----------------- | :-----------: |
|
||||
| **`multiselect`** | :green_apple: |
|
||||
|
||||
| Switch (Swarm) | Status |
|
||||
| ------------------ | :-----------: |
|
||||
| **`Switch`** | :green_apple: |
|
||||
| **`Dialer stack`** | :green_apple: |
|
||||
|
||||
| Stream Muxers | Status |
|
||||
| -------------------------------------------- | :-----------: |
|
||||
| **`multiplex`** | :green_apple: |
|
||||
| **`yamux`** | :tomato: |
|
||||
| **`benchmarks`** | :chestnut: |
|
||||
| **`muxado`** | :chestnut: |
|
||||
| **`spdystream`** | :chestnut: |
|
||||
| **`spdy`** | :chestnut: |
|
||||
| **`http2`** | :chestnut: |
|
||||
| **`QUIC`** | :chestnut: |
|
||||
| Peer Discovery | Status |
|
||||
| -------------------- | :--------: |
|
||||
| **`bootstrap list`** | :tomato: |
|
||||
| **`Kademlia DHT`** | :chestnut: |
|
||||
| **`mDNS`** | :chestnut: |
|
||||
| **`PEX`** | :chestnut: |
|
||||
| **`DNS`** | :chestnut: |
|
||||
|
||||
| Content Routing | Status |
|
||||
| ------------------ | :-----------: |
|
||||
| **`Kademlia DHT`** | :chestnut: |
|
||||
| **`floodsub`** | :green_apple: |
|
||||
| **`gossipsub`** | :green_apple: |
|
||||
| **`PHT`** | :chestnut: |
|
||||
|
||||
| Protocol Muxers | Status |
|
||||
| -------------------------------------------- | :-----------: |
|
||||
| **`multiselect`** | :green_apple: |
|
||||
| Peer Routing | Status |
|
||||
| ------------------ | :-----------: |
|
||||
| **`Kademlia DHT`** | :chestnut: |
|
||||
| **`floodsub`** | :green_apple: |
|
||||
| **`gossipsub`** | :green_apple: |
|
||||
| **`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: |
|
||||
|
||||
| Switch (Swarm) | Status |
|
||||
| -------------------------------------------- | :-----------: |
|
||||
| **`Switch`** | :green_apple: |
|
||||
| **`Dialer stack`** | :green_apple: |
|
||||
|
||||
|
||||
| Peer Discovery | Status |
|
||||
| -------------------------------------------- | :-----------: |
|
||||
| **`bootstrap list`** | :tomato: |
|
||||
| **`Kademlia DHT`** | :chestnut: |
|
||||
| **`mDNS`** | :chestnut: |
|
||||
| **`PEX`** | :chestnut: |
|
||||
| **`DNS`** | :chestnut: |
|
||||
|
||||
|
||||
| Content Routing | Status |
|
||||
| -------------------------------------------- | :-----------: |
|
||||
| **`Kademlia DHT`** | :chestnut: |
|
||||
| **`floodsub`** | :green_apple: |
|
||||
| **`gossipsub`** | :green_apple: |
|
||||
| **`PHT`** | :chestnut: |
|
||||
|
||||
|
||||
| Peer Routing | Status |
|
||||
| -------------------------------------------- | :-----------: |
|
||||
| **`Kademlia DHT`** | :chestnut: |
|
||||
| **`floodsub`** | :green_apple: |
|
||||
| **`gossipsub`** | :green_apple: |
|
||||
| **`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: |
|
||||
| Exchange | Status |
|
||||
| ---------------- | :--------: |
|
||||
| **`HTTP`** | :chestnut: |
|
||||
| **`Bitswap`** | :chestnut: |
|
||||
| **`Bittorrent`** | :chestnut: |
|
||||
|
||||
| Consensus | Status |
|
||||
| -------------- | :--------: |
|
||||
| **`Paxos`** | :chestnut: |
|
||||
| **`Raft`** | :chestnut: |
|
||||
| **`PBTF`** | :chestnut: |
|
||||
| **`Nakamoto`** | :chestnut: |
|
||||
|
||||
## Explanation of Basic Two Node Communication
|
||||
|
||||
@ -199,12 +190,12 @@ _(non-normative, useful for team notes, not a reference)_
|
||||
Several components of the libp2p stack take part when establishing a connection between two nodes:
|
||||
|
||||
1. **Host**: a node in the libp2p network.
|
||||
2. **Connection**: the layer 3 connection between two nodes in a libp2p network.
|
||||
3. **Transport**: the component that creates a _Connection_, e.g. TCP, UDP, QUIC, etc.
|
||||
3. **Streams**: an abstraction on top of a _Connection_ representing parallel conversations about different matters, each of which is identified by a protocol ID. Multiple streams are layered on top of a _Connection_ via the _Multiplexer_.
|
||||
4. **Multiplexer**: a component that is responsible for wrapping messages sent on a stream with an envelope that identifies the stream they pertain to, normally via an ID. The multiplexer on the other unwraps the message and routes it internally based on the stream identification.
|
||||
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.
|
||||
1. **Connection**: the layer 3 connection between two nodes in a libp2p network.
|
||||
1. **Transport**: the component that creates a _Connection_, e.g. TCP, UDP, QUIC, etc.
|
||||
1. **Streams**: an abstraction on top of a _Connection_ representing parallel conversations about different matters, each of which is identified by a protocol ID. Multiple streams are layered on top of a _Connection_ via the _Multiplexer_.
|
||||
1. **Multiplexer**: a component that is responsible for wrapping messages sent on a stream with an envelope that identifies the stream they pertain to, normally via an ID. The multiplexer on the other unwraps the message and routes it internally based on the stream identification.
|
||||
1. **Secure channel**: optionally establishes a secure, encrypted, and authenticated channel over the _Connection_.
|
||||
1. **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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user