With all the chaos happening in regards to control of the blockchain, I thought I would revisit witness voting and the vulnerability the current system has to large accounts that may choose to exert their influence to control the blockchain.
In November 2018, I posted a five part series titled ‘Is the Steem ecosystem in disequilibrium?’. In the first post of this series, I discussed some of the problems in regards to selecting witnesses using Steem’s approach to delegated proof-of-stake. In that post, I also offered several possible solutions. These included reducing the numbers of votes per account, expiring votes, negative votes, and ranking witnesses.
In the final post in the series, I offered a combination of solutions. In regards to witnesses, I proposed a ranking system and for votes to expire after 6 months. In the first post, I described the ranking system as follows:
Another approach that could prevent any account from gaining too much control over witnesses is to use ranking rather than voting. Instead of just voting for 30 witnesses, a stakeholder could rank as many witnesses as they like. The number one selected witness would receive the accounts full voting weight. The number two ranked witness would receive a reduced voting weight, X% less than the number one selected witness. The number three selected witness would receive X% less than the number two selected witness and so on. This approach could provide incentive to witnesses to improve their ranking. Voting does not convey the message of which voted witnesses are preferred over others; ranking would provide this feedback
This approach could be quite confusing for many users, which could result in more proxy voting.
In the final post in the series, I explained why I believe such an approach would be an improvement over the existing system.
Of the solutions described in Part 1, I believe a combination of ranking witnesses and expiring votes after a period (e.g. 6 months) would be the most effective.
Ranking witnesses enables users to prioritise witnesses based on preference of activity. There are many advantages of ranking witnesses compared to just selecting witnesses using equally weighted votes. These advantages include:
- Restricting the influence of the large stakeholders to a smaller number of witnesses
- Accounts can display preference between witnesses
- More onus on witnesses to perform in order to maintain rank
- More pressure on witnesses to be transparent regarding activities
- More opportunity for new witnesses as they can achieve an initial lower rank and aim to climb higher as they demonstrate their competence.
- Witness positions are less likely to change significantly, as large stakeholders can change ranking order instead of dropping votes completely.
The weights applied to ranking could be described as follows: Number one ranked witness would obtain full stake approval, number two ranked could obtain 90% approval, and number three could obtain 81% approval. This weighting reduces the next rank by 10%. It is possible that 5% or maybe 15% could work better.
In this post, I want to explore ranking further. I have been on Steem for more than an extra year since I wrote that series of posts. I believe I can provide additional insight, which I did not have when I wrote those posts. I used an arbitrary 10% reduction in weight of votes per rank to demonstrate how a ranking approach would work. I did not provide any analysis of the changes we could expect to see if ranking was applied.
Currently, Steem users can vote for witnesses using their own stake directly or use a proxy on their behalf. A proxy is useful for someone who has many accounts and does not want to change witness votes for every account. A proxy is also useful for someone who is not confident in making witness selections themselves and they would rather rely on a community leader to make decisions on their behalf.
Each account has 30 witness votes. The top 20 witnesses essentially have control over the blockchain; they verify each block and work together to achieve consensus on upcoming HardForks. As there are more votes than top witness positions, it is possible for one account/user to determine all top 20 witnesses. This happened when Steemit, with help from exchanges, voted in 20 new witnesses with one account (@dev365). If one account/users controls all the witnesses, that account/user is free to make any changes to the blockchain and do not require any input from any other stakeholders of Steem.
If Steem used a ranking system similar to what I have described, it would be considerably more difficult for an account/user to control all 20 top witnesses.
Before I explain any further, I want to discuss dividing stake across several accounts. Under the current system, there is no benefit from dividing stake between accounts. Under a ranked system, dividing stake between accounts would produce different outcomes. If an account/user divided their stake, they would be able to distribute the influence of their stake more evenly across several witnesses. However, there is no dominant strategy. See Figure 1.
Figure 1: Voting strategies using ranking
Note: Y-axis represents percentage of stake held. X-axis represents witnesses ranked 1 to 20.
For Figure 1, I have assumed that each subsequent rank holds 20% less weight than the previous rank and that each account can rank 20 different witnesses (different from initial proposal of unlimited ability to rank witnesses). In Figure 1, I show four methods of dividing stake to achieve different outcomes.
- Method 1 – hold all stake in one account
- Method 2 – hold stake evenly across 20 accounts
- Method 3 – hold stake evenly across 6 accounts
- Method 4 – hold stake evenly across 11 accounts.
Method 1 involves keeping the stake in one account and ranking witnesses from 1 to 20. Method 2 involves dividing the stake into 20 accounts. For Method 2, each witness will be ranked differently by each account, i.e. each witness will obtain all ranks between 1 and 20. Each witness will be supported by equal weight. Method 3 involves dividing the stake into 6 accounts. For Method 3, accounts would be used to focus on 6 witnesses. These accounts will rank these 6 witnesses in the top 6. The remaining witnesses will be ranked from 7 to 20 by all accounts. Method 4 involves dividing the stake into 11 accounts. For Method 4, accounts would be used to focus on 11 witnesses. These accounts will rank these 11 witnesses in the top 11. The remaining witnesses will be ranked from 12 to 20 by all accounts.
Figure 2 contains an example of how a user could rank 20 witnesses with 20 accounts in such a way to equally distribute the influence of their stake.
Figure 2: Evenly distributing stake to influence over 20 witnesses
Note: Witnesses are in red (A to T) and accounts are in blue (1 to 20). The numbers in the table are ranks applied by each account to each witness.
Method 1 is the least effective method for controlling the blockchain but is good for giving a few choice witnesses strong support. None of the other methods is a completely dominate strategy for controlling the blockchain with a given stake. Method 2 would be more effective when directly compared with Method 3 (i.e. 13 vs 7 witnesses) but less effective against Method 4 (i.e. 9 vs. 11). Method 3 would be more effective when directly compared with Method 4 (i.e. 6 vs 5 and remaining witnesses tied) but less effective against Method 2 (i.e. 7 vs 13). Method 4 would be more effective when directly compared with Method 2 (i.e. 11 vs. 9) but less effective against Method 3 (i.e. 5 vs 6 and remaining witnesses tied).
How much stake would be needed to control the blockchain?
This depends by how much the influence of stake depreciates with each rank. For simplicity, let us assume that there are only 2 stakeholders. In the current system, whoever has the most stake is able to control all 20 witnesses. This would happen even if one person had just one extra powerded up Steem. If ranking were possible, this would not happen.
For one person to control the blockchain, they need to control 17 of the 20 witnesses. For someone to do this using the ranking model, they would need to equally divide their stake into 17 accounts and focus on the top 17 ranks for their selected 17 witnesses. Figures 3, 4, and 5 shows how much stake is required to control the blockchain if the influence of stake is reduced by 20%, 50%, and 8% per rank respectively.
Figure 3: Staked required to control blockchain with 20% reduction in weight per rank
Note1: Y-axis represents percentage of total stake. X-axis represents witnesses ranked 1 to 20. These are different witnesses for each user.
Note2: a 20% reduction in influence in stake per rank is equivalent, in effect, to reducing the number of votes per account to 5.
Figure 4: Staked required to control blockchain with 50% reduction in weight per rank
Note: a 50% reduction in influence in stake per rank is equivalent, in effect, to reducing the number of votes per account to 2.
Figure 5: Staked required to control blockchain with 8% reduction in weight per rank
Note: an 8% reduction in influence in stake per rank is equivalent, in effect, to reducing the number of votes per account to 10.
Reducing the influence of stake by 8% per rank still enables a user who holds only 60% of the stake to control at least 17 witnesses. Whereas, reducing the influence of stake per rank by at least 20% requires a user to control more than 70% of the stake to control at least 17 witnesses.
Realistic in practice
So far, I have described a very basic scenario of two stakeholders. Steem has thousands of stakeholders. There are a few large whale accounts but even the biggest accounts have less than 3% of the stake. The current exception is Steemit. The combined stake of all the Steemit accounts is likely to be about 30% of the total stake. This is likely to fall over time as the rewards pool continues to spread Steem to more users.
Let us assume that someone with 30% of the stake wished to control 17 of the 20 witnesses. Their optimal strategy to achieve this would be to focus on 17 witnesses using 17 accounts. If this were the case, how much stake would be required to ensure that at least 4 witnesses are not controlled by the one user. See Figure 6.
Figure 6: Stake required to prevent one user from controlling the blockchain
According to my calculations, only 12% out of a remaining 70% of stake would be required to be focused on 4 witnesses. Under these circumstances, there would not need to be a massive rally by the community to prevent a takeover.
Is there a downside to this approach?
As I mentioned previously, ranking is a little more complicated than just voting. This could lead to more proxy voting or lower participation. Ranking would also enable a larger stakeholder to control 4 witnesses more easily. This could be done to intentionally prevent HardForks or be used as an attempt to make demands of the other 16 witnesses. I believe it is unlikely that someone with a very large stake would intentionally stall development as he or she has the most to lose from delaying the development of the blockchain.
We could argue that the emergence of the Steem Proposal System (SPS) renders ranking less necessary as witness projects can be funded independently to witness payments. However, witnesses could be ranked based on contributions to the blockchain. These areas could include security, economics, technical ability, reliability, nodes, and perspective on SoftForks and Hardforks, Even relevant personal characteristics such as integrity and consistency could play a role in the level of support a user wants to give a particular witness.
I am also unsure about how difficult a ranking system would be to implement. I am guessing it should not be that difficult as only a few parameters are required but it would still be more difficult than just reducing votes per an account.
Why would ranking witnesses be better than some of the other solutions?
A commonly discussed solution is to reduce the number of votes per account. For example, the number of votes could be reduced to 5 votes per account (similar impact of reducing control as a 20% reduction in influence per rank). This would make it more difficult for one user to control the blockchain. However, limiting a user to just 5 witness selections is likely to result in users only supporting the witnesses they have the most confidence in. The new witnesses are likely to struggle to gain traction. Users could choose to divide their stake over several accounts to support more witnesses. If users could rank witnesses, they would not need to divide their stake. Many users would not want to go to the extra effort of dividing stake between accounts. Dividing stake also has implications for voting on content. Users may want to delegate all Steem to one account or create a curation trail to synchronise content voting.
The inclusion of negative votes for witnesses has also been suggested before. I doubt this will make much of a difference as the dominant stakeholder could respond by negatively voting the potential replacement witnesses. Negatively voting witnesses could also create unnecessary hostility regarding issues that are not related to the work of the witness.
The sharp cut-off between the 20th and 21st witness could be changed. Witnesses ranked between 21 and 30 could be given more responsibility as well as opportunity to produce more blocks. Such a change would require a major amendment to the current DPoS. New rules regarding consensus for HardForks would also need to be implemented to facilitate the additional semi-backup witnesses. If such changes were made, I cannot see how a ranking system would be in conflict with these changes.
There are always many ways of reaching a desired outcome. The current implementation of delegated proof-of-stake with 30 votes to 20 top witness spots runs the risk of enabling a user with a very large stake to control the majority of the witnesses or have significant influence over witnesses.
In the post, I have presented mathematical evidence that ranking witnesses significantly reduces this risk. In my post, Is the Steem ecosystem in disequilibrium? (Part 5 – Combination of solutions), I discussed several other possible advantages of being able to rank witnesses.
I believe all possible changes to the method of selecting witnesses should be considered and compared. The community should be given an opportunity to express which changes they support. The witnesses should also be able to highlight what they predict will be the likely impact of such changes.
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.
Guide to the Steem Ecosystem (Udemy Course)
I have launched my Udemy course ‘Guide to the Steem Ecosystem’. This course takes you on journey through the Steem Ecosystem. The course consists of 6 sections. These sections are as follows:
- Getting Started
- Navigating Steem Frontends
- Becoming a Steem User
- Behind the Scenes
- The Wonders of the Steem Ecosystem
- Additional Content (SteemFest 4, SMTs, Communities, etc.)
The course contains 56 video lectures (about 13.5 hours of viewing), 56 multiple-choice questions (10 to 12 at the end of each section), and 59 downloadable resources (presentation slides and additional material such as white and blue papers). The course is free-of-charge. Click the link above to access the course.
I also have an economics course, titled Economics is for Everyone, which contains about 4 hours of video content.