Round 9 - GMC Call for Retrospective Applications - Deadline is February 11

ethstaker.tax - Rocket Pool Mode

Who is the proposed retrospective award recipient?

Myself @eth2353

What specific project or work is the retrospective award in recognition of? Please detail what the project or work entailed and the duration over which it took place.

The project consisted of adding support for Rocket Pool to the already existing ethstaker.tax website.
This was first requested by users of the website about a year ago - RocketPool support · Issue #13 · serenita-org/ethstaker.tax · GitHub . The goal was to make it easy for Rocket Pool NOs to determine their staking income.

When I first seriously started looking into working on this in April '23, it was obvious the way the feature was originally requested (based on a static minipool fee) would not be sufficient - with the introduction of bond reductions, minipool fees no longer stayed the same over a minipool’s lifetime.

I started working on implementing the RP support in September '23. I initially tried to keep it simple by using data from rocketscan but it turned out not to have all the data needed for exact income calculation. I shared an early preview version in the RP Discord at the start of November '23 but it had a few issues and was not 100% accurate.

Upon collecting feedback and ideas for improvements (many thanks to the helpful people on the Discord) I realized that, with a bit more work, the entire user experience could be much improved. Fair to say I underestimated the “a bit more work” part.

This time I committed to not using any external APIs, studying the Rocket Pool smart contracts to determine exactly how the different kinds of rewards work internally. Based on that research I was able to index the necessary data for exact reward calculation.

Calculating the node operator’s share of income from Rocket Pool minipools turned out to be much more complicated than for the regular solo staker. For instance, if a consensus layer withdrawal occurs on the same day that the minipool’s bond is reduced, the node operator’s share of the reward depends on whether the withdrawal occurred before or after the bond reduction ( From a NO’s perspective it is therefore slightly more profitable to reduce a minipool’s bond after a withdrawal occurs rather than right before ).

Apart from indexing the on-chain data, the new Rocket Pool Mode also required changes to ethstaker.tax’s user interface and CSV export functionality.

I don’t think I am overstating when I say this was a complex endeavour, requiring work across multiple layers - smart contracts, backend and frontend.

All of this work turned into something really special - ethstaker.tax now has a very easy-to-use Rocket Pool Mode which makes it a matter of only a few clicks for NOs to determine their income, supporting:

  • CL income
  • EL income - auto-detecting Smoothing Pool usage
  • RPL income

ethstaker-tax-rp-5fps-small

The Rocket Pool Mode was officially announced to the world a few days ago, receiving a lot of very positive feedback from Rocket Pool node operators:

RP Discord
“This is incredible! Thank you for all the work this must’ve taken…”
“Awesome work! :pray: I like that you can just input your RP address and it pulls up all of the associated validators. […] This needs to be featured on all Rocketpool channels. :+1:

r/rocketpool [https://www.reddit.com/r/rocketpool/comments/1ak6w82/ethstakertax_now_supports_rocket_pool/]
“WOW! I can’t thank you enough for this, fantastic work, an invaluable tool”
“This is super cool! Awesome work… thank you!”
“This is really amazing, thank you for doing.”

r/ethstaker [https://www.reddit.com/r/ethstaker/comments/1ak6wvi/ethstakertax_update_rocket_pool/]
“Amazing! Thank you so much!”
“Hey, thanks, I was hoping for this. […]”
“This is fantastic […]”

r/ethfinance daily [https://www.reddit.com/r/ethfinance/comments/1ak2vf5/daily_general_discussion_february_6_2024/kp5u98v/]
“Thanks a lot, that is amazing!”
“Absolutely phenomenal - thanks eth2353. Love the disaggregation across all value streams”

In the first few days of the feature going live over 500 API requests were made to the new RP rewards endpoint. I expect this website to be used by NOs heavily during tax season but will also be helpful throughout the year to determine estimated taxes.

Full disclosure - there are a few limitations/edge cases the website cannot currently handle:

  • promoted minipools - there are currently no measures in place that would detect and/or handle this case (from the numbers I could find this applies to less than 0.5% of minipools and an even smaller percentage of NOs)
  • pre-Redstone RPL rewards are not available

A lot of extra effort was put into this last month to ensure this feature would be ready for every NO to use for this year’s tax season.

Are the subjects of this award 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, the project is entirely open-source under the MIT license, including the Rocket Pool Mode.

Benefit

Group Benefits
Potential rETH holders N/A
rETH holders N/A
Potential NOs Having this easy-to-use tool makes it more attractive to become a NO. NOs no longer need to worry how they will calculate their income, creating their own spreadsheets/scripts to track all of this manually.
NOs Existing NOs can now easily determine their income - native CL/EL income, RPL income, Smoothing Pool income - all in one place
Community NOs are a large and important part of the RP community. By making their life much easier, the entire community benefits.
RPL holders N/A

Costs

How much USD $ is the applicant requesting be awarded to the recipient?

Over the last 12 months I estimate to have worked on this around 350-400 hours in total. While I myself needed to spend a lot of time studying the smart contracts, building something like this from scratch would probably take even more time due to the need to index all historical CL/EL/MEV rewards (which ethstaker.tax already had available).

I am requesting a one-time grant of 30,000$.

The website costs around 100-200$/mo to run in terms of infrastructure costs alone at the moment. These costs have so far been covered by donations from Gitcoin grants but any support with these monthly upkeep costs would be appreciated too.

Is the applicant requesting RPL or LUSD?

Either is fine, preference goes towards LUSD.

Conflict of Interest

Does the person or persons requesting the retrospective award have any conflicts of interest to disclose? (Please disclose here if you are a member of the GMC or if you have nominated a member of the GMC for this retrospective award).

None.