steemd.com screenshot of the witness ranking end of July 2019
I came across a post from @jondoe around two days ago:
This post describes the situation around two of the biggest accounts on the chain, pumpkin/freedom and blocktrades, which could be able to control who is a top-20 witness and therefore earning considerably more witness rewards than the lower-ranked witnesses. @jondoe sees a solution for this problem by decreasing the maximum number of witness votes for all accounts, which makes it much harder to control the witness positions of more than a few accounts.
I'm taking the occasion here to take a closer look into the distribution of the witness votes and the possibilities of individual accounts to influence the witness ranks. With a simplified experiment, I'm simulation a situation with a maximum of only 10 or 5 witness votes per account.
Witness ranks and distribution of Vests
The witnesses are ordered by the sum of all Vests (equiv. to SP) voting for them. This is shown in the "Approval" column in the picture above. What counts here is the owned SP/Vests of each voter independent of SP delegations. Users can explicitly vote for up to 30 witnesses or set a proxy to count their own stake towards the witnesses voted by that proxy account. There are basically two ways to have a strong vote:
- have a large stake
- be a proxy for a large number of smaller accounts
Here are the accounts with the highest witness vote strength on the chain:
|account||vests from stake or proxy||votes for witnesses|
The top 3 are Steemit accounts that do not vote for witnesses at all. The biggest account voting for witnesses is @pumpkin as a proxy of @freedom with mostly own stake. The second largest is @proxy.token - this is a comparably young witness with only around 600 SP but a large user base, seemingly from the SteemCoinPal/SCT community. @proxy.token reaches around 2/3 of the vote value from @pumpkin. Number three is @blocktrades contributing with again mostly own stake and roughly a factor two smaller than @pumpkin.
Since especially the big account can have a significant impact in the witness ranks, I've broken down the total witness vests into the top 10 (and witness-voting) accounts and combined all others to a common bin. Here are the results for the top 40 accounts.
The contribution of @pumpkin in orange and @blocktrades in green can clearly be seen. There are only 4 accounts in the top 20 that have no vote from @pumpkin. What's remarkable: @pumpkin and @blocktrades have no common votes! I wonder if this is coincidence, of if they both try to balance the situation in the top spots?
@pumpkin contributes around 18 GV and @blocktrades roughly 9.7GV. The difference between place 1 and 20 is around 14 GV. Losing a @pumpkin vote in the top-20 would move the account clearly out of the top 20. And the same the other way around: A witness ranked mid-30 could be lifted into the top-20 with a pumpkin vote. So there is indeed quite some influence possible with such large stake.
How would reducing the maximum number of witness votes change this situation?
With 30 witness votes and witnesses ranked 1-20 earning the highest rewards there is quite some control possible with a large stake. @jondoe's proposal is to reduce the maximum number of witness votes to 10 or 5 to reduce the influence of a single large stake.
I have simulated how the witness ranks and the VESTs distribution would look like with only up to 10 or 5 witness votes per account. The results have to be interpreted carefully, though. I have calculated the VESTs distribution as if every account only had their first 10 or 5 witness votes in place. This is a kind of random assumption, since I cannot know which votes all individual accounts would keep if they had to reduce the number from 30 to 10 or 5. Using the first 10 or 5 is an easy choice for a test run here, but at the same time also the best I can do in this regard.
Here are the results for 10 witness votes:
And for a maximum of 5 witness votes:
Both distributions are significantly steeper than the 30 witness votes case. In both cases it can be possible to stay in the top-20 also when losing a pumpkin vote. On the other hand, getting a pumpkin vote gives a top-20 rank almost for granted.
- 30 witness votes to select the top-20 spots provides a strong influence for a single large stake account. The majority of top-20 witnesses have a @pumpkin vote. Losing it means losing a top 20 spot.
- A new witness account with around 2/3 of the pumpkin vote value has formed with @proxy.token. This account has only little own stake but a strong community for a proxy role. They currently vote only for their own witness. If someone knows more about this project, please leave a comment below!
- blocktrades and pumpkin have no common witness votes
- Reducing the maximum number of witness votes would reduce the influence of a single large-stake account. The distribution of vote vests would be steeper than with 30 votes. In the case of 10 or 5 witness votes, it would be possible to maintain a top-20 position also without a pumpkin vote, but a pumpkin vote would lift almost any witness into the top-20.
- If Steemit would use their stake to vote for witnesses, they could control all ranks in any case, but I see this as rather unlikely...
There is clearly a strong influence from few high-stakers possible. However, I'm still a bit undecided if a reduction in the maximum number of witness votes solves a real problem. Please leave your thoughts in the comments!
Tools and scripts
A snapshot of all account states on the blockchain was captured with python and Beem on July 28th 2019. The data was processed with python and plotted with matplotlib. All scripts to produce the above tables and graphs are in my GitHub.