-
Notifications
You must be signed in to change notification settings - Fork 36
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
Motivation #3
Comments
External ApplicationsBy and large, the primary users will be third-party applications. Concerns:
External ServicesAs an extension to the "application" use-case, I expect we'll want to allow "blessed" applications (user chosen) to act on behalf of the daemon itself. That is, listen and dial certain protocols using the daemon's peer ID. For example, this would allow me to:
PluginsAs an extension of external services, some external services will need to provide features back to the libp2p daemon. For example, a DHT service will want to provide a "find peer" service. |
Another primary motivation is the creation of bindings for other languages without having to implement the whole libp2p stack. |
Another reason we were looking at daemons was to help simplify interop testing between the various implementations of libp2p. |
Mentioning a few people from the Ethereum community, as they are looking to adopt libp2p in Ethereum 2.0 (sharding). Until there are native libp2p implementations in other languages like Java, Nim, C, Python, the daemon will be a vital component in their stack. I'll be helping sketch out the requirements and functionalities they'll need from the daemon. |
I would like to point out that I already have Gerbil bindings for the prototype daemon: I am going to be maintaining and evolving these bindings as my means for testing the daemon as it evolves (and also, writing fun libp2p programs in gerbil!). |
@vyzo 👍 I mentioned the Gerbil bindings in our last call, and also in this ticket for the Ethereum 1.0 folks: ethereum/devp2p#45 (comment). Forgot to mention it here. I think the next bindings we'll see are Python and Java. Do we feel like the initial foundation is stable, or do we expect some major shifts in the next weeks? I'd like to update the spec with the RPCs and the socket dynamics we've settled on, so implementers can use that + the Gerbil bindings as a reference to start developing soon. |
Also mentioning @bkolad from PegaSys who had expressed interest in writing a Java binding. |
We can expect rapid evolution, but the stream protocol is pretty solid I think. |
Thanks a lot to @raulk for all information in the call. It seems a good start from implementing the bindings to |
Sorry for the late update. After re-examination of our code, it seems the operations of |
@raulk I talked to you at the ETH 2 Workday in Prague. I just changed over to the PegaSys team and I am interested in developing Java bindings for libP2P for our Beacon Chain implementation. I am debating 1 of 2 paths and I am curious what your thoughts are:
https://github.com/jrhea/go2python
What are your thoughts? |
Easiest path forward is 2, by implementing a java client that talks to the libp2p daemon. |
@jrhea Definitely 2 for now. Implementing Java bindings should be straightforward as Netty supports Unix domain sockets, there's ample support for Protobuf in Java. Option 1 is an interesting experiment. In fact, we've been discussing a shared library set-up for libp2p daemon in this issue: #20. You may want to pitch in on that one! |
@raulk and @vyzo thanks for the quick reply!! Ok so assuming I go with option 2, how close are you guys to an initial release?
yessir, i will take a look and see if I can help. |
Why do we need a libp2p daemon and what do we want it to do?
The text was updated successfully, but these errors were encountered: