April 2023 GMC Call for Bounty Applications - Deadline is April 15th

Bounty

What is the nature of the proposed bounty?

Add support for notifications to the Smartnode.

Must the results of this project be entirely open source (MIT, GPL, Apache, CC BY license or similar)? If not, which parts will not be, why, and under what license will they be published?

Yes, a requirement for this bounty is that the code be submitted as a pull request to GitHub - rocket-pool/smartnode: The CLI package for Rocket Pool smart nodes. .

Benefits - enter N/A where appropriate

If the bounty is successfully completed, how does this help people looking to stake ETH for rETH?

N/A

If the bounty is successfully completed, how does this help rETH holders?

N/A

If the bounty is successfully completed, how does this help people looking to run a Rocket Pool node for the first time?

See below.

If the bounty is successfully completed, how does this help people already running a Rocket Pool node?

The Smartnode does a good job of running a node in a fairly painless capacity, but one of the glaring holes is that it lacks the capacity to notify a user in a push-based scheme of important events. We recommend that users rely on a third-party service such as https://beaconcha.in for notifications of things that occur on-chain (e.g., sync committees, missed attestations, block proposals) and, to a lesser extent, information about their node’s health if the CL permits it. However, this cannot cover everything that happens with the node. For example, the following events are important enough to merit alerting the user but cannot be done by beaconcha.in:

  • A new Smartnode release is out and you should update
  • Your node automatically distributed your minipool balance
  • One of your clients crashed and went out of sync

There’s a complete list of desired features in the criteria section below.

Having push notifications to the user would signify a substantial increase in quality of life for node operators and should result in a lower amount of people coming to the Discord’s support channel asking for help when they missed the memo on certain updates or processes.

As a final note, the beaconcha.in development team has requested that we consider this supplemental to the node’s own notification system instead of being the primary avenue for it so this must be done sooner rather than later.

If the bounty is successfully completed, how does this help the Rocket Pool community?

N/A

If the bounty is successfully completed, how does this help RPL holders?

N/A

What other non-RPL protocols, DAOs, projects, or individuals, would stand to benefit from the bounty being successfully completed?

N/A

Will the results of the completed bounty be open source?

Yes, they will be required to be open sourced on GitHub - rocket-pool/smartnode: The CLI package for Rocket Pool smart nodes. .

Work and Verification

What steps would be entailed in completing the bounty? Do successful examples of such work exist elsewhere?

Completing the bounty will involve modifying the source code for the Smartnode and submitting a pull request.

How long is the proposed bounty available for? Is it awarded to the first team to successfully claim it, or is it in some way divided among all such successful claims in the proposed availability period?

I will accept multiple submissions for the bounty if they are timely and will award each contributor accordingly based on the thoroughness of their submission. If there is only one clear PR and none have been submitted within two-ish weeks of it, the GMC should give that contributor the full award.

Who will test any products submitted for claiming the bounty?

Me (JCRTP).

What is the acceptance criteria for awarding of the bounty?

Bounty payout will be done by extensively testing the notification implementation on our Goerli testnet and, to the extent possible, on Mainnet. Acceptance will involve the successful notification to the node operator including, but not limited to, the following events:

  • Client sync complete
  • Client(s) lost sync
  • Disk free space is running low (say, 15% free remaining) and the user should consider pruning if using Geth or Nethermind
  • node automatically staked a minipool, or attempted to (success or failure)
  • node automatically promoted a vacant minipool, or attempted to (success or failure)
  • node automatically reduced a minipool’s bond, or attempted to (success or failure)
  • node detected a fee recipient change
  • node automatically distributed a minipool’s balance
  • You have a block proposal this epoch
  • You submitted a block proposal
  • You are scheduled for the next sync committee
  • You have entered a sync committee
  • There is a new Smartnode update available

Notifications must be configurable, meaning they need to have first-class support as a dedicated page in the service config TUI with parameters to enable and disable each notification, and for adjustable thresholds where appropriate.

Notifications should ideally support multiple different configurable endpoints; for example:

  • E-mail
  • Signal
  • Discord DM

The service must be available in both a Docker container that can be directly coupled with the Smartnode stack, and as a standalone binary for Native Mode users with instructions on creating and managing a systemd service for it.

It should also come with a pull request to our documentation guides repository (GitHub - rocket-pool/docs.rocketpool.net: Rocket Pool Documentation & Guide Hub) with complete and thorough documentation describing its configuration and usage for Docker, Hybrid, and Native Mode users alike.

I will also ask the Rocket Scientists to scrutinize the candidate implementation(s) from a security perspective to ensure the capability does not introduce any attack vectors or vulnerabilities.

Payment

How much RPL is the applicant requesting for successful completion of the bounty?

TBD pending discussion with the rest of the GMC but I’m expecting something in the neighborhood of 250 RPL for a complete implementation.

Conflict of Interest

Does the person or persons proposing the bounty have any conflicts of interest to disclose? (Please disclose here if you are a member of the GMC or if any member of the GMC would benefit directly financially from the successful completion of the bounty).

Yes, I’m on the GMC and am a development team member. Incorporating this functionality normally falls under my responsibility. I’m posting this as a way to incentivize the community to contribute in my stead since I believe it’s important (and has been for some time) and I will not be able to complete it in a timely fashion.

Will the applicant, or any protocol or project in which the applicant has a vested interest (other than Rocket Pool), benefit financially if the bounty is successfully completed?

No.