Fixing the Reputation Score and Eliminating Spam: A follow up to User Authority

This article is a bit of a continuation on the theme that I have been working on in my last few posts. Mainly, improving content quality and making it more likely that the best content will receive the best rewards.

In the first post of this series, I talked about how we could allow investors to find undervalued content creators and invest against their future earnings. This would help new content creators get a jump start as well as allowing curation of the best people, not just the best posts.

In my last post, I talked about how we could out compete the voting bots by improving post promotion. This allows for people to grow their audience while benefiting the entire community.

The next piece I have been working on is how to effectively eliminate spam. This is a problem that has plagued the internet since the dawn of time! (or at least the dawn of the internet) The way that most websites solve this problem, is by having a centralized spam filter (moderators) that can look at posts that the community has flagged as spam and decide on whether to keep or delete the post, or whether to ban the poster. This method is not suitable to the steem ecosystem in my opinion because we need to have a decentralized mechanism that is resistant to censorship.

The Problem

So how do you make sure that spam is not rewarded when there is no central authority to say what is or isn't spam? We have the flag/downvote mechanism but what does that do? It just lowers the amount just like an upvote raises the amount. Sure, if we could all just flag spam to death it might work but what if a spam generator decides to retaliate and flag your posts. This can create a phenomenon we see here on steemit called "flag wars!" When two people get in a little disagreement and just start flagging each other's posts into oblivion. Who decides who is right and who is wrong? Or are they both wrong? Is it just the biggest stakeholders that decide what should and shouldn't be considered spam? That is how it works now, and it works pretty well for the most part but I think we can find a simpler, more elegant solution.

So back to the crux of the question. How do we determine what is spam. What if I flag something as spam and someone else upvotes it. How do we determine who is right? Is it spam or not? Currently, whoever has the highest steem power wins. The problem is obvious, these "spam bot armies" can upvote their own spam, getting higher payouts, thus increasing their steem power, which they use to upvote their own posts again. It's a vicious cycle that can create very powerful bot armies, not to mention, draining the rewards pool and lowering the value of steem as these malicious characters power down and sell their scammed money.

A Solution

What if their was a different metric for deciding the value of a post, or account, besides the money it generates? What if it was something you couldn't buy with money? What if it was based on trust, or reputation? Wait, we already have reputation, why not use that? Well reputation is calculated simply by upvotes and downvotes and therefore can basically be bought. We've all seen the accounts that have high reputation that are simply pumping out spam and plagiarism all day long. So how could we make the reputation score based on trust instead of money and self voting?

As I was contemplating this idea I started formulating ways you could do this. "It could be relatively simple" I reasoned. "It could be based on who follows you and who mutes you. It could see when you vote on good posts or bad" I decided that I was onto something and now I just needed to sit down and figure out how this could be done. As I sit at my computer I see a new article in my feed by @scipio, How-to solve SPAM and Democratize Steem: Introducing UserAuthority. And here is the follow up article explaining it in more depth. I couldn't believe it! The very thing I was working all day to figure out and here was the answer right in front of me! This can be done! And it is not as hard to implement as I feared! I won't go into the details of how it works (read the article!) I'll just say how I was planning on applying this idea.

User Authority (UA)


Basically, UA is a way to judge how much people are trusted, if you are followed by people with a higher UA, your UA will increase. Again, I won't go into the details but this would create a "trust" score that cannot be bought. If these bot armies are following each other, they will all have low UA.

This is great, but I think we could add a few things to make this the new reputation system and make it very powerful.

I think your reputation should be based on a few different factors

Followers (this is the UA idea, the better your followers, the better your score)

Accounts that have muted you (This would be a negative score, if followers are upvotes to a person, muting is a downvote to a person)

Upvoting an "accepted" post (I'll talk about this in a second)

Downvoting a spam post (this too)

Accepted Posts vs Spam

Ok, so now we all have different reputations. Now, whenever I upvote a post it does two things. It increases the post's potential payout amount based on my steem power, and it increases the post's reputation based on my reputation. If I downvote a post, it does the inverse. It decreases the potential payout and decreases the reputation.

Now the post will start to gain a reputation as well. If the reputation increases to a certain level, we call it an "accepted post." If the post's reputation goes down to a certain level, it is considered spam and loses all payouts and is removed (or hidden?) from the blockchain.

Anyone that upvotes an accepted post will increase their reputation and anyone who flags an accepted post will decrease their reputation.

Inversely, anyone who upvotes a spam post will decrease their reputation and whoever flags a spam post will increase their reputation.

We would want there to be a fairly big margin between accepted and spam post so that it is only accepted/spam if there is a large amount of trust/distrust in the article. So most posts would probably not fall in either category.

To calculate your reputation it might look something like this:

(Reputation of your followers - Reputation of the people that muted you)*(maybe some sort of dampener/weight) * ((accepted posts upvoted + spam posts downvoted) / (accepted posts voted on (up or down) + spam posts voted on))

or

Follower rep - muted rep times the percentage of spam and accepted post you voted on "correctly"

Something along those lines.

This way, people that don't post a lot but are upvoting and downvoting can also have high reputations if they vote "correctly"

People that try to upvote their own spam will lose their reputation in a virtuous cycle

I believe that something like this would solve a lot of the problems that we are currently dealing with and though I'm not a programmer, (yet) It doesn't seem like it would be much more complicated than our current reputation system. I wish I had the skills to begin testing this out and implementing it but I'm not there yet. Hopefully someone with the skills can pick this up where I left it and actually test it out. (I'll be trying with spreadsheets.... we'll see how that goes...)

Well I think I covered everything I was thinking of... Let me know if I missed something, I really love the discussions in the comment section to help me clarify my idea and work out potential problems!

And remember, if you liked this post please resteem it, I just hit 150 followers so I still don't have much of a reach. I could even share some of the rewards with people that resteem it if someone has an idea of how I could do that. I'm not as concerned about the rewards as I am about making steem work as efficiently as possible! Let's get this idea to someone that can build off it. Or at least shoot me down so I can think about better things :)

Thanks!

H2
H3
H4
Upload from PC
Video gallery
3 columns
2 columns
1 column
21 Comments