New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Expiring witness votes #953

Open
williambanks opened this Issue Mar 20, 2017 · 16 comments

Comments

Projects
None yet
@williambanks

williambanks commented Mar 20, 2017

Have you seen this?
https://steemd.com/witnesses

We have top 100 witnesses including @dantheman running on outdated versions, and some witnesses who aren't even functional and yet are still in the top 50.

This is only because a witness vote, once cast is forever.

I propose that any witness vote for a witness which does not support at least the current major version by consensus, be automatically cancelled. This will remove any incentive for running non-consensus nodes and allow easier upgrades in the future as people who have set a vote and forgotten about it, no longer have an adverse impact on the future direction of steem.

Furthermore I propose that all votes for witnesses that are more than 2 minor versions lower than the current release major.minor and votes for all witnesses on witnesses with misses greater than 100 are automatically cancelled as well.

Being a witness is a privilege not a right and each witness while free to vote their conscience by not always upgrading to the latest and greatest right away, should eventually get with the program or stop witnessing.

@TimCliff

This comment has been minimized.

Show comment
Hide comment
@TimCliff

TimCliff Mar 21, 2017

Contributor

The intent behind this makes sense.

The 'major version' logic would need to handle HFs though. Witnesses should be able to vote 'no' by not upgrading, and then switch to the new version if it ends up getting enough votes to pass, without worrying about losing all their votes the moment the HF takes place.

I disagree on the 'minor version' part. A lot of times the minor version updates do not affect the witness logic, so it may not be necessary for witnesses to pick them up. Witnesses should be able to use their own judgement as to whether or not they want to pick up a minor version. Users are free to remove their votes for this reason if they feel it is important, but I don't think having it forced by the blockchain is a good idea.

Contributor

TimCliff commented Mar 21, 2017

The intent behind this makes sense.

The 'major version' logic would need to handle HFs though. Witnesses should be able to vote 'no' by not upgrading, and then switch to the new version if it ends up getting enough votes to pass, without worrying about losing all their votes the moment the HF takes place.

I disagree on the 'minor version' part. A lot of times the minor version updates do not affect the witness logic, so it may not be necessary for witnesses to pick them up. Witnesses should be able to use their own judgement as to whether or not they want to pick up a minor version. Users are free to remove their votes for this reason if they feel it is important, but I don't think having it forced by the blockchain is a good idea.

@TimCliff

This comment has been minimized.

Show comment
Hide comment
@TimCliff

TimCliff Mar 21, 2017

Contributor

also, it should be noted that if a witness is not on the current version - every block they get assigned will be a missed block. After a certain number of missed blocks, they are no longer assigned new blocks. So from a network perspective, this is not a huge deal. I agree having them show up in the steemd top 100 list is still not good though. Also, if they are in the top 50 - it prevents other witnesses from showing up on the steemit.com witnesses page.

Contributor

TimCliff commented Mar 21, 2017

also, it should be noted that if a witness is not on the current version - every block they get assigned will be a missed block. After a certain number of missed blocks, they are no longer assigned new blocks. So from a network perspective, this is not a huge deal. I agree having them show up in the steemd top 100 list is still not good though. Also, if they are in the top 50 - it prevents other witnesses from showing up on the steemit.com witnesses page.

@Gandalf-the-Grey

This comment has been minimized.

Show comment
Hide comment
@Gandalf-the-Grey

Gandalf-the-Grey Mar 21, 2017

Contributor

We have top 100 witnesses including @dantheman running on outdated versions, and some witnesses who aren't even functional and yet are still in the top 50.

It is a way how it is being displayed. Not a big deal. Effectively those witnesses are disabled so not taking a part in runner-up witness scheduling, not affecting network reliability, etc.
For me it is more a feature than a bug.
Backup witnesses can step back for significant amount of time, still retaining votes of stakeholders who trust them and get back when needed / desired.
Not to mention various forking / development / testing scenarios.
Besides approving / un-approving witnesses should be a conscious action of stakeholders.

TL;DR: already works as expected (automatically shutting down non-consensus witness nodes)

Contributor

Gandalf-the-Grey commented Mar 21, 2017

We have top 100 witnesses including @dantheman running on outdated versions, and some witnesses who aren't even functional and yet are still in the top 50.

It is a way how it is being displayed. Not a big deal. Effectively those witnesses are disabled so not taking a part in runner-up witness scheduling, not affecting network reliability, etc.
For me it is more a feature than a bug.
Backup witnesses can step back for significant amount of time, still retaining votes of stakeholders who trust them and get back when needed / desired.
Not to mention various forking / development / testing scenarios.
Besides approving / un-approving witnesses should be a conscious action of stakeholders.

TL;DR: already works as expected (automatically shutting down non-consensus witness nodes)

@grctest

This comment has been minimized.

Show comment
Hide comment
@grctest

grctest Jul 6, 2017

steemitblog posted on steemit about "Proposed changes to steemit's economy" several months ago which included the following:

"All votes for witnesses would expire after 3 months, this would remove the incumbent advantage and require people to continuously evaluate and vote for witnesses."

Have expiring witness votes been implemented?

A grim reality is that users eventually die, if their votes don't eventually expire they'll be permanent.

grctest commented Jul 6, 2017

steemitblog posted on steemit about "Proposed changes to steemit's economy" several months ago which included the following:

"All votes for witnesses would expire after 3 months, this would remove the incumbent advantage and require people to continuously evaluate and vote for witnesses."

Have expiring witness votes been implemented?

A grim reality is that users eventually die, if their votes don't eventually expire they'll be permanent.

@mvandeberg

This comment has been minimized.

Show comment
Hide comment
@mvandeberg

mvandeberg Jul 6, 2017

Contributor

It was not implemented and we do not have any immediate plans to add this, but it is certainly not off the table. Thank you for your input.

Contributor

mvandeberg commented Jul 6, 2017

It was not implemented and we do not have any immediate plans to add this, but it is certainly not off the table. Thank you for your input.

@mvandeberg mvandeberg added backlog HARDFORK and removed backlog labels Jul 6, 2017

@grctest

This comment has been minimized.

Show comment
Hide comment
@grctest

grctest Jul 6, 2017

Semi-relevant (Bitshares, not steem) document on this topic that I wrote up today: https://github.com/grctest/bsips/blob/master/bsip-0022.md

grctest commented Jul 6, 2017

Semi-relevant (Bitshares, not steem) document on this topic that I wrote up today: https://github.com/grctest/bsips/blob/master/bsip-0022.md

@4Ykw

This comment has been minimized.

Show comment
Hide comment
@4Ykw

4Ykw Jul 6, 2017

The implementation of an API to deal with notifications about this would also be nice.... If I am blogging I would love to know if someone's witness I voted in, is about to expire. And if so, I can quickly re-evaluate his/hers current situation and decide on my vote.

4Ykw commented Jul 6, 2017

The implementation of an API to deal with notifications about this would also be nice.... If I am blogging I would love to know if someone's witness I voted in, is about to expire. And if so, I can quickly re-evaluate his/hers current situation and decide on my vote.

@X40L1N

This comment has been minimized.

Show comment
Hide comment
@X40L1N

X40L1N Jun 15, 2018

I believe in light of there being so many inactive and new witnesses, this needs to be revisited and considered much more as a means to help keep people engaged on the platform. I feel those without any true interest - regardless of vests currently held - should carry no weight in voting for people that are taking an active part in the progress of the blockchain and its children. I feel a 60 day decaying vote would be more than sufficient and would even agree with a 90 day proposal. This would encompass 4 things:

  1. From the day of the initial vote, any voter's vote will then start to decay (upon acceptance of this, all votes would start at 60 days)
  2. Any inactive user should be cleared of their votes
  • inactive being defined as a user that has not posted, commented, made any transactions for 60 days, or contributed to any developmental changes on the chain
  1. A reminder be sent to any voter 15 days prior to full decay to change or agree to continue voting for their current choice(s)
  • this could be done through wallet messages and other UIs that use notification systems and/or programs that could easily integrate them like Steemian.info, Steemconnect or even Steemauto
  1. Proxied votes would remain with proxied voter as long as the stakeholder is active as well. (this would also encourage people to proxy more people they trust as they would then not have to worry about the decay)

-Witty

X40L1N commented Jun 15, 2018

I believe in light of there being so many inactive and new witnesses, this needs to be revisited and considered much more as a means to help keep people engaged on the platform. I feel those without any true interest - regardless of vests currently held - should carry no weight in voting for people that are taking an active part in the progress of the blockchain and its children. I feel a 60 day decaying vote would be more than sufficient and would even agree with a 90 day proposal. This would encompass 4 things:

  1. From the day of the initial vote, any voter's vote will then start to decay (upon acceptance of this, all votes would start at 60 days)
  2. Any inactive user should be cleared of their votes
  • inactive being defined as a user that has not posted, commented, made any transactions for 60 days, or contributed to any developmental changes on the chain
  1. A reminder be sent to any voter 15 days prior to full decay to change or agree to continue voting for their current choice(s)
  • this could be done through wallet messages and other UIs that use notification systems and/or programs that could easily integrate them like Steemian.info, Steemconnect or even Steemauto
  1. Proxied votes would remain with proxied voter as long as the stakeholder is active as well. (this would also encourage people to proxy more people they trust as they would then not have to worry about the decay)

-Witty

@Gandalf-the-Grey

This comment has been minimized.

Show comment
Hide comment
@Gandalf-the-Grey

Gandalf-the-Grey Jun 15, 2018

Contributor

That's not an arcade game, stakeholders don't want to babysit their investment, that's why they are delegating their votes to witnesses and are hoping for stability.
Big stakeholder sloppiness or just long vacation might cause serious risk for the platform.
I would consider some form of it, given that the period would be more like 2 years and after having reset account and other related features in place.

Contributor

Gandalf-the-Grey commented Jun 15, 2018

That's not an arcade game, stakeholders don't want to babysit their investment, that's why they are delegating their votes to witnesses and are hoping for stability.
Big stakeholder sloppiness or just long vacation might cause serious risk for the platform.
I would consider some form of it, given that the period would be more like 2 years and after having reset account and other related features in place.

@TimCliff

This comment has been minimized.

Show comment
Hide comment
@TimCliff

TimCliff Jun 15, 2018

Contributor

I see three different problems potentially trying to be solved here:

  1. The removal of votes from witnesses who have been inactive for a prolonged period of time.
  2. Dealing with votes from accounts where the voter themselves is no longer in control of their account with no way of changing the votes (death, lost keys, etc.).
  3. Requiring stakeholders to take a more active role in witness voting and review/update their votes at some defined frequency.

Regarding (3) and the decay of votes - I am of the view that we should not be trying to force stakeholders to vote a certain way. Requiring them to update their votes every 60-90 (or however many) days is doing just that. As @Gandalf-the-Grey said, it also introduces a security risk. Another case (probably not common, but also not impossible) is the idea that some large stakeholders may want to put their SP in cold storage and not allow any change of witness votes without taking them out of CS. This would put a new burden on those types of users.

I am open to alternative suggestions for solving (1) and (2) provided they do not compromise the security of the network.

Just throwing two proposals out there:
(1) A witness could have their votes removed if they have been inactive for a period of X days and N hardforks (for some large X, and N >= 1).
(2) A stakeholder's votes could be removed if they have not used their active/owner key in a period of N days (for some very large N).

Contributor

TimCliff commented Jun 15, 2018

I see three different problems potentially trying to be solved here:

  1. The removal of votes from witnesses who have been inactive for a prolonged period of time.
  2. Dealing with votes from accounts where the voter themselves is no longer in control of their account with no way of changing the votes (death, lost keys, etc.).
  3. Requiring stakeholders to take a more active role in witness voting and review/update their votes at some defined frequency.

Regarding (3) and the decay of votes - I am of the view that we should not be trying to force stakeholders to vote a certain way. Requiring them to update their votes every 60-90 (or however many) days is doing just that. As @Gandalf-the-Grey said, it also introduces a security risk. Another case (probably not common, but also not impossible) is the idea that some large stakeholders may want to put their SP in cold storage and not allow any change of witness votes without taking them out of CS. This would put a new burden on those types of users.

I am open to alternative suggestions for solving (1) and (2) provided they do not compromise the security of the network.

Just throwing two proposals out there:
(1) A witness could have their votes removed if they have been inactive for a period of X days and N hardforks (for some large X, and N >= 1).
(2) A stakeholder's votes could be removed if they have not used their active/owner key in a period of N days (for some very large N).

@X40L1N

This comment has been minimized.

Show comment
Hide comment
@X40L1N

X40L1N Jun 15, 2018

90 days was just a suggestion and it got your attention, just as attention should be paid to this.
Resolution for problems:

  1. If witness is not on current HF, beyond six months of active feed age and block, votes get removed for said witness
  2. I like your suggestion @TimCliff and would plug in 365 days.

Anyone that hasn't paid attention within a whole year, I wouldn't consider that an 'active' investment. They can still retain their stake and collect their just desserts, but if they have no desire to check in and see how their witnesses or stake is even doing, tells me they aren't interested in the progress of the blockchain. Every investment I have, I look at at least every six months and make adjustments if necessary. Even a financial advisor you hire is going to typically do it once a month. The fact that cryptocurrency is as volatile as any stock exchange (and much less widely known) would suggest mere ignorance by an investor to 'set it and forget it'. People don't just 'accidentally' put their money into a cryptocurrency. I have some 5 year and even a few longer term investments. None of which involve a blockchain (currently). Stability is great, I agree entirely. But I also feel the people guiding this platform and its descendants, should be the ones that are actually here.

X40L1N commented Jun 15, 2018

90 days was just a suggestion and it got your attention, just as attention should be paid to this.
Resolution for problems:

  1. If witness is not on current HF, beyond six months of active feed age and block, votes get removed for said witness
  2. I like your suggestion @TimCliff and would plug in 365 days.

Anyone that hasn't paid attention within a whole year, I wouldn't consider that an 'active' investment. They can still retain their stake and collect their just desserts, but if they have no desire to check in and see how their witnesses or stake is even doing, tells me they aren't interested in the progress of the blockchain. Every investment I have, I look at at least every six months and make adjustments if necessary. Even a financial advisor you hire is going to typically do it once a month. The fact that cryptocurrency is as volatile as any stock exchange (and much less widely known) would suggest mere ignorance by an investor to 'set it and forget it'. People don't just 'accidentally' put their money into a cryptocurrency. I have some 5 year and even a few longer term investments. None of which involve a blockchain (currently). Stability is great, I agree entirely. But I also feel the people guiding this platform and its descendants, should be the ones that are actually here.

@gryter

This comment has been minimized.

Show comment
Hide comment
@gryter

gryter Jun 15, 2018

This is an issue that the greater community is asking to be addressed no matter how one looks at it. In short, its about purging dead witnesses and dead accounts. My input in short:

  • We have a lot of accounts that were hacked and beyond recovery, lost passwords, recovery account switched, and diseased users. This is a fact I can attest to since I maintain the phishing list.
  • Vote decay and any other account influence features are essentially the blockchain determining that the account is dead or abandoned for one reason or another. 12 month change of status from live/dead and expiry of votes makes sense.
  • 'Activity' should be defined. Activity to me is any activity initiated and controlled by the account owner ie. power up, transfer, vote or otherwise transaction. So what we're doing in essence is adding a 'status' parameter to the account and going off that.
  • There was discussion before around enabling account recovery past the original 30 days. I agree that needs to be put in place ahead of vote decay. Account recovery (password roll back) should be extended to 12 months.
  • At the same time, wallet accounts or 'cold storage' with no otherwise activity are a potential issue but it is reasonable to have a 12 month period prior to status change if the 12 months can also be matched as a recovery timeframe.
  • Pursuing this issue would be more cost effective than giving in to community pressure to remove votes off dead witnesses.

Some issues:

  • A shorter time period won't work as due diligence is needed to prevent newly created backup witnesses who followed 'Steem in a Box' guides and have no idea how the blockchain works or how to run their servers from accidentally becoming a full-time witness.
  • Vote removal from active witnesses would disadvantage them without warning. (Vote removal from dead witnesses would be working as intended.)

gryter commented Jun 15, 2018

This is an issue that the greater community is asking to be addressed no matter how one looks at it. In short, its about purging dead witnesses and dead accounts. My input in short:

  • We have a lot of accounts that were hacked and beyond recovery, lost passwords, recovery account switched, and diseased users. This is a fact I can attest to since I maintain the phishing list.
  • Vote decay and any other account influence features are essentially the blockchain determining that the account is dead or abandoned for one reason or another. 12 month change of status from live/dead and expiry of votes makes sense.
  • 'Activity' should be defined. Activity to me is any activity initiated and controlled by the account owner ie. power up, transfer, vote or otherwise transaction. So what we're doing in essence is adding a 'status' parameter to the account and going off that.
  • There was discussion before around enabling account recovery past the original 30 days. I agree that needs to be put in place ahead of vote decay. Account recovery (password roll back) should be extended to 12 months.
  • At the same time, wallet accounts or 'cold storage' with no otherwise activity are a potential issue but it is reasonable to have a 12 month period prior to status change if the 12 months can also be matched as a recovery timeframe.
  • Pursuing this issue would be more cost effective than giving in to community pressure to remove votes off dead witnesses.

Some issues:

  • A shorter time period won't work as due diligence is needed to prevent newly created backup witnesses who followed 'Steem in a Box' guides and have no idea how the blockchain works or how to run their servers from accidentally becoming a full-time witness.
  • Vote removal from active witnesses would disadvantage them without warning. (Vote removal from dead witnesses would be working as intended.)
@lukestokes

This comment has been minimized.

Show comment
Hide comment
@lukestokes

lukestokes Jun 17, 2018

I'm for vote decay if we have a mechanism in place that calculates total SP involvement in Witness voting. Right now we're at about 70% participation based on the reports I've been doing (if you exclude Steemit, inc controlled stake) but if we were to fall to something lower (maybe 50% or less?) then I could see it becoming a problem. As it is, I think vote decay make sense and rewards witnesses who are adding value right now. EOS has taken this approach (even more extreme with vote decay happening regularly), and I think we can watch that closely to see how it works for them. If it doesn't introduce a systemic risk, I think we should do it. All witnesses should be incentivized to regularly add value.

lukestokes commented Jun 17, 2018

I'm for vote decay if we have a mechanism in place that calculates total SP involvement in Witness voting. Right now we're at about 70% participation based on the reports I've been doing (if you exclude Steemit, inc controlled stake) but if we were to fall to something lower (maybe 50% or less?) then I could see it becoming a problem. As it is, I think vote decay make sense and rewards witnesses who are adding value right now. EOS has taken this approach (even more extreme with vote decay happening regularly), and I think we can watch that closely to see how it works for them. If it doesn't introduce a systemic risk, I think we should do it. All witnesses should be incentivized to regularly add value.

@X40L1N

This comment has been minimized.

Show comment
Hide comment
@X40L1N

X40L1N Jul 23, 2018

Now that progress has been made on the witness page itself, the welcome page (thanks @gryter ) and Steemit Inc has been working to solve sign-up and bandwidth issues, can we circle back to this? Virtually every witness I've talked to is in favor of a decaying vote and agree on a year (365 days) life span which was also brought up at a recent witness discussion on the Ramble a few days ago. The issues that need to be addressed are proxied votes/voters, how to implement the start date of a vote, and what consists of interest/engagement on the chain.

The first, proxies. I personally think not a whole lot needs to change there, except if a person does choose to elect a voting party, they are still subject to their votes decaying and proxied weight being removed due to inactivity.

2nd, date of decay. I think the 365 days should start counting from their last vote across the platform going back 6 months. If no activity has been initiated, then their counter should start. If they havent cast a vote or proxied themselves, so begins their countdown. Every time an account changes a vote, their counter is reset. Perhaps a 180 day reminder for proxies to see if they still wish to retain their delegated witness voting power?

3rd. What consists of activity. There are three primary types of people here as stated before. Investors, devs and content creators. I feel the same rules should apply to everyone as it is decentralized. Just because a person has more SP doesnt mean different rules should apply to them. That being said, again, 365 days across the board for activity on the chain for their vote(s) to remain. Activity defined as a post, comment, transaction, vote or 'chain work'.

I hope that makes sense.

X40L1N commented Jul 23, 2018

Now that progress has been made on the witness page itself, the welcome page (thanks @gryter ) and Steemit Inc has been working to solve sign-up and bandwidth issues, can we circle back to this? Virtually every witness I've talked to is in favor of a decaying vote and agree on a year (365 days) life span which was also brought up at a recent witness discussion on the Ramble a few days ago. The issues that need to be addressed are proxied votes/voters, how to implement the start date of a vote, and what consists of interest/engagement on the chain.

The first, proxies. I personally think not a whole lot needs to change there, except if a person does choose to elect a voting party, they are still subject to their votes decaying and proxied weight being removed due to inactivity.

2nd, date of decay. I think the 365 days should start counting from their last vote across the platform going back 6 months. If no activity has been initiated, then their counter should start. If they havent cast a vote or proxied themselves, so begins their countdown. Every time an account changes a vote, their counter is reset. Perhaps a 180 day reminder for proxies to see if they still wish to retain their delegated witness voting power?

3rd. What consists of activity. There are three primary types of people here as stated before. Investors, devs and content creators. I feel the same rules should apply to everyone as it is decentralized. Just because a person has more SP doesnt mean different rules should apply to them. That being said, again, 365 days across the board for activity on the chain for their vote(s) to remain. Activity defined as a post, comment, transaction, vote or 'chain work'.

I hope that makes sense.

@propertunist

This comment has been minimized.

Show comment
Hide comment
@propertunist

propertunist Oct 10, 2018

FYI. I coded a system that shows what vote decay would result in if no votes were renewed (which they would be in real life)
https://steemit.com/steem/@ura-soul/the-most-voted-witness-in-the-last-3-and-6-months-this-is-what-witness-vote-expiry-decay-would-look-like-kinda

propertunist commented Oct 10, 2018

FYI. I coded a system that shows what vote decay would result in if no votes were renewed (which they would be in real life)
https://steemit.com/steem/@ura-soul/the-most-voted-witness-in-the-last-3-and-6-months-this-is-what-witness-vote-expiry-decay-would-look-like-kinda

@Gandalf-the-Grey

This comment has been minimized.

Show comment
Hide comment
@Gandalf-the-Grey

Gandalf-the-Grey Oct 10, 2018

Contributor

Except (as I already mentioned on steem chat) not. Different rules would cause different behavior.

Contributor

Gandalf-the-Grey commented Oct 10, 2018

Except (as I already mentioned on steem chat) not. Different rules would cause different behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment