-
Notifications
You must be signed in to change notification settings - Fork 787
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
Allow Removal of up vote. #22
Comments
This proposal may possibly be relevant to this enhancement. I have a few questions about how this would be implemented. Would used voting power be returned to the voter that removed their vote (even partially if not fully)? How does removing one's vote affect the Why do you write "removal of up vote" only? Why not allow removing down votes on comments as well? Someone could just as easily accidentally hit the downvote button instead of the upvote button. Why can the voter not vote again after they have removed their vote? Is it because you are worried about people exploiting that feature for financial gain? If so, what sort of attacks? Their voting
would still be much smaller if they removed their vote, then a lot of other people upvoted the comment, and then they decided to go back and join the crowd by upvoting again. Also, if you are returning |
We are still working on some of the specifics on what the exact specifics of this change will entail. I can speak to a few points however. Talking internally yesterday, I think we are going to allow removal of down votes and up votes, but only by setting their weight to 0. (Effectively nullifying the vote) In regards to allowing a user to vote again after the removal of their vote, we run into issues of how to deal with cash out time. Cash out time is currently a vote weighted average. Each vote "votes" for the cash out time to be 24 hours after the time of the vote, weighted by the absolute value of the vote (Steem Power * Current Voting Power). If we remove the weight from the cash out time we could cause a post to immediately cash out. This is undesirable as the cash out time is in effect a contract with other users that their voice will be heard at least up until the current cash out time, if not longer. It is important to have this buffer time to allow content to be accurately and thoroughly curated. The other side of the spectrum is the desire to get payouts quickly to creators. If we allow a user to vote again (with the assumption that we do not negate their cash out time ), they could prevent payout long after when it should be paid. I have not done the math, but it could be infinite depending on how it is implemented. This is also undesirable. The easiest solution, both in implementation and to limit side effects is to not change cash out time from a removed vote and to not let the user vote again. Keep in mind, this is only for the current round of voting. After the content is cashed out, everyone can vote again. I expect this to happen for particularly important and well written content. Refunding voting power has not been discussed at length internally. It is something we are looking into when working on this change. For something so simple conceptually, there are a lot of moving parts we need to consider to do it correctly. |
Understood. My suggestion in the part of this proposal regarding voting is to distinguish between a creating a new vote ( I believe that addresses the undesirable behavior you discussed on both ends of the spectrum. It does not lead to the exact same state/outcome that would have occurred had the voter voted the way they meant to from the beginning, but I think that is acceptable behavior. |
The problem with this is that the strength of the vote determines how it effects the cash out time. Let's say a user sees a post is going to be paid 100.00 Steem Dollars. The user thinks it is a good value for what they read and moves on. On the other hand, if it were going to be paid 200.00, the same user might have voted it down because it was going to get too much. Now, if that payout had a low valued vote, then right before the cash out time, the voter could change their vote and change the payout significantly without allowing others to have a say in the final payout. With the weight voted cash out time, it guarantees no large changes to payout can happen at the end of voting without extending the voting by a meaningful amount of time. Voting for content is much more than a 'like' button. You are assigning monetary value to user generated content. We need to be as open and as fair as possible to everyone involved. |
I think it is important to understand why we want the ability to change votes:
The solution I have proposed is to all the "rshares" to be reverted and the curation reward to be zeroed. This has the impact of allowing mistakes to be corrected and payouts to be reverted to a "neutral" level. Voting power is still consumed, cashout date is unchanged by the retraction, |
Okay, I get the concern now. I will have to spend some time to think about this and see if there is a nicer solution that allows revoting. |
Changes milestone as hardfork 3 became a bug fix hardfork. Moving this back to the next non bug fix hardfork. |
After much discussion internally and with some members of the community we have decided to allow users to change their votes! There are a few caveats to this to prevent attacks and to minimize potential abuse of this change, but we strongly believe this change will allow for a higher level of curation and reduce cognitive barriers for content curation. Below is a summary of how we are changing voting:
|
…es since initial branch. Testing progress #22
Feature merged into develop and ready for review. |
We need to limit the number of times a vote can change to prevent abuse of curation rewards via pumping the abs_rshares value via rapid changing of votes. |
I almost think we should add a third field. With the addition of vote changing, the abs_rshares field now has an entirely different meaning than it used to and is thus having a negative impact on an algorithm that relied upon it. It is really the stake weighted average time algorithm for payout time that has changed, so maybe it should have another field for it. I propose something like...
|
* Issue steemit#22: t_proposal_database_fixture struct update. * Issue steemit#22: t_proposal_database_fixture struct update. * Issue steemit#22: t_proposal_database_fixture struct update. * Unit tests skeleton for SPS main commands. * More unitests for create_proposal. * Unitests: create proposal arguments validation. * Unitests for remove proposal operation. * Unitest for removal proposals with votes. * Remove of FIND_VOTE macro and more unitestes for remove proposal. * Unittest for update proposal command. * AUthorization validation unitests for proposal commands. * Issue steemit#22: t_proposal_database_fixture struct update. * Issue steemit#22: t_proposal_database_fixture struct update. * Issue steemit#22: t_proposal_database_fixture struct update. * Unit tests skeleton for SPS main commands. * More unitests for create_proposal. * Unitests: create proposal arguments validation. * Unitests for remove proposal operation. * Unitest for removal proposals with votes. * Remove of FIND_VOTE macro and more unitestes for remove proposal. * Unittest for update proposal command. * AUthorization validation unitests for proposal commands. * Rebase/upmerge changes. * Rebase/upmerge fixes cnt.
* Issue #22: t_proposal_database_fixture struct update. * Issue #22: t_proposal_database_fixture struct update. * Issue #22: t_proposal_database_fixture struct update. * Unit tests skeleton for SPS main commands. * More unitests for create_proposal. * Unitests: create proposal arguments validation. * Unitests for remove proposal operation. * Unitest for removal proposals with votes. * Remove of FIND_VOTE macro and more unitestes for remove proposal. * Unittest for update proposal command. * AUthorization validation unitests for proposal commands. * Issue #22: t_proposal_database_fixture struct update. * Issue #22: t_proposal_database_fixture struct update. * Issue #22: t_proposal_database_fixture struct update. * Unit tests skeleton for SPS main commands. * More unitests for create_proposal. * Unitests: create proposal arguments validation. * Unitests for remove proposal operation. * Unitest for removal proposals with votes. * Remove of FIND_VOTE macro and more unitestes for remove proposal. * Unittest for update proposal command. * AUthorization validation unitests for proposal commands. * Rebase/upmerge changes. * Rebase/upmerge fixes cnt.
If someone makes a mistake while voting or their posting key is compromised, this operation will allow that vote to be removed resulting in the pending payout "as if it never happened".
When a vote is removed, the
rshares
earned by the vote are removed from the post and the voter loses any share of the voting rewards due them. They cannot vote again or change their vote.The text was updated successfully, but these errors were encountered: