bounties
bounties copied to clipboard
Research: nnet integration to support message broadcast to all nodes
Description
This is a research project. The goal is to explore the integration of nnet (https://github.com/nknorg/nnet) into harmony nodes to replace the global pubsub interface.
Context
Currently, Harmony node is using pubsub module of libp2p (https://github.com/libp2p/go-libp2p-pubsub) to send messages within shard and cross-shard. pubsub in libp2p is chosen to ensure the network resiliency and robustness against network partition. However, global pubsub may not be efficient to deliver messages across different shards, especially beacon chain block broadcasting (https://github.com/harmony-one/harmony/blob/1a8494c069dc3f708fdf690456713a2411465199/node/node_handler.go#L139)
This project is to explore to integrate nnet library as a way to broadcast the beacon chain block. nnet is being developed as the networking layer of NKN blockchain (https://nkn.org/).
The goal of this project is to support two ways of broadcast support using either pubsub of libp2p or nnet.
You will need to work with both Harmony and NKN engineers to enable the support.
Acceptance Criteria
- [ ] integrate nnet library into harmony node
- [ ] unit test to cover at least 85% of new code
- [ ] design an interface to support both pubsub of libp2p and nnet
- [ ] support nnet discovery and global broadcast support
- [ ] enable an option to use nnet library to broadcast the beacon chain block
- [ ] testing using testnet (please contact team for support)
- [ ] end to end test report with comparison of the two libraries, in terms of latency, bandwidth, amount of traffic
Reward
USD $15,000 equivalent of Harmony ONE token.
Let me provide some information on the nnet side.
The first thing I would recommend is to check nnet repo https://github.com/nknorg/nnet and get a feeling of what nnet does.
Then I would recommend taking a look at example directory, especially efficient-broadcast
example showing how to use tree broadcasting to efficiently broadcast messages.
A few caveats I can think of:
- nnet requires node to accepting incoming connections as it's using Chord DHT. This usually requires public IP address or port forwarding set up on node. If a node cannot accept incoming connections, he can still broadcast out messages, but won't be able to receive broadcasted messages sent by other nodes.
- For reliability, it's recommended to have another mechanism to pull block from neighbors together with tree broadcasting. So basically tree broadcasting will deliver the block to like 99% nodes, and the rest 1% (e.g. the ones that cannot accept incoming connections) will pull it from its neighbors.
Feel free to let me know if you have any questions.
Issue Status: 1. Open 2. Started 3. Submitted 4. Done
This issue now has a funding of 102974.1785 ONE (14976.98 USD @ $0.15/ONE) attached to it.
- If you would like to work on this issue you can 'start work' on the Gitcoin Issue Details page.
- Want to chip in? Add your own contribution here.
- Questions? Checkout Gitcoin Help or the Gitcoin's Discord
- $1,973,934.71 more funded OSS Work available on the Gitcoin Issue Explorer
Issue Status: 1. Open 2. Started 3. Submitted 4. Done
The funding of 102974.1785 ONE (10814.45 USD @ $0.11/ONE) attached to this issue has been cancelled by the bounty submitter
- Questions? Checkout Gitcoin Help or the Gitcoin's Discord
- $1,741,561.22 more funded OSS Work available on the Gitcoin Issue Explorer
Issue Status: 1. Open 2. Started 3. Submitted 4. Done
Work has been started.
These users each claimed they can complete the work by 1 month, 1 week from now. Please review their action plans below:
1) gabrielnicolasavellaneda has started work.
I will research on nnet integration to support message broadcast to all nodes 2) kevinkelley has started work.
Integrate nnet as optional alternative to libp2p, and compare the two
Learn more on the Gitcoin Issue Details page.
Sorry to see this one de-funded; it actually looks pretty interesting to me.
...I've worked with libp2p before, and I'm pretty interested in nnet, so this would have been a good experience :)
Hi, @KevinKelley , I don't think this bounty was canceled. It was just moved from round one to round two since it wasn't finished in round one.
@LeoHChen Ahh. Good... I'll see what I can do with it :)
Issue Status: 1. Open 2. Started 3. Submitted 4. Done
This issue now has a funding of 102974.1785 ONE (14976.98 USD @ $0.15/ONE) attached to it.
- If you would like to work on this issue you can 'start work' on the Gitcoin Issue Details page.
- Want to chip in? Add your own contribution here.
- Questions? Checkout Gitcoin Help or the Gitcoin's Discord
- $1,973,934.71 more funded OSS Work available on the Gitcoin Issue Explorer
sdfsd
@KevinKelley are you still working on this? We are aiming to close out this bounty this week if not.
@givp I'm still here, still interested, still wanting (and needing) to work.
This one... it seems like a good thing, I'd love to get it working. But I'm scared away by the scope. I haven't done much, in terms of actual time working. I've been thinking about it, reading, research, trying to get a plan going, but not a lot of productive work. So... If you cancel, no harm no foul, deadline is past, and nothing produced.
Maybe better to put the money into other challenges? I'll be watching, trying to get in, lol.
If this one is important? Then, for me... I need to ...I don't know. Maybe reduce the scope, have a couple phases, proof of concept and follow with actual integration...
This cuts across the whole system, far as I can tell... I'm not seeing much way for a single developer to manage that. Switching the comm... yeah, okay, but then there's gonna be a whole lot of issues with the whole network, testing across sharding, across all nodes, how am I gonna manage that?
Thoughts? I really do want to get involved, some way.
@KevinKelley No worries. I'll have to let @LeoHChen decide on changing the scope of this bounty.
Either way, I'm sure we can get you involved in other projects. Are you participating in the current Hackathon?
Feel free to DM me on Discord so we can go deeper. [Giv | Harmony#5499]
Issue Status: 1. Open 2. Started 3. Submitted 4. Done
The funding of 102974.1785 ONE (11923.9 USD @ $0.12/ONE) attached to this issue has been cancelled by the bounty submitter
- Questions? Checkout Gitcoin Help or the Gitcoin's Discord
- $3,899,407.30 more funded OSS Work available on the Gitcoin Issue Explorer
hi, @KevinKelley are you still interested in working on this project. We can discuss about the scope further, maybe split it into smaller bounties to start with. Please reach out to me on twitter @leo_hao or discord. #lc4331