steemit / steem

The blockchain for Smart Media Tokens (SMTs) and decentralized applications.
https://steem.com
Other
1.95k stars 793 forks source link

Add ability to Negate / Oppose another Voter #279

Closed bytemaster closed 8 years ago

bytemaster commented 8 years ago

First Principles of Steem and Voting

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 _weightvests 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 commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

@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 commented 8 years ago

@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 commented 8 years ago

@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 commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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

dnotestein commented 8 years ago

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 commented 8 years ago

@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 commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

@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 commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

@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 commented 8 years ago

@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 commented 8 years ago

@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 commented 8 years ago

@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 commented 8 years ago

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 commented 8 years ago

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:

andulolika commented 8 years ago

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

talerecursion commented 8 years ago

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.

talerecursion commented 8 years ago

@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

@dnotestein: you are assuming that Steemit turns evil. If Steemit turned evil, they can in a finger snap replace all the witnesses by accounts of theirs, approve a fork that gives them complete power to do whatever they see fit including kicking whales out of their accounts by changing their keys. But obviously that's not gonna happen because Steem would be DEAD. And obviously this "technical possibility" that they will abuse the negative voting to cancel whales who are not downright attempting to sabotage the system is not gonna happen either for the exact same reason. This change doesn't give to Steemit any additional power they don't already have.

steemed commented 8 years ago

@talerecursion:

The team were all awarded vests from Steemit on Mar 31. This includes ben, michael-a, michael-b, val-a, val-b, dan, ned, and jamesc. Vests were also awarded to blocktrades. The team also included roadscape now.

It is pretty clear cut who the team is and arguing semantics is going to get tedious pretty fast.

I was just knocked down one slot by team member ben last night.

You can argue they can do what they want with their votes, and they can, but they more the exercise coordinated power, the more centralized is steem.

Now, you can argue for the merits of centralization all you want. That would be an honest argument. But if you want centralization, I suggest using facebook and banking a Wells Fargo.

talerecursion commented 8 years ago

@steemed: I wasn't arguing semantics but really trying to understand if you were referring to the development team, the witnesses team or a meta team that would include both. So "the team" is Steemit + Cryptonomex. You understand that they can already kick you out of the witnesses list in a finger snap regardless of whether or not this change is implemented, don't you think?

steemed commented 8 years ago

@talerecursion:

Watch them do it.

talerecursion commented 8 years ago

@steemd: what's your point? Your relationship with "the team" and how it impacts your future prospects as a witness bear no relation with this change as far as I can tell. What am I missing?

steemed commented 8 years ago

@talerecursion:

You are willfully missing that this change will facilitate abuse of their power.

steemed commented 8 years ago

That my "relationship" with the team impacts my witness status is symptomatic of centralization and abuse.

talerecursion commented 8 years ago

I'm not. First it's not really abuse: they are entitled to vote as witness whoever they see fit, they have almost all the voting power anyway, and we have known that from the very beginning of this project. Second I don't think that facilitates anything. To kick a witness out of the list right now takes like a few cli_wallet commands to remove support, and if that's not enough, a few more to upvote a bit more every other witness + 1 backup witness. Either way, it's a trivial job. 5mn max. This commit changes nothing at all. Dan will save 5mn. Wow

talerecursion commented 8 years ago

(but he lost a few days coding the change btw)

steemed commented 8 years ago

they are entitled to vote as witness whoever they see fit, they have almost all the voting power anyway

You can argue they can do what they want with their votes, and they can, but they more the exercise coordinated power, the more centralized is steem.

Now, you can argue for the merits of centralization all you want. That would be an honest argument. But if you want centralization, I suggest using facebook and banking a Wells Fargo

We are going to go around in circles now. You approve of centralization and that's your prerogative.

talerecursion commented 8 years ago

@steemed: yes it's symptomatic of centralization of abuse, but that's nothing to do with that particular change. Steem is currently almost as centralized as Ripple. That's the deal. In the future, if things go according to plan, this will change. But for now, that's reality and either we accept it, or we just GTFO.

talerecursion commented 8 years ago

@steemed: exactly, we are turning in circles. The fact power is centralized hasn't changed a bit. It was like that yesterday. It will be like that tomorrow. And this bears absolutely no relation with this commit.

steemed commented 8 years ago

It does because this commit facilitates abuse of the centralization of power. Right now it is impossible to censor someone without affecting others. With this commit, there is less collateral damage and easier censorship. This is exactly the reason Dan gives for the commit.

talerecursion commented 8 years ago

You are conflating abuse and disapproval. It doesn't seem abusive to me nor censorship that people would disapprove of specific people being witness.

talerecursion commented 8 years ago

Specially when they could equally well get the job done with a few cli_wallet commands. It's not like the 30 votes max per account is a problem to shift someone down 20 positions in the witnesses list.

steemed commented 8 years ago

It is censorship because they hang the threat of being bumped from the witness list over you. They are reorganizing the witness list as we speak. Ben's vote is part of a larger effort. It has been going on for several days. They don't do it in one snap.

talerecursion commented 8 years ago

Granted, the current change makes it "cleaner" to downvote a witness. But that doesn't change anything to how "feasible" it is to downvote a witness if they so will. And I don't think adding convenience to an action that' already possible anyway is really a good ground for opposing a change

talerecursion commented 8 years ago

@steemed: the witness list needs to be reorganized frankly. Look at the last weekly report from @clains. Half of the witnesses didn't bother answering with a weekly report, and it's been three weeks he is trying to get updates. There is a limit to how much dilution the network is wanting to take to sustain witnesses who don't contribute enough. That's not a statement about you, I have no idea where you stand wrt to that matter, but I'm not shocked by the idea of a reorg. And again that has nothing to do with this change AFAICT.

steemed commented 8 years ago

@talerecursion: Dan has voted for inactive witnesses for many weeks as part of his effort to purge the witness list of those who he disfavors. That's why it is pointless to respond to whatever @clains wants.

steemed commented 8 years ago

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 commented 8 years ago

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

talerecursion commented 8 years ago

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 commented 8 years ago

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

talerecursion commented 8 years ago

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.