How frequently do witness ranks change?

8개월 전



Image: screenshot

Did you ever wonder how frequently the witness rankings change throughout a day, a week or a month? Unfortunately, data on this is not easily available. The witness rankings are calculated "live" by the steemd blockchain daemon based on all power-ups, power-downs, witness-votes, etc. as they happen over time and there is no "history" kept of this list from previous points in time.


  • Scope of the analysis and tools
  • Numbers of witness rank changes per day
  • Witness rank changes visualized
  • Conclusion

Scope of the analysis and tools

This contribution looks into how the witness ranks of the top 40 witnesses changed over time between Dec. 11th 2018 and Jan. 2nd 2019. The data collection that now led to this post wasn't originally meant for an analysis. It was started with another purpose but turned out to provide some interesting results which I thought are worth sharing. For that reason, the time scale is comparably short, and only the data from the top 40 witnesses is included. For the above reasons, extending the data to more witnesses or a longer time scale is not easily possible. All data collection was done with beem. I was recording changes with my dev/alt account @stmdev on the chain with a beem cron-job script running every minute since Dec. 11th 2018, writing the list of top 40 witnesses into the profile information of my account whenever the list changes:


The data for this analysis could now be extracted by parsing the account history of my account and filtering out all update_account operations, containing the timestamp and the list of top40 witnesses at that point in time. Data processing and visualization was done with python and matplotlib.

Numbers of witness rank changes per day


This graphs shows the number of witness rank changes per day. The blue bars indicate the number of changes within the top 40 witnesses, the orange bars show the number of changes in the top 20 list, and the green bars hold the number of changes for the top 10 list. First of all, the number of rank changes fluctuates considerably and there is no "pattern" visible. What's remarkable is that there were up to 8 changes per day in the top 40, and up to 4 changes per day even in the top 10. Given the amount of voted vests the top 10 and top 40 witnesses hold, this a magnitude I'd never have expected. I personally perceived the witness ranking list as rather static, at least in the upper positions.

The following table summarized the time intervals between changes with min, max, median and mean values (in hours).

Time between changesTop40 witnessesTop20 witnessesTop10 witnesses

This means, that the list of the top 40 witnesses changes in average every ~7h (median every ~3h). The top 10 witness list in this period changed in median around once per day. The minimum is for all three cases in the order of minutes, which indicates quite some fluctuation also on a short time scale. The minimum time shown here is based on the cron-job interval of 1 minute. The actual minimum might even be lower and there is a chance that my script missed temporary changes that reverted to their previous state before the next run was started.

Witness rank changes visualized

This graph is an attempt to visualize how the ranks of individual witnesses changed over the last few weeks:


Each witness has a line indicating their current rank at each point in time. Here we see some very interesting patterns. The probably most eye-catching pattern is the shift of the witness ranks of around 20 witnesses at once on Dec. 13th and Dec.19th - this is caused by a witness (@cervantes in this case) temporarily disabling their witness, moving all others one place up in the list of (active) witnesses. Another catchy pattern is a frequent change in position between two witnesses with comparable total voting VESTS. Examples are @steemhunt and @teamsteem switching their ranks frequently in the last few days. Similarly close and regularly switching are @drakos and @thecryptodrive, as well as @followbtcnews and @ausbitbank. What we can see here as well are longer-term changes, like @aggroed taking #2 from @timcliff, @anyx earning a big gain in position on Dec. 14th, or @therealwolf steadily gaining a few spots around Dec. 18-23. I have not correlated the changes with blockchain "events", but I'm pretty sure there would be connections to announcements and posts.


The rank of witnesses has a strong impact on their witness reward earnings. Especially the top 20 positions are paid significantly more than lower-ranked positions (see @quochuy's Witness earnings report for numbers and a detailed explanation of the witness system).
If you'd asked me before this work, I would have guessed that the witness rankings, and the top 20 spots in particular, are rather static and change only rarely. Seeing the result of this monitoring now shows, that there is quite some movement of the witness positions even in the top spots! Seeing also top witnesses close-by in terms of voting VESTS confirms that also a medium or even small-sized vote can make a difference for individual witnesses. Vote for witnesses!

Proof of Authorship

All scripts to create the results and graphs above are in my GitHub.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  trending

Hi @crokkon

Great work on building your own dataset for this (another!) analysis, some history I would like to be available in SteemSQL isn't present and DIY is a good alternative for sure.

personally perceived the witness ranking list as rather static, at least in the upper positions.

Same. The gaps in MVESTS between the top 10 being much larger than lower down the ranks, although individual accounts voting in the top 10 do hold large, vote-swinging stake.

I have not correlated the changes with blockchain "events", but I'm pretty sure there would be connections to announcements and posts.

In the case of @therealwolf, I think the state of the dapps work may have cause some good publicity, and a move on this witness.

Being a witness and lying outside the top 50, I would selfishly have liked to see this expanded to top 100/all witnesses, but understand the addition effort being quite sizable. Also, your original idea may not have been looking at lower ranks, and so I understand the scope not including all witnesses.


Happy New Year!

Asher [CM - Analysis]

Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.

Need help? Write a ticket on
Chat with us on Discord.


...some history I would like to be available in SteemSQL isn't present...

What kind of history would you like to be available?

Being a witness and lying outside the top 50, I would selfishly have liked to see this expanded to top 100/all witnesses...

He he, I guess you want to see your own witness rank evolution... here it is ;)



How did you pull that together? Maybe there is more in SteemSQL than I am aware of, and i just don't have the knowledge of the DB.

Can you do an SP evolution per account in the same way?


Thank you for your review, @abh12345! Keep up the good work!

Very interesting indeed! I would also have expected things to be more static.

It'd be inteteresting to add in a further layer about how often new people enter the top 20. Or something on how often there's change of the top 20 rather than change within.

Great analysis as always!

Posted using Partiko Android


Thanks for your comment and the resteem! The set of accounts within a certain rank range, or how often this set changes, is a good point! This is partly already available from the graph with the witness rankings. Take any rank limit and count how many lines go in or out of this rank range in the graph. Changes on these sets are clearly on a slower time scale.


OK cheers...I'll have a closer look when I'm on my top... my phone's not the best thing for viewing images on (combined with my eyes at least!).

Posted using Partiko Android

Hi @crokkon!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your post is eligible for our upvote, thanks to our collaboration with @utopian-io!
Feel free to join our @steem-ua Discord server

Hey, @crokkon!

Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Get higher incentives and support!
Simply set as a 5% (or higher) payout beneficiary on your contribution post (via SteemPlus or Steeditor).

Want to chat? Join us on Discord

Vote for Utopian Witness!

This post has been included in today's SOS Daily News - a digest of all you need to know about the State of Steem.

Very interesting content. Thank you.

Intuitively, there seems to have been more fluctuations than usual after the plunge in STEEM prices.

In my memory, there is usually a change between 17th and 22nd, and sometimes one or two TOP witnesses seem to change.

Other big fluctuations seem to be rare. The long-term influence of top-witnesses, the strong influence of freedom and blocktrades accounts seems to be the main reason, and mutual voting among top-witnesses seems to work partly.

Stability of witness status is an important factor in job performance, but since their term is not fixed, more active ranking changes seem desirable.