playing for KEEPS
Contributor Profile
@Shai#1550
PFK Rewards
Round 2
@Shai#1550
50000
For translations, code, and community involvement!
Round 1
@Shai#1550
10000
Staker prize
Introduce yourself
My name is Shai and I’m a techie (also founded a couple of companies and was granted over 20 patents, but will try to stay on point here). I’m running many nodes in multiple networks, mostly PoS. Keep was on my radar since its pre-sale which I barely missed unfortunately. 
Nodes
0x2D5A8AAd52A316dF5e69b28bCDA9B98c170f7c00
Contribution
27.06.2020

I’ve been running a Random Beacon node for the last couple of months, and this month added to it the ECDSA node.
My operator address is 0x2D5A8AAd52A316dF5e69b28bCDA9B98c170f7c00. I’m developing an app, called OctoPoS, to help stakers/delegators track all their staking accounts (both in wallets and exchanges), and help node/validator operators monitor their nodes to ensure maximum performance and availability. Previously I added support for tracking KEEP staking on Random Beacon.
While developing it I found out that the dashboard is very inefficient since it is making many contract calls to get all the group memberships and status info. This could take as long as 20-30 minutes with just 100 groups. So I built a caching solution that listens to contract group events and stores the info for later use without the need to call the contracts again. This lets me instantly get the rewards of any beneficiary address. I made that public and anyone can use it by issuing the following request (replacing the address obviously):
curl "https://us-central1-cryptotracker-fa488.cloudfunctions.net/getKeepRewardsR?address=0x2D5A8AAd52A316dF5e69b28bCDA9B98c170f7c00”
This returns a json with the total rewards (in ETH) plus a breakdown per group.

The following screen shows how staking tracking looks. You can see some of the staking accounts my app is tracking, including the KEEP one. It shows the daily ETH rewards (the green 0.0049 number, green meaning it’s above average), the daily average (0.00308) and the projected monthly (0.0925). Since this started just a few days ago and rewards are ramping up, today’s rewards are higher than the average until now. https://ibb.co/s3wDVXY

In the last couple of weeks I added support for monitoring the random beacon and ECDSA nodes. Since they don’t expose any APIs, I wrote a small jаvascript agent that periodically reads the logs and reports to the database the number of peers of each node. The app now shows this collected info on the nodes screen, and sends push notifications when the number of peers drops below a predefined threshold. The app also shows the number of groups the operator is currently part of (31 in my case). It also shows the last hour rewards, and how it compares to the hourly average over the last 24 hours. Plus it shows the rewards in the last 24 hours (same figures like in the staking screen). This is how it looks: https://ibb.co/zSWvS58

I’m not monitoring yet the ECDSA rewards since I couldn’t see any live example of how it looks due to zero bonding activity on Ropsten. I will add support for it once I see it live. I also intend to add support for mainnet once it’s launched. The app itself is still work in progress as I’m revamping the entire UI with a professional designer, and keep adding support to additional (mostly PoS) networks and exchanges. It is currently running on my iPhone and will be available for free later this year for both iOS and Android.



25.05.2020

I’m running a Keep node on testnet (0x2D5A8AAd52A316dF5e69b28bCDA9B98c170f7c00) and staking my KEEP. Since I’m running so many validators/nodes, I realized it’s really hard to manage and track what’s going on so I’ve been working on a mobile app to help me do that (and many other things). The app tracks the user balances in all wallets (and exchanges)  and reports any changes. As part of that it also tracks staking rewards, and nodes status, and alerts when staking is below the expected value or when a node needs attention.
I spent the last few weeks adding support for Keep and the staking part is now integrated into my app.
During my work I found out that the Keep dashboard takes about 20 minutes to load because it performs hundreds of contract calls to calculate the current user rewards, even though we only have less than 100 groups total (and only so many users). I also found a bug in the calculation that I reported to the team (https://github.com/keep-network/keep-core/issues/1823). I ended up developing a caching mechanism that collects in the background the groups status changes and stores it in a database. With this approach calculating the rewards for every address is instant. I made that public and you can try it by using curl https://us-central1-cryptotracker-fa488.cloudfunctions.net/getKeepRewardsR?address=0x2D5A8AAd52A316dF5e69b28bCDA9B98c170f7c00 (plug your own address). It will return a JSON with the total rewards in ETH and breakdown per group (by the group public key). Please note that this can sometimes fail as my Infura key is on the free tier and can get exhausted, in which case just try it again.
Contribution: KEEP Tools
Contribution: KEEP Guides
Contribution: Community Resources