Skip to content
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

Add ability to Negate / Oppose another Voter #279

Closed
bytemaster opened this issue Aug 16, 2016 · 69 comments
Closed

Add ability to Negate / Oppose another Voter #279

bytemaster opened this issue Aug 16, 2016 · 69 comments
Labels

Comments

@bytemaster
Copy link
Contributor

bytemaster commented Aug 16, 2016

First Principles of Steem and Voting

  • Every proposed change, payout, should be subject to a virtual YES / NO vote
  • If one user is able to vote YES, then another user should be able to counter it with a NO
  • In a perfectly expressive voting system two users with equal stake and perfectly opposite opinions could actively cancel each other's opinion (resulting in a tie). Whenever there is a tie, the decision is left to the remaining voters.

Avoid a Voting War

Rather than making everything subject to a YES / NO vote and starting a voting war which could be won by whoever has the most aggressive bot with the "last say", we can automate the process. Automating the process saves the network bandwidth, solves the "last vote wins" issue, and also solves problems caused by people being unable to perfectly counter someone else through limits in the normal voting pattern.

Countering Upvotes

It is currently impossible to counter the profits someone earns by upvoting without causing unwanted side effects.

Witnesses Voting

In an ideal world there would be no limit to the number of witnesses someone could approve. This is the nature of approval voting. Due to resource constraints each account is limited to approving 30 witnesses. This limit makes it impossible to express an opinion of approving "everyone but X" which would normally be expressed by upvoting everyone but X.

It is currently impossible to counter someone voting for collusive and/or abusive witnesses while remaining neutral toward the remaining witnesses.

Countering Vote Spam

Vote spammers flood the network with low value practically meaningless votes. These users are limited by bandwidth but still cause a net negative impact on the platform. There is currently no way to prevent this spam short of censorship.

Implementation Details

Every account shall have the power to "oppose" another account with a certain number of VESTS via a new operation:

oppose_account  account opposing_account weight_vests 

The impact of this operation is to temporarily reduce the number of VESTS both accounts can vote with by weight_vests for one week. It can be renewed at any time to extend the period by 7 days from the time of transaction.

An account must have a positive number of votable VESTS in order to oppose another user. This means that a user who abuses negative voting would be unable to renew their negative positions against other users while they have a negative votable VESTS balance.

Limits on Number of accounts Opposed

Due to resource constraints and to prevent a single whale from actively negating thousands of normal users, the weight_vests must be greater than the min account creation fee. It must also be greater than 1/256 of the initiators VESTS.

In practice this means that a whale can oppose at most 256 people and that a minnow can only oppose a single minnow. The number of people you can oppose grows linearly from 1 to 256 until your VESTS equal 256 times the account creation fee.

Rationale for 1 week period

By having a 1 week period it becomes possible to negate someone's negative vote against someone else. In other words, you can force them to negate you rather than the person they are currently negating.

Without this maximum time, then applying a negative vote against someone else could not be countered or would require an unbounded amount of potentially ambiguous computation to recursively remove negative votes.

It is undesirable for people to be locked in opposition "for ever". People should be given a chance to redeem themselves unless there is active intervention. It would take a dedicated villain to run a bot to automatically start abusing again after expiration or to automatically renew opposition against someone for no reason.

Additional Side Effects

With this feature it is possible for whales to "agree not to vote" and let the dolphins (who are greater in number) curate.

Economic Analysis

There is a real opportunity cost associated with negative voting. Any whale engaged in such a practice is giving up the curation rewards they could be earning. They would also be giving up their own positive influence. This means that there must be clear economic reasons to engage in negative voting which should minimize its abuse.

@willbanks
Copy link

This is going to be abused and end badly. It's a nice try. But it's more likely the "dedicated villian" just leaves his list up and automatically renewing as long as whoever is paying him to do this keeps paying. Remember a villain is just a hero of the other side.
http://smbc-comics.com/index.php?id=3756

They are playing a different game than you for different reasons and making their money outside the system.
https://steemit.com/follow/@steemitmarket/4qzf82-upvote-follow-flags-per-0-01usd

You need to stop thinking in terms of punishing bad behavior and start thinking in terms of rewarding good behavior. Punishment drives users away good and bad, reward pulls them in and makes them do whatever it is you want them to do in order to earn the reward.

You don't even need all this complicated stuff, if instead you ditched posting and content rewards all together and force content to trend based on number of comments with upvotes that have commentary.

Then just proportion the rewards out to the commentors based on number of upvotes received on their comments that also have comments.

Tax the total rewards 25% and give it to the original poster.

Everyone makes more money, the bots disappear and this will encourage legitimate discourse.

@matthewniemerg
Copy link

matthewniemerg commented Aug 17, 2016

You need to stop thinking in terms of punishing bad behavior and start thinking in terms of rewarding good behavior. Punishment drives users away good and bad, reward pulls them in and makes them do whatever it is you want them to do in order to earn the reward.

Great statement!

I'd like to add that I think that most of the suggestions that have been put forth by users is to only be able to downvote certain votes on any post. I haven't seen anyone clamoring for the ability of countering one person's entire voting power.

I think it would be more prudent to consider smaller pieces of this proposal in incremental stages so that witnesses can vote on each concept individually.

@Someguy123
Copy link
Contributor

@willbanks Upvotes/comments doesn't work.

If you do it by upvotes/comments alone, then anyone can make a bot army and get a post to the top instantly. It has to be done by vote weight (i.e. post worth), since it's much more difficult to create bots that also have weight on their votes.

It's still fine if Steemit.com just hid the amount a post was earning, but ordering by votes/comments just opens the platform for bot abuse even more.

@willbanks
Copy link

@Someguy123 You're right of course, it should be based on number of followers and the combined rep of their followers. My other was too simplistic. Point was stop trying to punish bad behavior and just remove all incentive for things that are "bad" while incentivizing "good behavior".

Adding an API to allow the SJW's to permanently censor the MRA's is going to end badly.

@Someguy123
Copy link
Contributor

@willbanks that might just work, but then we have people like "steemitmarket" with a metric ton of bot followers too, with possibly more to come.

@nextgencrypto
Copy link

nextgencrypto commented Aug 17, 2016

This is nothing but another method for Dan to control who he wants to see earn and who he doesn't. I expect we'll see him and his inner circle stifling whales they wish to see stop earning as soon as this is released.

Just a reminder, this is being implemented because of the feelings of 1 person who will use his control over the witnesses to push through anything he wishes. Don't let it be disguised as fixing voting, he's trying to suppress accounts he doesn't agree with.

@Any-X
Copy link

Any-X commented Aug 17, 2016

No. No. No.
The solution @willbanks proposed may or may not be correct/the best, but I agree with the principles of what people are discussing here -- negating all voting power is NOT something we want to see.

The ability to censor a users vote power is going to create a cluster of users with the most power and the ability to control the distribution of rewards as they see fit, as they censor outliers.
Outliers are a GOOD thing in the network, as they can promote variety and increase positive discourse and discussion on what content can or should be rewarded.

@willbanks
Copy link

willbanks commented Aug 17, 2016

Thanks and my suggestion was just a different set of rules. Which was my point.

@dnotestein
Copy link

dnotestein commented Aug 17, 2016

This seems like a really bad idea. First, the motivation is far from clear to me. 2nd, can you cite some useful use-cases of how this will be employed. Get specific, like who would use it and who it would be used on. Just to be clear, I don't know of any "normal whales" who would use this, although one can step up if so and tell me otherwise. So far, this mostly sounds like it's useful to steemit itself, and only as a way to increase centralized control.

@taoteh1221
Copy link

@Any-X I could see this leading to vote power wars too...may be best to keep it limited to the reputation wars we will surely have already. Maintaining as much simplicity as possible == efficiency and reliability, just like any good machine / application.

@aaroncox
Copy link
Contributor

I'm going to throw my two cents in here for whatever it's worth. I'm not taking a side here.

I feel like this is getting too heated and a collective "step back" needs to be taken by many here. I've read everything here, including the entirety of @bytemaster's OP here, and there are some decent fundamentals as to how this could work. But I also see a lot of holes and potential avenues for abuse, as well as a very complex solution to a problem I'm not even sure I see. I'd love to be enlightened if I'm not seeing the whole picture here.

What's important though is that we need to consider it's impact to the community. Any change that involves any users ability to impact another user needs a fair amount of conversation. As far as I can tell, some code has been written for this idea, but it's not like a hardfork is live and already a ticking clock.

So, what's the actual problem here to solve here? Is it vote spam? Here's the trends in voting over the past 45 days...

image

Source Data in JSON Format

Is vote spam really the problem here? There are a lot of votes, I'd wager a good double digit percent are indeed spam, but it's not increasing right now.

Wouldn't a simpler, less abusive strategy to simply be to improve the "voting power" system? Hell, even put a hard limit on votes per day as a stop-gap. I'd consider myself an active voter and I don't ever go over 30-50 votes a day. Put it at 100, or 200, whatever.

Do we really want to rely on the weight/power of the 1% to moderate the 99%? I feel like you guys have better things to do than spend your time identifying and fighting spammers.

@svk31
Copy link

svk31 commented Aug 17, 2016

I agree with @dnotestein that it it's hard to see what the actual benefit of this is, you need to make a better case of what this is actually useful for. Who would use this and why?

It seems to me you're adding complexity to solve a theoretical problem that may or may not ever become an actual issue, and that you're taking your political ideas and projecting them onto STEEM. Even more complexity = Bad.

@andulolika
Copy link

Dan, all I will say is: Don't become a cunt that doesn't listen to the community, or the community will leave. You do this important choice by yourself with barely letting witnesses or people know, I know you are on the top and probably give 0 fucks right now, but regrets always come later.

@ByronAP
Copy link

ByronAP commented Aug 17, 2016

@andulolika Dan does what Ned says... and right now the "Company" is dictating what it wants to see happen, not the community. Which is why this comment will probably get deleted just like the rest of my comments.

@andulolika
Copy link

So the censorship resistant thing is basically bullshit? That would suck, if this proves itself to be true we shall (and I will) start a movement against this and make a big deal out of it.

@ByronAP
Copy link

ByronAP commented Aug 17, 2016

Go look at the posts the "Company" accounts have downvoted, ya not all are because they are spam, just because they don't like the content or author. The "Company" should stay out of the voting process all together, the community can down vote spam if we want.

@andulolika
Copy link

I believe they should upvote-downvote scammy/bad content that went up but not vote influenced by personal opinions yet sticking to quality content.

@talerecursion
Copy link

talerecursion commented Aug 17, 2016

I support entirely this change.

What this commit implements can be emulated with a bot that follows every action of the user and downvote all the posts he upvotes and upvotes all the posts he downvotes. The main difference is that the bot version is more spammy and only available to advanced users including whales and bot spammers whereas this mechanism is clean and available to all equally. Negating voting also has a few great upsides:

it allows to vote against a witness instead of upvoting every other competing witness. That's a powerful and explicit message to send to all the free-rider witnesses who are content to take the ~60k USD / month reward but don't even bother making weekly reports. Instead of "not seeing their support grow" (which they won't even notice), lazy witnesses will see their power be eaten up a little bit more every week and that they should notice, in particular if the GUI allows to display separately negative voting on witnesses.

It also allows minnows to overthrow an evil whale. If enough minnows sacrifice their voting power, a whale can become powerless. That would make good food for thoughts for whales who think they are almighty and abuse their power.

@steemed
Copy link

steemed commented Aug 17, 2016

@talerecursion:

What this commit implements can be emulated exactly with a bot that follows every action of the user and downvote all the posts he upvotes and upvotes all the posts he downvotes.

It's not the same. Dan explains how it is different. The present proposal gives the team, which has awesome centralized and coordinated power, the ability to censor anyone they want.

@talerecursion
Copy link

talerecursion commented Aug 17, 2016

@steemd:

The present proposal gives the team, which has awesome centralized and coordinated power, to censor anyone they want.

The "team" already has all the power they need to censor anyone they want. Just look at @steemit SP balance. It's pointless to worry at this point in time about what Steemit could do if they become evil because regardless of whether this commit is included or not Steem would be dead either way.

Let's discuss on the relative merits and short coming of this feature and not start chasing FUD.

@steemed
Copy link

steemed commented Aug 17, 2016

@talerecursion:

The "team" already has all the power they need to censor anyone they want.

The team already censors people. The problem here is in defining good as being what the team wants and bad being anything that is opposed.

I'm #15 on the witness list right now. Do you want to bet me I'll start dropping because of coordinated team votes for expressing my opinion?

Will you say I am fudding if that happens?

@dnotestein
Copy link

dnotestein commented Aug 17, 2016

@talerecursion : He's not chasing FUD. We're talking about a technical feature that makes it very easy for the steemit account to essentially nullify every whale and do it very easily. As a practical matter, you're wrong, under the current voting/curation rules, they can't do it easily or quietly.

@samupaha
Copy link

Really interesting system, but I have to agree with others that I don't see immediate benefit from this. talerecursion has good points but I'm not sure if it's a good idea to oppose everything that somebody does. If a user acts abusively 1/10 of the time, it doesn't make any sense to oppose him because that negates many good votes also. So basically this would be used only against really badly acting bots? How big threat they are currently?

Opposing witnesses is the best thing in this proposal. Whether or not the whole proposal will be accepted, at least it should be made possible to vote against a witness.

@abitmore
Copy link
Contributor

Assume that you and your wife have different political opinions. She will vote for A or B, but you want to vote for nothing. You can counter vote only when she let you know who she voted for. It's not free.

The proposed lazy counter-voting is too cheap, imo it will most likely be abused.

Perhaps it's doable if we set some limitations, for example:

  • to negate another's vote, you need to have 10x more SP
  • for each vote negated, you spend 20x more voting power
  • each negation reduce the curation reward of original voter for 20%, if any (Or depends on rshares contributed. Perhaps leads to Sybil?)

@andulolika
Copy link

While people learns to differenciate bots and since greed the hate towards them is growing I wouldn't worry about them too much.

@talerecursion
Copy link

I'm #15 on the witness list right now. Do you want to bet me I'll start dropping because of coordinated team votes for expressing my opinion?
Will you say I am fudding if that happens?

@steemed: can you define what you call the "team". Is it Steemit, Bitshares witnesses, Steemit + Bitshares witnesses? If you are referring to anything that includes Steemit, they can already kick you out of the list by withdrawing their support. And if you are referring to other witnesses, then you can pay them back by having whoever upvoted you downvote them in retaliation. Because of that possibility, I don't think people will be messing with that thing unless they have a very strong reason.

@steemed
Copy link

steemed commented Aug 17, 2016

silversteem and nextgencrypto were two of the most active witnesses before they were purged by dan and then roadscape, and now more effectively by ben. clains list is a joke because of the efforts of the dev team.

@steemed
Copy link

steemed commented Aug 17, 2016

I am saving every iteration of this conversation. If posts get deleted they will be published elsewhere.

@talerecursion
Copy link

Well, that's getting quite political. It's entirely possible that "the team" wants to dictate who makes the list, but they have the voting power to do so, and that can't be opposed. I know it sucks for people who were doing a lot of good work and lost their slot anyway. I hope they can keep enough voting power to have decent results as backup witnesses, and make it back to the list at a later point.

@steemed
Copy link

steemed commented Aug 17, 2016

My point: don't make it easier on them.

@talerecursion
Copy link

talerecursion commented Aug 17, 2016

Well I think this conversation will be cleaned up because it has really strayed off topic pretty badly. But anyway. Who is Ben actually? Never heard of a Ben before.

@steemed
Copy link

steemed commented Aug 17, 2016

This is all you need to know about ben:
https://steemd.com/tx/9d83a22907ea6a58c887ac4e15173e6363ee9d7b

steemit vest 8,071 STEEM to ben Mar 31

That was when 1 STEEM = 1 VEST

@bytemaster bytemaster removed this from the Hardfork 14 milestone Aug 17, 2016
@bytemaster
Copy link
Contributor Author

Hello everyone. We have been debating this issue and I have concluded that a better approach is needed. More details on why and what alternatives exist will be forthcoming.

@lukestokes
Copy link

@bytemaster Thank you. I've been following this issue closely and my biggest concern was how you would respond to the community. My trust in this platform's long term success, currently, is in whether or not those with the most to lose will continue to act rationally for the long term benefit of everyone involved.

@talerecursion
Copy link

One way to restructure that change would be to separate the witness downvoting (just need to change the "approve" parameter of vote_for_witness into a -1/0/1 enum) and the voting power cancellation (oppose_account) and ship only the features on which there is sufficient consensus.

@bytemaster
Copy link
Contributor Author

witness downvoting has other issues and was removed from bitshares for a reason. You need to downvote the voter, not the witness for that to work.

@talerecursion
Copy link

What are the other issues?

@bytemaster
Copy link
Contributor Author

Wack-a-mole. A coordinated attacking group can move their upvotes to a new account faster than the uncoordinated masses can negate it. In effect, you can move the target of the downvote. By downvoting VESTS you avoid wack a mole.

@samupaha
Copy link

Wack-a-mole. A coordinated attacking group can move their upvotes to a new account faster than the uncoordinated masses can negate it. In effect, you can move the target of the downvote. By downvoting VESTS you avoid wack a mole.

This applies only to a situation where an attacker is trying to get a witness elected who shouldn't be elected. How realistic threat this is?

I'd guess that more common situation is that a witness who has behaved well so far will start to act in a way that he loses some support. Because voting happens so slowly, some users might want to speed the process by downvoting the witness.

In this case downvoting VESTS would be problematic. People are opposing only one particular witness upvote, not all the votes that somebody has casted.

By getting some downvotes the witness himself could also get valuable feedback that he is doing something that the community doesn't like.

@talerecursion
Copy link

talerecursion commented Aug 17, 2016

@bytemaster: I see. You can prevent that by making it necessary to have a minimum of x MV to be eligible as a permanent witness. Witnesses should have some seniority in the community and some skin in the game so that doesn't sound like a too harsh requirement I think.

@talerecursion
Copy link

The problem of downvoting voters is that it's anything but fair. Regardless of what one think of the witness, everyone is entitled to vote as they see fit and they shouldn't be punished because they voted for someone other people didn't approve of.

@Alifton
Copy link

Alifton commented Aug 18, 2016

It's obvious this change has been tabled for further discussion at this time. Could we please move on towards more constructive solutions and away from people threatening retribution like a mob with torches and pitchforks?

We all saw what happened to the Ethereum Foundation when they alienated their user base and how well that turned out for them. Could we please let that serve as a cautionary tale regarding these types of issues. As a united group we can learn from their mistakes and hopefully not follow down that same path with Steemit.

The Ethereum Foundation's solution only served to harm the Ethereum platform as a whole in the end by forcing users to choose sides when instead everyone could have been a part of the same team while moving forward for the sake of progress.

@theoreticalbts
Copy link
Contributor

theoreticalbts commented Aug 18, 2016

Did some git housekeeping on the branch and force-pushed.

@inertia186
Copy link
Contributor

So, can we do this now? That'd be great.

@matthewniemerg
Copy link

pretty clear that this won't happen. issue is closed and has a label of 'wontfix'.

@bytemaster
Copy link
Contributor Author

I still think that the first principles are right on this concept. Unfortunately, having logical first principles and appealing to the masses are two entirely different things.

@matthewniemerg
Copy link

I'm not sure what this accomplishes. A user who has had his vote negated (due to whatever reason) by other users can power down and transfer vests to a new account within a 3 month period with no linkability (other than through exchange partners, who may provide people with that data -- but probably not).

This proposal still appears to be censorship, and censorship-resistance is a major selling point for the STEEM blockchain.

What's to stop a malicious actor (oppressive nation-state or corporation) from buying lots of steem, powering up, and then silencing critics?

@TimCliff
Copy link
Contributor

Could this be implemented with a bot that just did the opposite of what a user did, or is there more to it than this?

@abitmore
Copy link
Contributor

Could this be implemented with a bot that just did the opposite of what a user did, or is there more to it than this?

After HF17, for the comments (with no curation reward), yes.
Otherwise, the up-voter will still earn some if the final payout is positive.

@Serkan-devel
Copy link

I theory, what would happen if posts wont be hidden at all?
Downvoted content could still be downranked

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests