Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature requests #187

Closed
1 of 9 tasks
jamesray1 opened this issue May 14, 2018 · 7 comments
Closed
1 of 9 tasks

Feature requests #187

jamesray1 opened this issue May 14, 2018 · 7 comments

Comments

@jamesray1
Copy link
Contributor

jamesray1 commented May 14, 2018

https://github.com/libp2p/specs/ doesn't mention rust libp2p much. Could you open up a project tracker for this repo, documenting what has been done, what is in progress and what needs to be done?

I am looking at using rust-libp2p for Ethereum sharding with Drops of Diamond.

The following features don't show up for rust-libp2p or in search results, so I suggest adding them to issues and the project tracker:

There are Rust implementations of all the major formats that IPFS is using:

— https://github.com/libp2p/libp2p/issues/33#issuecomment-392007707

What's already done in rust-libp2p:

This repository includes a facade crate named libp2p, which reexports the rest of the repository.

General overview of the architecture

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.
  • 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.
@tomaka
Copy link
Member

tomaka commented May 14, 2018

For circuit-relay, there is an open pull request here: #175

For the rest, the API of rust-libp2p is slightly different from the one of other libp2p implementations because we've been trying to maximize performances as much as possible.
Also note that rust-libp2p is maintained mainly by Parity (and not by Protocol Labs), so we've been having a different look at things compared to the other two implementations.

@tomaka
Copy link
Member

tomaka commented May 14, 2018

For general questions about the direction of the project, I would suggest joining the #libp2p IRC channel on Freenode.

@jamesray1 jamesray1 changed the title interface-stream-muxer Feature requests May 14, 2018
@jamesray1
Copy link
Contributor Author

Will do, thanks! Note that the intention is for the Drops of Diamond sharding implementation to eventually integrate with Parity.

@jamesray1
Copy link
Contributor Author

I just added another one: gossipsub, see https://github.com/libp2p/go-floodsub/issues/77 for an introduction.

@jamesray1
Copy link
Contributor Author

jamesray1 commented May 22, 2018

According to libp2p/libp2p#33, gossipsub is preferable to floodsub for sharding implementation, so I'll probably develop that as needed.

@jamesray1
Copy link
Contributor Author

jamesray1 commented May 29, 2018

protobuf isn't supported for Rust, so I'll have to use something else. Looks like #183 might help.

Edit: protobuf is supported.

@tomaka
Copy link
Member

tomaka commented Jan 10, 2020

Let's close this issue as it is one and a half years old.

@tomaka tomaka closed this as completed Jan 10, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants