Utopian-io has been growing. October has seen some well-known organisations added to the VIPO (Very Important Project Owners) club, including Rocket.Chat and CoinGecko. There is a new contribution category for anti-abuse fighters. Further translation teams have been formed and the category now covers fifteen of the world’s languages.
With growth comes a requirement for sustainable operations. If you follow Steem’s open source community closely you will have seen two posts on Halloween relating to the new voting bot. Sustainability and quality are the watchwords, combined with a desire to reinvigorate some of the less-active categories. Whilst the old bot upvoted all contributions by creation date order the new bot will upvote the top-scoring posts from each category before spreading any remaining power to the larger categories.
In this analysis I will look at the voting behaviour of Utopian-io across the month of October. This period is almost entirely covered by the old voting bot with only two rounds from the new bot. I will aim to:
This first chart summaries all Utopian-io votes across the month of October aggregated by category of vote and by the day on which the vote was awarded.
The y-axis shows vote weight. 100 on the axis represents one full strength 100% vote. 1000 represents a full day’s allocation of ten 100% votes. The x-axis represents each day in October based on universal time, UTC, as per the blockchain.
For those new to Utopian a brief explanation of the categories of votes:
The largest share of voting goes to rewarding contributions, as would be expected. The significance of the work of the moderation teams is also well-reflected by their votes. Trails and task-requests share a smaller piece of the pie but with Utopian-io holding 3.6m Steem Power these votes are not insubstantial.
The old voting bot was programmed to vote when voting power recharging arrived close to 100%. This would normally result in 1000 weight of voting per day, equivalent to 10 full 100% votes. The peaks and troughs of voting tended to arise when the old bot was forced to over-vote to ensure all posts received a vote within the seven day window. Or those thankfully rare occasions when something fell over.
It should be noted that when the bot over-voted the voting power fell below 100%. This means that the vote weights awarded are not always proportional to the vote amounts added to post payout. This could easily be changed in the chart by using the rshares of the votes or translating the rshares to STU values. However for this analysis I am more interested in the vote-weights awarded as the best measure of how Utopian-io seeks to reward each category.
This second chart takes the contribution vote amounts above (blue bars) and separates them between contribution types. Again the date range is the month of October.
There are thirteen contribution types, including the new anti-abuse category for Steem’s fearless abuse fighters. Task requests are not included in these figures. As in the first chart the y-axis represents vote weight and the x-axis shows the dates.
As can be seen, there are some very significant differences when comparing the weight of upvotes for each contribution type. Since the old bot rewarded all contributions by date order these differences are mainly due to the number of contributions made in each category. The total weight of each category will also be impacted by the scores awarded to individual contributions by moderators (higher score, higher weight) and the maximum vote weight available for each contribution type (development, for example, has the highest potential maximum vote weight).
Over the entire month the top contribution types by overall vote weight were:
The chart below looks at the timing of votes made by Utopian-io and helps to illustrate some of the reasons why a change in the voting bot was necessary.
The y-axis represents the duration in a post’s life at which it is upvoted by Utopian-io, within the range of the seven day post payout period. The x-axis shows time across the month of October.
At the start of the month Utopian-io had just finished recharging after HF20. There were few posts made over the preceding week meaning that the posts-for-upvoting queue was short and posts were typically upvoted close to the point at which the moderation process was completed. Posts were upvoted one at a time (i.e not in batches) with voting power recharging close to 100% prior to the next upvote being triggered.
Over the following two weeks the weight of posts awaiting upvote grew much faster than the time taken for the Utopian bot to recharge. Posts were upvoted in date order meaning that there was a gradual increase in the duration between post creation and post upvote.
By the 19th October the upvoting duration had reached the maximum 6.5 days. Upvotes made after 6.5 days are caught in the cooldown period resulting in a waste of voting power. At this point, in order to continue to upvote all posts, each post had to be upvoted as soon as it reached 6.5 days. This resulted in batches of votes being processed together with no time for Utopian-io to recharge between votes and some fairly random reductions in rewards due to upvotes being made at lower vote power.
The main problems of the old bot with regards to timing can be summarised as:
On the right-hand side of the chart are the first two voting round using the new approach. The new bot upvotes the highest scoring posts from each category first meaning that these posts should be upvoted early in the seven day payout period and gain greater visibility.
Congratulations to all those who made it on to the top 50 list for October. Particularly to our translators! I recently spent some time getting to grips with node.js through online tutorials and using the reference documentation. I'll admit that had this been in any language other than English (or maybe French) it would not have happened.
Given the overall breakdown of voting by contribution types it is perhaps unsurprising to see translators, developers and bloggers to the fore. However it is also good to see that copywriters, documenters, analysts and tutorial-makers can also make their presence felt.
If you are interested in particular types of contributions, here are the summaries!
The last day of October was also the first full day using the new voting bot. A look back at the chart from section 2 shows the distribution of votes between contribution types on this date was much more even than on previous days. This resulted in a fall in voting for the large contribution categories and an increase for the smaller ones. The reinvigoration and growth of the smaller categories is one of the issues the new voting bot is attempting to solve.
However it is far too early to jump to any conclusions. The new bot has reserved pools for each contribution type. These pools are made available to the larger categories once the smaller categories have received upvotes. As such there is likely to be a period of evenness, perhaps a few days, whilst the bot clears the posts from the smaller categories, followed by a period when more of the voting power is consumed by the larger categories.
Whether greater evenness of voting is the long-term result will depend on how the smaller contribution categories grow with this new opportunity and whether any tweaks are made to the rules of the new bot once the pattern of voting settles in. I would expect something in between the current position and complete evenness, perhaps closer to the former than to the latter. But that is a question for November.
This analysis relates to the Utopian open-source project. The relevant repositories are:
I used the block.ops analysis system to produce this study. Block.ops is an open-source analysis tool designed for heavy-duty analyses of the Steem blockchain data. It is currently under construction. This is the third complete analysis from its depths.
You can find the repository for block.ops here:
https://github.com/miniature-tiger/block.ops
The analysis used all the Steem blocks from October. This is approximately 900,000 blocks.
The main difficulty in producing this analysis involved correctly allocating posts to their respective categories and contribution types. This relied entirely on the tags and links included in each post. The order / logic I have used for the allocation is as follows:
Whilst I have made my best effort in this categorisation, I cannot promise to have allocated every post correctly.
Thanks for reading!