From c4a92e2493372772917d01a9239dbb5aa64700d6 Mon Sep 17 00:00:00 2001 From: James Ray <16969914+jamesray1@users.noreply.github.com> Date: Wed, 6 Jun 2018 21:18:59 +1000 Subject: [PATCH] Update summary of crates with missing crates (#242) * Update summary of crates with missing crates * Add relay and fix line breaks (use soft wrap in the editor) * Readd an extra at EOF --- README.md | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 63082822..4ca6f6ea 100644 --- a/README.md +++ b/README.md @@ -15,26 +15,28 @@ This repository includes a facade crate named `libp2p`, which reexports the rest Architecture of the other crates of this repository: -- `datastore`: Utility library whose API provides a key-value storage with multiple possible - backends. Used by `peerstore`. +- `cid`: implements [CID (Content IDentifier)](https://github.com/ipld/cid): Self-describing content-addressed identifiers for distributed systems. +- `circular-buffer`: An optimized FIFO queue that allows safe access to the internal storage as a slice (i.e. not just element-by-element). This is useful for circular buffers of bytes. Since it uses `smallvec`'s `Array` trait it can only be backed by an array of static size, this may change in the future. +- `core`: Transport, protocol upgrade and swarm systems of libp2p. This crate contains all the core traits and mechanisms of the transport and swarm systems of libp2p. +- `datastore`: Utility library whose API provides a key-value storage with multiple possible backends. Used by `peerstore`. +- `dns`: this crate provides the type `DnsConfig` that allows one to resolve the `/dns4/` and `/dns6/` components of multiaddresses. - `example`: Example usages of this library. -- `libp2p-identify`: Protocol implementation that allows a node A to query another node B what - information B knows about A. Implements the `ConnectionUpgrade` trait of `libp2p-core`. -- `libp2p-peerstore`: Generic storage for information about remote peers (their multiaddresses and - their public key), with multiple possible backends. Each multiaddress also has a time-to-live. - Used by `libp2p-core`. -- `libp2p-ping`: Implementation of the `ping` protocol (the exact protocol is specific to libp2p). - Implements the `ConnectionUpgrade` trait of `libp2p-core`. -- `libp2p-secio`: Implementation of the `secio` protocol. Encrypts communications. Implements the - `ConnectionUpgrade` trait of `libp2p-core`. -- `libp2p-core`: Core library that contains all the traits of *libp2p* and plugs things together. -- `libp2p-tcp-transport`: Implementation of the `Transport` trait of `libp2p-core` for TCP/IP. -- `libp2p-websocket`: Implementation of the `Transport` trait of `libp2p-core` for Websockets. -- `multistream-select`: Implementation of the `multistream-select` protocol, which is used to - negotiate a protocol over a newly-established connection with a peer, or after a connection - upgrade. -- `rw-stream-sink`: Utility library that makes it possible to wrap around a tokio `Stream + Sink` - of bytes and implements `AsyncRead + AsyncWrite`. +- `floodsub`: a flooding PubSub implementation for p2p messaging. +- `identify`: implementation of the `/ipfs/id/1.0.0` protocol that allows a node A to query another node B what information B knows about A. Implements the `ConnectionUpgrade` trait of `core`. Also includes the addresses B is listening on. +- `kad`: kademlia DHT implementation for peer routing +- `mplex`: Implements a binary stream [multiplex](https://github.com/maxogden/multiplex)er, streams multiple streams of binary data over a single binary stream. +- [`multiaddr`](https://github.com/multiformats/multiaddr): composable, future-proof, efficient and self-describing network addresses +- [`multihash`](https://github.com/multiformats/multihash): self identifying hashes; differentiating outputs from various well-established cryptographic hash functions; addressing size + encoding considerations; future-proofing use of hashes, and allowing multiple hash functions to coexist. +- `multistream-select`: used internally by libp2p to negotiate a protocol over a newly-established connection with a peer, or after a connection upgrade. +- `peerstore`: Generic storage for information about remote peers (their multiaddresses and their public key), with multiple possible backends. Each multiaddress also has a time-to-live. Used by `core`. +- `ping`: Implementation of the `ping` protocol (the exact protocol is specific to libp2p). Implements the `ConnectionUpgrade` trait of `core`. +- `ratelimit`: manages rate limiting with a connection. Also see [here](https://github.com/libp2p/specs/blob/master/8-implementations.md#811-swarm-dialer) for design. +- `relay`: Implements the [`/libp2p/circuit/relay/0.1.0` protocol](https://github.com/libp2p/specs/blob/master/relay/). It allows a source `A` to connect to a destination `B` via an intermediate relay node `R` to which `B` is already connected to. Thisis used as a last resort to make `B` reachable from other nodes when it would normally not be, e.g. due to certain NAT setups. +- `rw-stream-sink`: Utility library that makes it possible to wrap around a tokio `Stream + Sink` of bytes and implements `AsyncRead + AsyncWrite`. +- `secio`: Implementation of the `secio` protocol. Encrypts communications. Implements the `ConnectionUpgrade` trait of `core`. +- `tcp-transport`: Implementation of the `Transport` trait of `core` for TCP/IP. +- `varint`: encoding and decoding state machines for protobuf varints. +- `websocket`: Implementation of the `Transport` trait of `core` for Websockets. ## About the `impl Trait` syntax