rsksmart / rskj

RSKj is a Java implementation of the RSK protocol.
GNU Lesser General Public License v3.0
670 stars 264 forks source link

Add UPnP Support #1036

Open SergioDemianLerner opened 4 years ago

SergioDemianLerner commented 4 years ago

Prize Bounty

The Prize Bounty is 12.25 ETH

Challenge Description

The peer discovery component has a problem when announcing the local node to another peers: it doesn't traverse through NAT routers. A way to address this would be implementing UPnP protocol.

https://en.wikipedia.org/wiki/Universal_Plug_and_Play

An sample solution applied to Pegasys Phanteon is this: https://github.com/PegaSysEng/pantheon/pull/1334

Submission Requirements

A valid submission should modify the RSKj node to allow seamless discovery and communication through NAT routers using uPnP. Submissions should not require large external library dependencies unless this is proven necessary.

The code should respect the contribution standards specified in https://github.com/rsksmart/rskj/blob/master/CONTRIBUTING.md

Submission Deadline

The deadline for submissions is November 11, 2019.

Judging Criteria

The prize will be awarded to the first valid submission.

Winner Announcement Date

The submission will be reviewed between November 11 and November 18, 2019. Winners will be privately notified before a public announcement of all hackathon prices given by IOV Labs. The announcement and prize payouts will occur before November 31, 2019.

gitcoinbot commented 4 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 2 weeks, 4 days ago. Please review their action plans below:

1) coejoder has started work.

Will integrate UPnP into peer discovery, using acceptance criteria similar to linked sample solution, as applicable to RSKj.

Learn more on the Gitcoin Issue Details page.

CoeJoder commented 4 years ago

@SergioDemianLerner Quick question regarding this bounty: would you accept a submission which contained some code licensed under Apache v2? I ask because the UpnpNatManager of the Besu project (formerly Pegasys Pantheon) is a useful abstraction here with minimal changes. It would require a copy of the Apache v2 license to be included in the source and distribution, as well as a comment in the code notifying that modifications have been made. See: https://www.apache.org/licenses/GPL-compatibility.html

CoeJoder commented 4 years ago

Didn't get an answer and the clock is ticking, so I've found a different UPnP lib which is LGPL (weUPnP). It also pulls in less dependencies, so that's a plus.

gitcoinbot commented 4 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work for 12.502 ETH (2373.32 USD @ $189.83/ETH) has been submitted by:

  1. @coejoder

@SergioDemianLerner please take a look at the submitted work:


CoeJoder commented 4 years ago

@SergioDemianLerner Gitcoin just contacted me that the bounty is expiring in 2 days and that I should remind you to review the PR :) Btw the PR is here: https://github.com/rsksmart/rskj/pull/1088

gitcoinbot commented 4 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


The funding of 12.502 ETH (1807.09 USD @ $144.54/ETH) attached to this issue has been approved & issued to @CoeJoder.

hdiass commented 3 years ago

whats the status on this ?