Enhancing Steem's 'Proof of Stake' Model With A Process For Expiry/Renewal Of Witness VotessteemCreated with Sketch.

in #utopian-io7 years ago (edited)

The witness voting process is of fundamental importance for the continued success of Steem and its successful evolution into the future. Witnesses provide the hardware to keep Steem running and need to have relevant knowledge to maintain stability and also to ensure Steem evolves in healthy directions in the future through their influence over which changes to the Steem architecture are accepted or rejected.

Principles of holistic balance can be applied to social software systems to optimise their performance and productivity - plus increase user satisfaction. Implementation of these principles may possibly increase the value of Steem too. Here I suggest a way to increase balance in the voting process and thus to Steem as a whole.

vote

Proof of Stake


Witnesses are intended to be chosen based on 'Proof of Stake', which is the equivalent of Bitcoin's 'Proof of Work' model - whereby payouts are given to Witnesses based on them receiving community support in the form of votes (as opposed to payouts being given to miners of Bitcoin based on proof of them having 'mined' the Bitcoin).

The community is intended to vote for witnesses on the basis of evidence being provided that witnesses have a 'stake' in the success of Steem. 'Proof of Stake' could be financial, in that the witnesses might have invested large amounts of money in Steem, it could be more social - as evidenced by a strong community presence - or it could be through the provision of supporting apps and services that enhance the value of Steem and the value of Steem Services in general.

Since 'money' is a token used in exchange for time and energy (work) it is fair to say that the concepts that tie together all these forms of 'stake' in the community are 'value' and 'energy' - so the proof of the 'stake' is that in some way a demonstration is being made that value and/or energy are being given to the community by the witnesses.

Benefits & Obligations


The top witnesses receive significant percentages of the entire Steem payout pool and so it follows that it is right that the community sees some benefit in return for that. Part of the purpose of the community voting for witnesses is to ensure that the community is happy with the services provided by the witnesses. While witnesses have a responsibility to the community to perform their witness duties well, so too does the community have a responsibility to itself to ensure that care is taken when voting for witnesses.

Problems with 'Stale Votes'


The Witness voting system is weighted so that those voters with the most Steem Power have the most capacity to influence the vote results. It is possible for people to invest large amounts of money into Steem Power, vote for a witness and then never again interact with the community. This is a problem in that while the witnesses who receive the votes may have been the best option at the time the vote was made, over time they may neglect their position and yet maintain their top position in the ranks anyway. If the heavy weight voter never returns to Steemit (perhaps even because they are deceased) - then their vote weight will continue to effect the future of Steemit, even in the face of consistently poor decisions being made by the witnesses they voted for.

Not only does this scenario lower the value of Steem and the potential success of Steem services, but it makes the barrier to entry for new witnesses unacceptably high and many will think they are wasting their time by becoming witnesses and gaining support through the voting mechanism.

In short, just as witnesses are intended to be chosen based on 'proof of stake' and as they will be deactivated by the Steem systems if their witness servers fail to process blocks for a specific time period; it also follows that the 'proof of stake' of each voter needs to be tested in some way and the votes removed if the test for the 'proof of stake' of the voter is failed.

Time Limits for Witness Votes


My suggestion to improve all issues related to these (and similar) scenarios is to give a time limit to witness votes, so that they will expire after a set period (perhaps 60 days). Voters can be subtly reminded that they need to renew their vote for their chosen witnesses through the Steemit UI and via the Steem Notification channels.

This will have the effect of ensuring that the witness 'marketplace' remains competitive and agile in a way that responds to the needs of the fast changing world of blockchain technology, the internet and Steem itself. The new notifications will inspire a greater interest in the roll of witnesses and the increased need to keep voter's interests will ensure a higher level of creativity and input from witnesses in general.

System Balance


In political terms, having a vote 'for life' is not considered a sign of healthy democracy and is more like a 'peerage' which continues almost regardless of the performance of the one who receives it. By ensuring witnesses must continue to grab the attention of voters, we should see voters getting more value for the money paid to witnesses and a healthier eco-system overall.

I have previously written in more depth about the witness process in my witness application, which is here.


Open Source Contribution posted via https://utopian.io

Sort:  

@ura-soul this is the first post of yours I have seen and it is very well written, organized and thought-out which is somewhat of a rarity here on Steem at the moment.

Additionally I think your idea is a great one and one that has a lot of importance for the community. I also agree with @lukestokes though that people will just implement auto-renew services so they don't have to manually renew witness votes which would defeat the purpose of the renewal system entirely.

I don't know what the right answer is, but I agree it is a problem and one that I would like to see addressed even though I am not a witness myself (though I have considered it!).

I have since read some of your other posts and have just cast my witness vote for you which bumped you up one spot :-) Please keep up the good work!

Greetings! Thanks for your kind words - I am some times hired to create technical documents for software projects and to design/build them, so I have a solid grounding in these kinds of tasks.

I think the idea of causing all witness votes to be reset for accounts that are inactive might be the more workable solution, but it all depends on the ability to prevent vote bots handling it automatically. At least the suggested changes will stop a decent percentage of the stale votes from persisting in the system as long as the detection rules for what counts as an inactive account are strict enough that vote bots won't be able to circumvent them.

Thanks a lot too for your witness vote, it's possible that jumping up that one place has pushed me over the breakeven point where the rewards from witnessing will roughly equal the rental fee I am paying for the server - woop! :)

I have followed you here to read more of your posts too.

I worry about dead people with locked accounts holding onto witness votes and whales could determine position... I think if you don't touch any witness vote for 365 days they should fall off. I don't think forcing it more frequently is a good plan or fair. It's their stake weight. If they want to vote once per year and not anymore voters should be able.

I picked the time limit of 2 months based on an observation that Steemit itself is not much older than 1 year and we already have issues of this kind. 1 year is a long time in a site like this, but I appreciate that 2 months might be annoying for some.

Having the votes expire wouldn't be a bad thing. For one, it would constantly require all witnesses to educate the general userbase about why it's important to vote for witnesses and how to do so. Also, it would keep all witnesses at their best and in campaign mode. A witness who's in the top 50 let's say wouldn't be able to get lazy and start missing blocks, not monitoring their server, etc. If they did that they wouldn't get a vote renewal. It would also propel building on the blockchain to some insane level, which would be great for its expansion.

Yes, democracy requires engagement and without it, the whole concept of it falls apart. I am not seeing a downside to the idea of vote renewal currently. :)

I disagree on applying democracy here. This is a blockchain, not a country. What I see it as is serving our internal and external clients in the best manner possible. Our internal clients are our fellow witnesses and blockchain devs, our external are the general userbase of the Steem blockchain. We have to universally focus on delivering excellence on all levels.

I am not an advocate for democracy and have written extensively on why it fails - which is beyond the scope of this thread for me - however, the idea of democracy is that it is intended to 'serve our internal and external clients in the best manner possible' - where those clients in a nation are citizens and 'foreign citizens'. I use the word 'democracy' in the context of witnesses since witnesses are directly elected from and by the community and they themselves then effectively 'vote' on which policies will be adopted via forks of the system - which is quite like the way MPs vote in a parliament for policy changes.

Understood. I mentioned my disagreement because from years of experience running online communities of all sorts, the moment folks start thinking of a project as 'democratic', all goes to shit. It's one of those perception things. Either way, not really part of the topic at hand.

To make my comment here relevant, I'll add what I just said in chat: Vote expiry will remove the dead witnesses from the witness lists, positively contributing to the morale of lower-ranked witnesses. While the number rank and the presence of the disabled ones is irrelevant, cleaning that up will generally help morale.

Ok, I see - yes, perceptions can cause many problems!
Thanks for your comment here - yes, clearing out the inactive witnesses from the list will be one of the knock-on benefits too.

Hi all, your discussions here are so relevant and I noted all points discussed. I couldn't but agree with all of the above comments, it is important to address these loopholes. Thanks guys!

I love this idea! Removing "Stale" votes through "re-votes" is brilliant.

I didn't read the full context for this idea, but to make community members' lives slightly easier, I have the following suggestion:

When this process is rolled out, each account should have a reference guide regarding which witnesses they had voted for previously, and the last date when that witness was active on the community. Also, if there is a way to make the GUI provide users with the ability to use a "check box" method to "confirm all selected votes", that would be helpful.

I can mock-up a simple GUI interface if that sounds interesting to you. I'm not sure about how simple the coding-side would be, but the look and feel would be straightforward.

Also, similar to a standard password update term, I'd say starting at 90 days (13 weeks / 3 months) is probably OK, although 180 days (26 weeks / 6 months) would probably be a more widely accepted term.

Yes, those are both good ideas, thanks. I am intending to post another idea to utopian.io regarding the UI of the voting page, since it is too simplistic at present and confuses new users too. If you want to collaborate on that, I am open to it.

I will try to remember to share my thoughts on what a useful voting page might look like .. depending on how much time I have (and the timeline in which you'd want to see it), it may be a very simplistic free-hand drawing, or something more "pretty" and digitally designed :)

I don't think that I can respectfully dedicate enough time to collaborate with you in the full sense of the word, but I would be happy to provide some input that you're welcome to use or ignore, free of charge :-p

Sure ok, no problem - thanks. I will come back to this tomorrow and write up an issue for Github, if you have anything for it tomorrow, then I will look to include it.

There can be a checkbox to just allow the user to re-new his/her votes for the people they voted for previously, although the downside to that is that some users wont review who they voted for previously and could end up renewing their vote for an inactive witness - I admit we can all be lazy sometimes.

Yeah, I agree there should be a "renew all" vote button, but with some additional information associated with each witness (such as their last activity date), to give those "lazy" users a quick reference about when their voted witnesses last did something on Steemit/for the community.

That way the responsibility is still on the voter, but they can be slightly more informed when they're too busy to take a deeper look at what their voted-witnesses are actually doing for the community. The idea of the additional information is to discourage a "blind" renew vote, and to add some accountability to the voter, as well as the witness.

Hey @ura-soul I am @utopian-io. I have just super-voted you at 57% Power!

Suggestions https://utopian.io/rules

-Utopian has detected 2 bot votes. I am the only bot you should love!!

Achievements

-Good amount of information. Thank you!
-A very informative contribution. Good job!
-Votes on this contribution are going well. Nice!
-You are having more votes than average for this category. Nice!
-You are generating more rewards than average for this category. Super!
Up-vote this comment to grow my power and help Open Source contributions like this one.

That is a sensible idea. I think the vote expire time can be the same as the power down time - 13 weeks - or even longer. Every two months is a bit too often, but something like this does make sense to me regardless of the value for the actual time till expiry variable.

I'd say a year is reasonable.

Shall we vote on the time period? :)

LOL :P Yep, that is the most crucial part of the proposal :)

Every month or so I run a Witness Voting Engagement Report you may find interesting. To me, this sounds like a good idea on the surface, but I imagine people will just implement a "auto-revote" service quite quickly to put us back where we are now. Ultimately, people need to care. There's no fool-proof way to force people to care. If there was, we wouldn't want to use it anyway because "forcing" someone to do something isn't a great plan.

My suggestion here is not about forcing anyone to do anything - it's just a way of solving weak points in the process. I agree that people need to care and that in itself is something that starts in their own hearts and minds. I notice that even when people say they are going to vote for me as a witness, they often don't until I remind them. Anything that solves 'memory'/'distraction' and engagement issues is a good thing for the community.

I know your intention isn't to force anyone, but the core of the problem is people, not the stale votes themselves, IMO. And people can't easily be changed. That said, a simple pop-up explaining witness voting and/or periodic reminders to update their votes may go a long way.

Or, maybe, if an account itself is completely stale (no claiming of rewards, etc) then their witness votes may go stale also after a period of time. Maybe that could help.

Having votes go stale due to account inactivity is another approach, yes - it solves a few of the problems too. I think the only aspect that that approach wouldn't change much is that of encouraging people to keep up with the witnesses they are voting for and changing their votes when appropriate.

Yeah, to me, that last part should be handled by community discussions, talking about voting more often in their blog posts, etc. That's why I put out my report, to remind people about witness voting.

Maybe even a bit of shaming in comments once in a while.

"Hey, I noticed you're still voting for witness X, but they have been disabled for a couple months. Might be time to update your witness vote or set me as a proxy! :)"

Stuff like that.

My idea of having notifications added to the user's feed that informs them of expired votes is intended to do that automatically - which saves time of community members having to remind others and also might reduce tensions between people who are annoyed at being reminded by others.. 'Shaming' isn't really part of a healthy, balanced community! :)

The expired vote concept deprives them of their intentions though. That might annoy them even more to have to continually re-assert their voting intentions. Maybe I'm just not understanding it.

Yes, I agree, in an ideal world there'd be no shaming as we'd all agree on everything when it comes to good and bad behavior, but I do think shaming has a place, even in healthy communities. It's how we learn when we did something wrong, thus keeping things healthy. Instead of top down "steemit said so", I prefer community norms which ebb and flow and adjust to circumstances. Maybe "shaming" isn't the right word to describe what I mean, though.

Vote expiry doesn't deprive anyone of their intention, unless their intention is to make a vote that effects a large number of people and then not reconsider the changing needs of the community. I'd say that such an intention is anti-social.

I think I would just use the word 'motivate' instead of 'shame' - since shaming suggests a kind of devaluation, whereas motivation is a gentle nudge.. It can be the difference between causing an argument and getting things done.

maybe, it just gives a second thought. like 2fa. or verification email.

I have been thinking about this idea for a while... since there are so many large stake votes sitting.... just tied up holding newer witnesses back...

however, I'm wondering... how long before expires? 1 year? 2 years?

maybe like every so often elected officials need to run for office again, don't let votes sit forever.

If the voting system is unobtrusive and easy to use (which it isn't really currently) - then the voting can be more frequent than 1 year I think. But ultimately, the time period can be adjusted easily. I suggested a couple of months, but I don't really know what would work best for everyone.

or allow witnesses to vote unanimously on removing votes from inactive witnesses. We all see who the inactive witnesses are afterall.

I support this idea. I do agree we would need a system to notify users if a vote is expiring, so that they could take action or move on. Would bring a fair competition after all as it would deal removing votes from inactive accounts.

Yes I agree on the temporary time a vote is active. I wrote about it last week

Coin Marketplace

STEEM 0.19
TRX 0.13
JST 0.029
BTC 60723.46
ETH 3353.68
USDT 1.00
SBD 2.51