Smartnode Notification Functionality
RPL
~ USD
Apr 3rd, 2023BA022308
closed
development
node-operation
golang
docker
Summary
Add notifications support to the Rocket Pool Smartnode.
Required Milestones
Milestone A - Notification Functionality
Payout: 215 RPL
Notification Types
The implementation must support notifications for 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
Supporting Functionality
- Notifications must be configurable by the user.
- Notification configuration must have a dedicated page in the service config TUI with parameters to enable and disable each notification, and for adjustable thresholds where appropriate.
- The service must be available as both:
- A Docker container that can be directly coupled with the Smartnode stack
- A standalone binary for Native Mode users
- At least one notification endpoint must be supported.
Documentation
- The standalone binary must be accompanied by instructions for the user on creating and managing a systemd service for it.
- Complete and thorough documentation should be delivered describing configuration and usage for Docker, Hybrid, and Native Mode users.
- This should be delivered via a pull request to the documentation guides repository.
Other Requirements
- A candidate implementation for this bounty must be open sourced prior to its acceptance.
Optional Milestones
Milestone B - Additional Functionality
Maximum Payout: Not listed
- The implementation may support multiple different configurable endpoints; for example:
- Signal
- Discord DMs
- The implementation may support additional events not specified as required above.
Further Notes
Candidate implementation(s) will be scrutinized from a security perspective to ensure the capability does not introduce any attack vectors or vulnerabilities.
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
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.
Verification
- Candidate implementation(s) will be scrutinized from a security perspective to ensure the capability does not introduce any attack vectors or vulnerabilities.
- JCRTP will verify that submitted candidates meet the requirements of Milestone A, and any optionals in Milestone B.
- Please contact the GMC Administrator to arrange this once you have a candidate to deliver.