I had a slight epiphany and felt I needed to experiment with it and then document it in a post. A few months ago I put together a 5 part series investigating Steem Economics. You can find all 5 parts of the series below.
I have been thinking about distribution of rewards. Generally, in the world outside of Steem, the most popular content receives the highest rewards. This provides incentive to create the most popular content. In the Steem ecosystem, that is not normally the case. The highest rewarded content is content supported by those with the most Steem Power. This could be through direct upvotes or bought votes.
Changing the reward algorithm for posts
The basic idea around the existing rewards algorithm is easy to follow. If an account has more effective Steem Power (own + delegated), it can deliver a higher upvote. The value of the upvote is also effected the amount of Voting Power an account has and the level of voting activity on Steem. One full upvote drains 2% of the existing Voting Power. If someone made full 10 upvotes in quick succession, each upvote would be worth 2% less than the previous upvote. If the total amount of Steem Power used for voting increases, the value of all users’ upvotes will fall. There is a lag of at least a week, as payouts from more activity will drain the rewards pool, which will trigger lower votes. At the time of writing this post, the rewards pool was approximately 879,778 STEEM. Based on a previous calculation I made a few months ago, approximately 50,000 Steem is added a day. If more than 50,000 Steem leaves the rewards pool, voting strength will fall, hence preventing the rewards pool from going too low.
The rewards algorithm is used to distribute rewards to both content creators and curators. If we assume Steem Blockchain Dollars (SBD) are pegged at US$1 and all votes are made after 15 minutes, the content creator will receive 75% and the curators will receive 25% of the rewards. Each upvoter does not necessarily receive exactly 25% of their vote back as curation reward. Instead, those accounts, which upvoted early get a larger share. If the post receives a very high payout, the early upvoters will receive curation rewards considerably higher than 25%. Those that upvote late will receive curation rewards that are lower than 25%. Therefore, upvoting posts early (15 minutes) always yields higher curation rewards, in percentage terms, than upvoting later.
Problems with existing algorithm
The existing algorithm presents several problems that are harming the Steem ecosystem. Steem has a proof-of-brain system of distributing rewards. This system is struggling. It is becoming a proof-of-wallet system instead. In this section of the post, I want to highlight a few of the problems that are putting proof-of-brain at risk.
The existing system can be easily gamed. One method is through auto-upvotes. Users can identify content creators that normally receive high payouts. Auto-upvote applications can be used to optimally time votes to maximise curation rewards. This problem has been exasperated further with the arrival of bid-bots upvotes. The website, steembottracker.com, contains the posts that have been bid for and the value of these bids as well as an approximation of when these bids are to be made. Other users upvote the posts that have been bid on before the bot votes and therefore are able to obtain a higher curation reward. There are curation trails designed specifically for this task. Therefore, it is easy to obtain high curation rewards without actually doing any real curation.
Self-voting is another problem with the existing ecosystem. A self-vote returns the highest reward per vote. The account casting the vote receives the 75% content creators reward as well as the 25% curation reward. The curation reward is likely to be higher than 25% as the self-vote can be easily optimised by being cast before other votes, particularly large votes from whales or bots.
Returns from vote selling and delegation to bid-bots is higher than returns from curating content. People are being paid more to be passive than active. This is probably the greatest flaw in the current ecosystem. I have highlighted this flaw in several of my posts. Other users of the platform have highlighted this same problem. Currently, there does not appear to be full consensus on how the problem should be tackled. Ideas such as increasing curation rewards and including a separate downvote pool have been discussed but agreement has not been reached if such changes should be implemented. Many have also voiced opinions that these changes are only partial solutions. I like the idea of increasing curation rewards but 50% is still considerably lower than about 80% returns from delegating to a bot. I have discussed and supported 75% curation rewards in my posts and comments. This would be competitive with earnings from bots but may face resistance from some content creators.
Another problem with the existing ecosystem is how downvotes are incorporated into the system. Downvotes use Voting Power in a similar way to upvotes. I believe one full downvote uses slightly more Voting Power than an upvote. However, downvotes do not generate rewards. To downvote someone also penalises the downvoter. Downvoting is therefore not attractive and rarely occurs. The idea of a separate downvote pool could partially solve this problem, as downvoting would not reduce earnings from upvotes. Another problem with the current system is downvote retaliation. A user may downvote a post because it is over rewarded. It is quite common that the user that received the downvote will respond with a downvote out of retaliation. The potential of retaliatory downvotes is another reason why downvotes are not popular. I do not believe a separate downvote pool would solve that problem.
These are just a few of the problems I have identified with the existing Steem ecosystem. To read more about the problems I have identified, refer to the five post series mentioned at the beginning of this post.
I have only highlighted the above problems as my proposed changes to the rewards algorithm addresses these directly.
I am proposing a few small changes to the rewards algorithm that should reduce the above-mentioned problems. Before I explain what I am proposing, I want to discuss briefly account-based voting. Account-based voting would solve some of the above problems. Vote selling and bid-bots could not operate in an account-based voting system. Frontrunning large accounts would not be able to occur either. Distribution of rewards should better represent the choices of the community. However, I am not advocating account-based voting as it has its own set of problems that could be worse than the existing ones. These include users with multiply accounts as well as a lack of incentive for users to invest more heavily in Steem as the rewards for holding Steem are greatly diminished.
Figure 1: Account-based vs stake-based voting
Account-based voting is relevant to this post as it inspired the idea I am about to discuss. The figure shows the relationship between number of upvotes and rewards of a typical successful content creator under both stake-based voting and account-based voting. For stake-based voting, the highest rewards are at the beginning of the graph. These relationships are an approximation based off another post of mine ’Market Structure #7 – Oligopsony (Is Steem an oligopsony for content creators?)’. In an account-based voting system, the relationship between upvotes and rewards are closer to what we would expect from a healthier more balanced ecosystem. In other words, the most popular posts should get the most rewards and the most exposure.
Is it possible to emulate such an effect with a stake-based system? If so, would this approach be desirable. I played around with a few ideas such as square rooting upvote values summating them and then squaring them again. This did not achieve what I wanted. After experimenting for a while, I came up with a simple algorithm that might work. I tested it on a few posts to determine the effect. I was reasonably pleased. The algorithm is explained with the following equations:
Adjusted Upvote Value = Upvote Value – Upvote Value × (Upvote Value/Sum of Upvote Values)
Adjusted Downvote Value = Downvote Value – Downvote Value × (Downvote Value/Sum of Downvote Values)
Pending Payout = Sum of Upvote Values - Sum of Downvote Values
Pending Payout to Content Creators and Curators = Sum of Adjusted Upvote Values - Sum of Adjusted Downvote Values
STU returned to the rewards pool from pending payout = Pending Payout - Pending Payout to Content Creators and Curators
Adjusted Upvote Value is the value of the upvote for distribution to content creators and curators.
Adjusted Downvote Value is the value of the downvote to be returned to the rewards pool.
Note: The post’s sum of upvote values is not a static number but changes with every new upvote.
The upvote value should be calculated using the existing methodology. The adjusted upvote value should be calculated based on the ratio of the upvote value to the post’s sum of upvote values. For example, if the post’s sum of upvote values is 2 STU (Steem Token Unit) and if a user gives the post an upvote worth 2 STU, only 1 STU (2-2(2/4)) is available for distribution to the content creators and curators. If the post receives no further upvotes, the 2 STU upvote will only be worth 1 STU to the content creator and curator and the other 1 STU will be returned to the rewards pool. For example, if the final payout reaches 50 STU, the adjusted upvote value will now be worth 1.92 STU (2-2(2/50)) to the content creator and curator and only 0.08 STU of this vote will be returned to the rewards pool. If the post received 25 upvotes worth 2 STU each, 48 STU will be rewarded to the content creators and curators and 2 STU will be returned to the rewards pool. As more accounts upvote the post, the value of the existing upvotes increase.
A similar approach is applied to downvotes. The first downvote, at the time it is cast, will have zero impact on the pending rewards to content creators and curators, as the value of the downvote cast equals the sum of downvote values. The second downvote will have an impact, as the value of the downvote cast will be lower than the sum of downvote values. The first downvote will also have an impact for the same reason. For example, if the first downvote has a value of 5 STU, it will have an adjusted value of 0 STU when it is cast. If the second downvote has a value of 20 STU, it will have an adjusted value of 4 STU (20-20(20/25)=20-16). The first downvote will now have a value of 4 STU (5-5(5/25)=5-1). The second downvote will have a net effect of reducing the pending rewards to content creators and curators by 8 STU. As more accounts downvote the post, the greater the impact the existing downvotes will have, as they become a smaller percentage of the sum of downvote values.
To elaborate further, I have provided a very simple example. The gif below demonstrates how the value of the post progresses as upvotes and downvotes are cast.
In the example, I am using 50% curation rewards where 20% of the curation rewards from a new vote are spread across existing curation rewards to existing upvoters. This is to reward accounts that upvoted earlier, which is similar to the existing system. I am recommending the excess rewards are reintroduced back into the rewards pool. The reintroduced rewards will have a positive effect on everyone’s vote value. Those with many smaller upvotes will benefit.
Testing the algorithm
I have tested the algorithm on a few sample posts from some of Steem’s ‘top users’ according to payout. See Table 1 below.
Table 1: Changes to post rewards from a few of Steem’s 'highest rewarded' content creators
Some users lose more rewards than others do. Those that self-vote and have very few other high valued votes stand to lose the most. Posts from @nothus and @chbartist accounts were perfect for testing the algorithm as these users apply a combination of bot and vote selling services. The percentage drop in rewards was small compared to self-voters but most likely sufficient to eliminate gains from vote buying returns on investment (ROI). Payouts returning to the rewards pool will increase payouts of posts but the cost of buying votes will also increase. Therefore, vote buyers will not benefit. Vote buyers that do not adopt complex vote manipulation techniques such as @nothus and @chbartist are likely to have a very low return on votes bought.
How does this proposal solve the above-mentioned problems?
Gaming the system will become difficult as voting early could produce very low curation rewards. Voting later will produce curation rewards slightly lower than 50% in most cases. Users will still be able to frontrun bot votes but the demand for bots is likely to drop considerably because of the lower and more difficult to predict ROI. The remaining bot users are likely to be users that have sufficient confidence that the exposure bought will cover the cost of the negative bot vote ROI. Whale votes are likely to be more difficult to predict, as high upvotes will reap relatively lower curation rewards than multiple lower valued upvotes.
Self-voting on comments and low quality posts will become considerably less lucrative as the votes will have less value if they form a high percentage of the overall post value. In the test, @traf’s self-vote returned him just 7.65%, which is considerably lower than curating content. For example, If @traf split his stake into 6 accounts equally, he could earn up to 85% in total from self-voting. This would exceed the average 50% return on curation. However, the time taken to power down would be a considerable cost. He could also delegate his stake equally across multiple accounts. I believe it is possible that ‘Oracles’ could be created to identify these accounts as one person. Therefore, his returns would drop back to 7.65%. The same idea can be applied to curation trails, which are effectively operating as one user. It would be even better if an ‘Oracle’ could distinguish manual upvotes from automated votes. If this was possible, all automated votes could be included in the algorithm as being from one source.
Voting selling will become considerably more complicated. An ROI on buying votes will be close to impossible to calculate. Most users will lose out very badly from buying votes. To continue operating, bot owners would be pressured to lower the price of buying votes. Many users will stop buying votes because of the uncertainty regarding the ROI. Bots generally earn lower curation rewards in percentage terms than other users. At 50% curation rewards, a bot is likely to obtain only 40% (10% lost to frontrunning) or less. The bots would need to charge to cover the lost curation rewards as well as the operating costs of the bot. It is likely many bots will not survive.
The separate pool for downvotes will help encourage the use of downvotes but does not deal particular well with the problem of retaliatory downvotes. The proposed algorithm protects users from a single downvote. For the downvote to take effect, downvotes of similar value are required. If there are major issues with abuse, @spaminator and @steemcleaners can still be used together. These accounts could be broken into several smaller accounts if that is more effective.
Possible problems this algorithm might cause
All solutions offered are susceptible to some problems. Applications such as @fundition, @utopian, and @oracle-d reward users with large upvotes. These upvotes are sometimes in comments that receive no other votes of value. The proposed algorithm would greatly reduce these upvotes and thus create problems for these applications. The applications would need to make payments using alternative methods. If curation rewards are increased to 50%, the applications can distribute curation rewards directly as rewards to users.
I mentioned early, users could distribute their stake across multiple accounts to obtain higher rewards. If ‘Oracles’ cannot or are not created to treat these multiple accounts as one user, the use of multiple accounts would trick the algorithm. The community can respond by manually identifying such accounts and respond with downvotes. The splitting of stake across multiply accounts creates the same problem with downvotes as with upvotes.
Buying votes from services such as @smartmarket and @minnowbooster could present a problem as upvotes are from individual accounts rather than a bot. If ‘Oracles’ can group all automated votes as one vote this problem could be solved. However, I am not sure if this is possible or necessarily desirable by the community. Buying votes from these services will likely create a negative ROI if some of the votes bought are quite large. If only small valued votes are bought, the negative effect of vote buying is minimal.
Other possible supporting ideas
The main idea in this post is the proposed changes to the rewards algorithm. I have a few other ideas that would support and complement the algorithm, which I would like to flesh out in future posts.
Separate reputation score for content creation and curation
There is a reputation score for content but not curation. I see these two skill sets as entirely different. The exiting reputation score is broken. There is a proposed alternative, User Authority, which is currently being developed. I have not read anything about a curation score. This score could be determined based on variety of posts upvoted/downvoted, the level of engagement through comments, percentage curation rewards earned, percentage of self-votes, and any other logical indicators of active curation. A high curation score could carry with it a percentage increase in vote strength. For example, a curation score of 75/100 could increase Voting Power by 10%.
I have discussed curation beneficiaries a few times before but I believe it is worth highlighting again. If an account receives delegation from another account, it is only reasonable that the delegating account obtains a return. If there is an option for curation beneficiary rewards. The delegator can receive payment directly as a beneficiary of the curation. The percentage beneficiary rewards needs to be agreed and locked in prior to the delegation. For example, the delegator and delegatee might agree that the delegator receives 90% of the curation reward. If curation rewards are 50%, the delegator will receive 45% of the curation reward from the delegatees vote. For example, if a delegatee has 50,000 Steem Power and receives another 50,000 Steem Power from a delegation, the delegatee would keep 55% (50% + 5%) of the curation rewards and the delegator would receive 45%. If we include the idea of curation scores, delegating Steem Power to high rated curators, could provide a good form of passive income for investors. An investor could obtain above 50% of their own upvote in return.
Including star ratings
Adding star ratings could further enhance curation. After upvoting a post, the voter should be require to give the post a star rating (1 to 5), 1 star being the lowest and 5 star being the highest. After a post has been rated a particular number of times (e.g. 20), the post should be given an average star rating. If a post does not reach the required number of votes, it does not receive a rating. The star rating could provide a useful indication of the quality of the post and be a determinant of an account’s curation score. The use of ‘Oracles’ would help to prevent someone with multiple accounts distorting the rating.
Payout the highest upvote to ‘null’ (alternative to all of the above-discussed solutions)
If my algorithm is not appealing or too complex to successfully implement. I have another very simple solution - payout the highest upvote of each post to ‘null’. The curator of the highest upvote still keeps the curation reward but the upvote goes to ‘null’ instead of the content creator. The highest upvote would not be considered a waste as it would reward the second highest upvote to the content creator, unless that is the only upvote.
This would disincentivise both self-voting and buying votes as these two types of upvotes are often the highest votes a post receives. This change does not address as many areas as the proposed algorithm in this post but it should be much easier to implement and face less resistance than a more elaborate change to the rewards algorithm, which could have several unforeseen implications. Sending payouts to ‘null’ has the added advantage of reducing the inflation of Steem, which could make it more attractive to investors. Instead of sending the payout from the highest upvote to ‘null’, it could be returned to the rewards pool. This would help increase users vote strength. Another option is to send the payout of these votes to a ‘worker proposal’ fund.
In this post, I have identified several problems with the existing mechanisms of distributing rewards. I have proposed changing the rewards algorithm to encourage users to upvote content, which they believe to be popular. This algorithm adds risk to upvoting early, it reduces rewards to content that receives rewards primarily from one account, reduces the effect of retaliatory downvoting, creates negative ROI for vote buyers, and returns payout to the rewards pool to increase the strength of all users upvotes.
The algorithm is not an entirely effective solution in itself and requires several other changes to enhance it. These include:
- Oracle/s to treat accounts that consistently vote together as one account
- Increase curation rewards to 50% or higher (I have previously proposed 75%, the algorithm does not necessitate such a high value)
- Separate downvote pool
- Separate reputation score for content and curation (to be described in more detail in a separate post)
- Curation beneficiaries as an alternative form of passive income
- Curation rewards to be paid out in both SBD and Steem (explained in Part 5 of the Steem ecosystem series)
The algorithm described in this post has been explained in the context of Steem. It could work for a Smart Media Token (SMT). I would recommend that the algorithm is trialled as an SMT first, so as to identify problems that could occur. An alternative algorithm could also be developed if it achieves similar results to the one explained in this post.
If all of the above appears too complex, there is also the option of sending the payout from the highest upvote to ‘null’.
If you want to read any of my other posts, you can click on the links below. These links will lead you to posts containing my collection of works. These posts will be updated frequently.
The whale appearing in the pictures/images in this post is Squirt. If you want to learn more about him. Click on the gif below.