One of the positive results of the recent Steem hard fork is an increase in discussion about and scrutiny of Steem’s witnesses. Responsibility and accountability have been the popular topics, but there also appears to be a more attention being paid to witness voting and the manner in which it can be improved. A particular point of interest is vote decay and I’d like to add the number of witness votes to the discussion and specifically for the purpose of this post.
The following ideas should be carefully considered and feedback is appreciated.
Witness Vote Decay
There seems to be a growing consensus for some type of vote decay on witness voting. There are many interested parties and plenty of discussions have taken place, but how such decay would occur hasn’t received as much widespread support. Let’s try to change that with what I believe are some common sense solutions.
But first – I’d like to briefly mention why I think vote decay is necessary. For me, it’s pretty simple: Our witnesses ought to be representative of the active invested voters.
While many people agree that these active voters should have more say in how the network is run, there is less agreement on what constitutes an “active” voter. The primary concern is whether or not inactive users/voters can adequately ensure network stability and accountability via witness votes. On that front, it’s obvious to me that truly inactive users simply cannot accomplish this.
There are many reasons why an account can become inactive and there can be legitimate arguments for casting votes from a specific inactive account and leaving them in place for an extended period of time. But to help ensure that votes are being cast by active users and to help ensure that witnesses are being routinely scrutinized/vetted and voted on accordingly, requiring “stale” votes to be recast periodically could be a beneficial protocol for the Steem blockchain.
Again – we don’t know why the voting accounts are inactive or if the users controlling them are in fact inactive on the chain, but we do know that requiring a periodic vote will mitigate against truly inactive and/or uninterested voters. It can also help mitigate against entrenched witnesses that may have veered from their witness responsibilities and their stated intentions/goals.
So the question regarding how to protect ourselves from these issues is mostly a matter of defining “active” and “periodic.”
As a proof-of-stake system, Steem’s witness voting operates similarly to a corporation or security in that voting privileges are extended to stakeholders or shareholders on a “per-share” basis. In the corporate/investment world, voting for a corporate board of directors usually takes place annually. Witnesses for the Steem blockchain essentially act as a decentralized “board of directors” for the chain. Every holder of Steem Power on this chain has a number of votes to cast for their favorite witnesses.
The main difference between voting on a corporate board of directors and voting on Steem witnesses is that our Steem witness votes can be cast once and then permanently remain in place until the voting account actively removes the vote.
There has been discussion about how often votes should decay, if we were to adopt this kind of protocol. In my opinion, one year would be an adequate period of time, so this is my proposed plan for vote decay:
1. A vote will begin to decay 52 weeks after being cast.
2. Decay will occur over a 13-week period (the same weekly influence reduction and time-frame as a full SP power-down cycle).
That’s it.
After 65 weeks (52 + 13) without being recast, the stale vote would completely decay to zero vests of influence from the voting account. This keeps the voting somewhat current without placing any unfair burden on voters. It also keeps the time frames familiar for users and consistent with other current blockchain protocols.
This also does not represent any systemic risk to the blockchain by resetting all witness votes at a specific date or time. Decay is based on the dates and times that each individual user casts their votes, which are constantly occurring and changing. However, in that regard, this could introduce some computational burden, so that will need to be further discussed – such as whether or not decay can be stateless.
If you have anything to add or critique about this proposal, please share your thoughts in the comments.
Number of Witness Votes
This is a topic that has been on my mind for a while and I believe it needs some attention. The number of Steem witness votes that we are allotted, the number of top-earning witnesses, and the number of votes needed for hard fork adoption don’t appear to be adequate for addressing concerns of collusion and potential threats to network security.
Under the current system, there are 20/21 top witnesses that earn a relatively large sum of rewards for maintaining and managing their witness nodes. Of these witnesses, 17 are needed for updating the Steem blockchain to a new version via a hard fork. Each Steem account can cast up to 30 votes for witnesses.
The main objection that I have to this is the fact that any group of colluding stakeholders with a large enough stake can “capture” the entire number of top witnesses, exploit the network in various ways, and control the ability to change blockchain protocols. This concern has been expressed in the past by other users when specifically discussing Steemit, Inc.’s stake in the blockchain and the stake of their employee and partner/affiliate accounts. This criticism is one of the reasons why Steemit, Inc. no longer votes on witnesses.
The problem isn’t that they had voted in the past and essentially “stacked” the top witnesses, but it’s the fact that this could be accomplished in the first place.
Currently, one vote from the @steemit account could put any witness at the very top of the list. If they used all of their votes, they could stack the entire top-30 with their own nodes. Even if they never used their influence from that one account (there are many other accounts associated with Steemit, Inc.), there are a handful of other witness voters that can greatly influence witness positions. Here are just some of the top voters, which could – collectively/collusively – put any witness into the top-28 as of the time of this post being published.
Voter | Mvests Controlled |
---|---|
pumpkin | 15,806 |
blocktrades | 9676 |
clayop | 7151 |
haejin | 3125 |
smooth | 2838 |
minority.report | 2684 |
thejohalfiles | 2230 |
TOTAL | 43,510 |
The @steemit account alone currently controls over 90,000 Mvests. The number one witness has ~76,000 Mvests of support.
This is not to say that any of these accounts would engage in any collusion in order to attack or exploit the network, but only that it could be possible with our current protocols. Our protocols must offer enough robust security measures to protect against possible exploits and attacks that could occur both now and in the future. We may be able to protect the chain at the moment, with the current user base and stakeholders, but is that enough to mitigate possible disaster going forward?
Even if harmful exploits or attacks aren’t a major concern (right now), there is still the ability to collude simply for the purpose of capturing a majority share of witness rewards. Reducing the ability to exploit the network in this case benefits non-colluding witnesses and helps to distribute rewards to a larger number of interested parties, which in turn helps with decentralization. So in actuality, it can still further mitigate potential security risks.
With this in mind, here are a few possible options that I propose:
1. Reduce the number of allotted votes per account to less than the required number of witnesses for hard fork consensus, which would be less than 17. If consensus is 17, then allotted witness votes should be 16 or less.
2. Increase the number of consensus witnesses to more than the number of allotted votes per account, which would be greater than 30. If allotted witness votes is 30, then consensus should be 31 or more.
3. Increase the number of consensus witnesses and reduce the number of allotted votes per account to one less than the required number of witnesses for hard fork consensus. If there are 30/31 top witnesses, then 25 would be needed for consensus, which would give 24 or less witness votes to each account.
Our current system is comprised of 20 top witnesses with one rotating witness from the pool of remaining witnesses. Required consensus is 17 witnesses.
Again – if you have any questions, concerns, or critiques about this specific topic or any of the options proposed above, please share them here.
tl;dr
Witness voting may need to undergo some changes in order to better improve and protect the Steem blockchain. I propose two sets of options in order to achieve this:
Witness vote decay based on a 52-week voting period followed by a 13-week decay period on “stale” votes.
Reducing the number of allotted witness votes per account to at least one less than is required for blockchain consensus.
Discussion is welcome.
Yes, I wrote on this recently too. I showed here what the witness tables would look like immediately if no votes were recast after all of them that were older than both 3 and 6 months were terminated. @reggaemuffin put forward a good idea about having all votes terminated for an account if none of them change during a certain time period. When combined with notifications being sent to the voter, there shouldn't be any huge problems and yet significant benefits.
I agree that reducing the number of votes available to each account is also a good idea, I think that each voter should not have enough to create a consensus, yes, so maybe 15 is a good number.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
hey @ats-witness I agree that vote decay is necessary, it has been implemented on EOS and it seems to keep the block producers "busy" for votes.
The only small issue that has been encountered is with the "proxy votes", as they tend to have more decay because people who proxy their votes often don't want to have to deal with "politics", however the system makes them renew their proxy votes to avoid the decay.
It may be a good option to not have decay on people who proxy their votes, but the decay could be applied to the proxy that casts the votes.
Thanks for brining forward this debate, re-steemed for more exposure.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
What a great idea for both blockchains! =) Proxy decay will kill completely the bots trying to grab votes via proxy. People voting should be People!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Yes, I would agree with that. Proxy votes can also be used by the same person with two or more accounts. Some people delegate and proxy in order to reduce security risks with their staked accounts.
So as long as the proxied account is active, the concept should work.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I would support witness vote decay. I also really like that you wouldn't just have support removed all at once, but that it would begin diminishing after a set period of time. Because things change very quickly in the crypto world, I would think a shorter time period would be helpful. A year is a long time to be gone. I haven't even been on the platform for a year! We also don't want witnesses to only be looking for votes, so I think six months would be a good in between starting point.
I didn't even realize that 17 witness consensus was all that was needed. This definitely needs to get fixed. Like you said, not that any people would, but someone could. I support having a lot of witness votes to give, because it gives more potential to help the smaller witnesses. We also don't want to have too high of a number of witnesses needed to make a change, or critical updates could be delayed. I think that your "Option C" could be a good solution to that.
Thanks for creating this space to discuss the ideas!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
It would be complicated..
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
You know this could never be pulled off correctly....
If Steemit Inc attempts to implement this, all witness votes will drop to zero by some sort of oversite of not understanding how their software will function and they will have to wait for the system to stabilize. You know, like what happened with voting power and RC.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
This is the first I have heard of this, let's not go down a path like this. We are just barely recovering from the HF-20 bomb.............
I am upping the ante on SP, let's encourage others to join not discourage them.... :(
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
messing around with the software that controls witness votes could be really bad if it goes wrong. If it accidentally skews the consensus, a bad witness or witnesses could cause serious damage. After HF20, I'm concerned that Steemit Inc is not capable of writing the software without serious bugs.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations! Your post has been selected as a daily Steemit truffle! It is listed on rank 5 of all contributions awarded today. You can find the TOP DAILY TRUFFLE PICKS HERE.
I upvoted your contribution because to my mind your post is at least 37 SBD worth and should receive 290 votes. It's now up to the lovely Steemit community to make this come true.
I am
TrufflePig
, an Artificial Intelligence Bot that helps minnows and content curators using Machine Learning. If you are curious how I select content, you can find an explanation here!Have a nice day and sincerely yours,
TrufflePig
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
thank you for the tl;dr... however. what does 'decay' mean?
and do you mean that one 'witness' has more than one witness account?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Drop off, lessen over time, become less valuable over a certain period.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I agree with both your proposals; I would emphasize reducing the number of available votes for witnesses even further and not phrase that carefully; the less there are, the larger the collusion would have to be to control all witnesses. Ten or maybe even five available votes would be good.
Having said that: another interesting thing about this posting is the lack of comments from other witnesses, and the lack of discussion. I assume your proposals are not in the interest of a certain well-established clique, and will gain no traction because of that. That is my prediction; let's see what happens.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I think your prediction has been quite accurate so far.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Bueller, Bueller?
That's how I see most of these genial posts when it comes from feedback from the witnesses or development.
Posted using Partiko Android
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
When defining 'inactive' it may be a good idea to decide how long a witness can be inactive before their supporting votes are released.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Witness Vote Decay, I am for this!
Regarding the lack of distribution... It's a damn pain point that haunts us in many ways.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
So ... you're saying it doesn't already happen? ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Vote Decay is a constantly raised issue as I see it, and I think it is very important this sort of community issue is at the very least fully discussed.
I can honestly see both sides of the Witness Vote Decay, looking at the top 100 list visible here https://steemit.com/~witnesses that fact anyone can look down this list and see Witnesses that have not been active for long periods in time - in one case over a year - can not reflect well when viewed from the outside - as a Blockchain surely Steem strives to excel at what it is doing, active Witnesses to me show the support and stability the blockchain has from the community - long inactive Witnesses negate from this and the fact they are clearly visible on the Steemit.com front end feels to me a negative. This is especially true because the presence of these inactive accounts makes it more difficult for the casual viewer to see the active Witnesses we have in the range 101 to 150+ , Steem as a blockchain has an incredible amount of support from people around the world and I think this is often ignored as a massive selling point for the platform.
BUT - I also agree with arguments about the biggest investors into Steem, who have invested but do not make use of front ends for security reasons primarily. When we look at investments of hundreds of thousands of dollars - where investors will only use a back end like Vessel for security, should they be forced to change Witness votes regularly when every log in is a potential security risk.
The DPOS system gives every StakeHolder the right to vote for Witnesses they choose, it is each users own Stake in Steem and they should be able to choose to vote (or not if they wish to abstain) for any Witness they choose - if they continue to vote for an inactive Witness that is still the decision of the Stakeholder on how they wish to direct their investment.
I do agree about reducing Witness Votes so no one voter can dictate a consensus group of Witnesses, it makes sense to me where @ura-soul says 15 Witness Votes would provide a good balance.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I think that asking an investor to cast votes once per year (or at least every 65 weeks) isn’t putting unnecessary burden on them. If they actually value their investment, it would make sense that they have at least this very minimal burden.
As stated in the post, it’s no different than real-world investors holding stock in a company and voting annually on a board of directors. If that’s what we’re pretending that crypto speculators are, then having similar standards shouldn’t be out of the question.
Investment often requires analyzing risks and even taking a somewhat active role in oversight of the company/investment. If we want a healthy investor/investment environment, then we ought to ensure that the “product” isn’t stale and that there’s at least a perceptible amount of oversight. Forever VotesTM don’t accomplish this.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Totally agree... and only now, while seeing how EOS works, makes it all clear how people react to efforts.
I agree with both points. Maybe I would even say to reduce in half the number of possible votes.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
This is something to definitely be looked at. When people in this case witnesses get too comfortable they lose contact with the people and what needs adressing.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hi @ats-david
I'm wondering what you would define as the witness voter being active, be it a proxy with stake, or the individual vote.
last_post, last_vote, or perhaps last_bandwidth_update?
I ran some stats on 180 day vote cancellation a few months ago, and the conclusion I made was that this didn't move the positions round much.
https://steemit.com/utopian-io/@abh12345/do-inactive-account-votes-for-witnesses-affect-the-witness-ranks
I'm thinking of doing a repeat for 365 days 'inactivity', and perhaps 100 days extra for the 13 week decay proposed by you.
I think a year is plenty of time to interact - vote/post/change a witness vote. Decay sounds fair but tricky to implement and I think just dropping the vote after a year is fair enough.
Whether it will make much difference to the ranks, I'll take a look....
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Vote decay seems to me to be a no brainer situation.
Let's have witness votes be something that needs to done by active Steemians.
I'll weigh in on your last issue, that is, the possibility that witness stacking could occur
I thing the option to reduce votes to 16 (or less) is preferable to making the number of required witnesses for a quorum to be larger than 30 (31 or more)
Consensus is already difficult, and making it raised to 31 will only add to more delays, longer times between major updates.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Yes, reducing the number of votes is my preferred option.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @ats-witness!
You raised your level and are now a Dolphin!
Do not miss the last post from @steemitboard:
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @ats-witness! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word
STOP
Do not miss the last post from @steemitboard:
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @ats-witness! You received a personal award!
Click here to view your Board of Honor
Do not miss the last post from @steemitboard:
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @ats-witness! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word
STOP
Do not miss the last post from @steemitboard:
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit