Image: steemd.com/witnesses 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
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 changes||Top40 witnesses||Top20 witnesses||Top10 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.