Witness Status Update - First Month Ran By Smoothly

in #witness-update4 months ago (edited)

It's been about a month ago since I started running a hive witness and it's time for a short update. Since the first hick-ups were solved (causing a missed block) the witness and the server are running smoothly without the need for much maintenance.

Image source: unsplash.com

Rank and block signing

In the past month the number of votes also showed some upward movement. At the moment the witness is listed at rank 100 when not considering inactive witnesses. This current ranking yields the witness about two to three blocks to be signed.

Rewards vs Running Cost

As you might know from previous posts, the witness is running on a rented server. This comes with costs of about 43 USD. Although not the goal, it would be great if the rental fees can be fully covered by the witness rewards. To see the status of this goal I hacked together a little script to get the number of blocks produced and the corresponding revenue and (currently still) loss details. Here's the code snippet for your own use:

from datetime import datetime, timedelta
from beem import Hive
from beem.account import Account
from beem.amount import Amount
from beem.market import Market

user = "michelmake"
server_cost = 43.0
time_window = 60 # in days from now

vests = 0
blocks_produced = 0
for h in Account(user).history_reverse(stop=datetime.utcnow() - timedelta(days=time_window )):
    if h['type'] == "producer_reward":
        precision = int(h['vesting_shares']['precision'])
        full = int(h['vesting_shares']['amount'])
        vests += full / 10**precision
        blocks_produced += 1

rewards_HP = Hive().vests_to_hp(Amount(vests,"VESTS"))
hive_price_USD = Market().hive_usd_implied()
rewards_USD = rewards_HP * hive_price_USD
average_block_rewards_USD = rewards_USD / blocks_produced

print("Total blocks produced %d" % blocks_produced )
print("Total producer rewards %.3f HP" % (rewards_HP))
print("Total producer rewards $%.3f" % (rewards_USD))
print("Net running cost $%.3f" % (server_cost-rewards_USD))
print("Blocks needed to break even: %d" % (server_cost/average_block_rewards_USD))

Disclaimer As you can see, I'm no developer :D

Running this script on the witness yields the data below. So far 62 blocks with a total revenue of ~83 HP which yields a net running cost of ~$15. Not bad I'd say. These costs are based on the hive price at the time of writing this post. A quick calculation using the current usd value of Hive shows that a minimum of about 90 blocks per month are needed. So about three per 24hr:

  • Total blocks produced 62
  • Total producer rewards 83.309 HP
  • Total producer rewards $29.507
  • Net running cost $13.493
  • Blocks needed to break even: 90

As I've mentioned in the past, the server cost is completely covered by HBD savings revenue. Effectively this fully Hive-funded witness runs by itself from the cost side of things. Pretty sweet I must say :)

Present and Future Plans

  • I only recently started using HiveSQL and Beem to play around with Hive data. Mostly python as this is what I know best. It's a lot of fun but I still have to learn a lot. It's mostly hacking around at this point! In the coming months I will try to build more scripts for various purposes like the script above. I will share them via GitHub (more on that in future posts).
  • The original reason I started scripting with the chain was inspired by the Britlist posts by Steevc. I'm currently working on a similar initiative for the Dutch Hivians which will soon come out for the first time.
  • Two weeks ago I launched the first witness voting reminder in which users voting for stale witnesses are reminded to review their witness voting. There's really a lot of voting power going to stale witnesses. A waste IMHO. In general I got mostly positive feedback from the reminded users. My plan is to send out such posts every quarter to push the community to vote and review more often.
  • Finally, I started to use the ecency points obtained through usage of their API to boost new users that create quality content. This simply to help grow the community. Although this contribution is small, I believe it might still be useful. The past week or two I managed to boost the following users:

Apart from the above activities I will remain active as I have been. Posting regularly and interacting with the community more or less every day. The stats for December published by @quochuy show my activity quite nicely. Les't see if I can beat the number of posts and comments : )

Witness Monitoring

While many monitoring tools exists for user accounts, the witness tools can be a little harder to find. Some nice tools that I came across which are worth looking into are listed below:

This should get you most of the witness related relevant information.

Asking for Support

The challenge for every witness owner is support. Getting votes is important yet hard. Hence, if you like what I do I ask you to consider voting for my witness:

Vote for My Witness

Alternatively you can easily review your witness votes on the main front ends:

Your vote goes a long way, being it for me or any other witness. The bottom line is that I really encourage you to use all your votes. It's a small task which you could even outsource via proxy voting.


Another update will follow next month. Have a good one!

Sort:  

For a non-developer you surely did a nice script there. 👍

Thanks, that means something! :)