Name of Retrospective Award
Rocket Watch Contributions
Who is the proposed retrospective award recipient?
@haloooloolo and @invis
What specific project or work is the retrospective award in recognition of? This is in recognition of all the time I’ve spent working on Rocket Watch features, big and small, over the last year.
Are the subjects of this award entirely open source ([MIT]
Yes, the source code is available on GitHub.
Benefit
I will skip the detailed breakdown here as everyone reading this will be familiar with Rocket Watch. The event tracking features and various commands have been useful to node operators and rETH holders alike.
Costs
How much USD $ is the applicant requesting be awarded to the recipient?
$25,000 in total. $23,000 for me, $2000 for invis.
I realize this is a big ask at face value. To justify this, I will provide a bit more context.
Git Statistics
These are the contributions statistics for the Rocket Watch git repo, first for all files (including JSON config edits for new events) and then only .py source code files.
Author Commits Files Insertions Deletions Total Lines
----- ------- ----- ---------- --------- -----------
invisiblesymbol 1506 220 32764 10424 43188
haloooloolo 270 102 18789 9007 27796
jacob 17 11 688 272 960
blaze 1 2 174 0 174
ramirond 3 1 92 7 99
valdorff 10 1 36 9 45
Author Commits Files Insertions Deletions Total Lines
----- ------- ----- ---------- --------- -----------
invisiblesymbol 1283 130 21161 9251 30412
haloooloolo 246 78 9567 8588 18155
jacob 17 10 687 272 959
blaze 1 2 174 0 174
ramirond 3 1 92 7 99
romirand 1 1 6 6 12
0xobjectobject 2 1 9 3 12
In both, I am up to around 50% of invis’ activity. On to specific contributions.
Notable Contributions
Improvements to Scam Prevention
I have made improvements on the patterns used to detect scam messages, added new types of scams and added the ability for Rocket Watch to DM new users in the server a warning about scammers and a list of best practices.
Houston Events
This includes full support for on-chain governance in Houston, other events such as stake on behalf and all the other minor things that changed with the Houston update. For full transparency, invis actually paid me $4000 to implement this at the time, so do take that into account when making a decision on funding this grant. However, I think the work involved went beyond the initial requirement and the sheer number of events to support also caused the requirements themselves to be more than expected. If you decide to fund for less than the full requested amount, you should prioritize invis’ share.
RPL Reward Simulation
This is only a single command but I spent quite a lot of time tweaking the layout, making sure all the simulation parameters work fine in combination etc. It also gets used quite a lot.
Constellation Support
Similar to Houston (though smaller in scope), I added all events relevant to Gravita’s and NodeSet’s Constellation including a /constellation
command to keep track of all relevant stats.
Snapshot Module Improvements
This is the first contribution in this list that was mostly work under the hood without necessarily immediately being noticeable by the end user. I spent a lot of time cleaning up and refactoring the code that requests new proposals and votes from the Snapshot GraphQL API, processes the data and turns it into events. A large part of this is the logic to render the images that show up when running /snapshot_votes
. The code is much more readable and maintainable now, which should pay off in the future. In terms of new features, the command is now able to arrange rendered proposals in a grid instead of a single row if there are many of them and Rocket Watch can keep track of starting and ending Snapshot proposals and creates events for each.
Changes To Core Event Handling
This one is actually quite large and not observable at all. Rocket Watch’s event aggregation across its multiple plugins had been largely unstructured with each plugin keeping track of its own state. It was also only able to request all events and process them in one go, which made catching up on long amounts of history a nightmare. A good example of this was having to drop history when Rocket Watch was deployed for Holesky. It was also what kept it from being redeployed after running into an error at some point. Though Holesky is half dead now, so maybe not the best example …
If one is interested in details, each plugin only has to implement two functions: get_past_events(from_block, to_block)
and get_new_events()
. The core event loop keeps track of the current head block and manages calls to those functions. If far behind, it will use the past event interface to catch up in block batches of configurable size.
RPL Market Depth
This one hasn’t seen the light of day yet. It’s a replacement for the /wall
command, but aggregrates across multiple DEXes and CEXes, similar to what Hodja has been doing semi manually a few times. I’m including this because it will likely be merged by the time the GMC reviews this grant. For a bit more context, I actually spent over 40 hours on just this alone on writing abstractions for all the data sources, figuring out the different APIs, liquidity math for Balancer and Uniswap etc. I can point to the code on GitHub or show it working on my own Rocket Watch deployment if needed earlier.
Miscellaneous
There are some smaller things like /node_gini
, /rpip
and the exit arb event that took a few hours here and there, but aren’t really big enough to mention on their own. This also includes smaller refactoring work that probably adds up to 20+ hours.
Summary
While $25k is a lot of money, I think it is a fair amount to request. In direct comparison, invis previously received two grants totaling $80k for Rocket Watch (significantly more at the time of payout, but the initial grant amount is the relevant number to compare to). Given the contribution statistics, my ask seems in line with invis’ compensation, if not slightly lower. While I didn’t directly track the time I spent working on this, I’m confident I surpassed the 230 hours required for a $100/h rate that has been used for various development grants in the past. Invis still manages the Rocket Watch deployment and has spent quite a lot of time reviewing my code, which is why I think a $2000 payout for him is also fair.
Conflict of Interest
None.