Steem Improvement: A GENEROSITY Rank Algorithm - A Method of Increasing Post Quality That Promotes A Reduction of Rewards Pool Exploitation.

in #utopian-io6 years ago (edited)

A successful community is one where mutual respect is high and if Steem's value is to go 'to the moon' it will help greatly for the community to be motivated and inspired to help each other. Perhaps the biggest point of contention and argument - plus the issue that puts off new users to Steemit the most - is that users with large wallets can upvote themselves onto the trending page and large payouts with much lower quality posts than the new users and those with small wallets might be creating. If the measure of the subjective value of posts is mostly being defined by the posts own posters then what use is that measurement really? How can this situation be resolved without angering existing users who like things as they are? Maybe I have part of the solution...

generosity is

What is 'Abuse' of the Rewards Pool?


First up, here are some quotes from the Steemit Whitepaper:

those who have a large investment in a community also have the most to lose by attempting to game the voting system for themselves. It would be like the CEO of a company deciding to stop paying salaries so he could pocket all of the profits. Everyone would leave to work for other companies and the company would become worthless, leaving the CEO bankrupt rather than wealthy.

Fortunately, any work that is getting a large concentration of votes is also gaining the most scrutiny (publicity). Through the addition of negative-voting it is possible for many smaller stakeholders to nullify the voting power of collusive groups or defecting large stakeholders. Furthermore, large-stakeholders have more to lose if the currency falls in value due to abuse than they might gain by voting for themselves. In fact, honest large stakeholders are likely to be more effective by policing abuse and using negative voting than they would be by voting for smaller contributions.

From what I have seen, in general, the downvoting of posts that abuse the rewards pool does not go far enough to fully stop the problem for a variety of reasons. Posts can be made to look 'just' good enough to not get downvoted and there can even be large groups of users who club together to give the appearance of real support for 'subjectively high quality' posts which are actually only there to game the system. The claim made in the whitepaper that it is counterproductive for such gaming by wealthy users does not really take into consideration that once the system gets above a certain size (which it already has), the rewards pool can be exploited/abused in these ways without the overall system collapsing and so there is little to no risk to those doing the abusing.

Things have perhaps gotten better, in my opinion, in the last 6-9 months - with the post quality of top paying posts (on average) increasing and it being somewhat more obvious when people are upvoting low quality posts just to take from the post pool as a way of 'getting a return on their investment'. The reality is that the return on investment from Steem tokens 'could' be most productive as a result of the post payout system being optimally fair/respected and thus more and more users trusting the system and thus then coming in and investing their own money and time (collectively creating a good feeling and ever increasing value of the tokens). Vote abuse is a counterproductive activity that only benefits the abusers in the short term, but which may heavily impact the growth rate of both the Steemit community and the value of Steem in the longer term.

The ideals of the Steem whitepaper to create a method of rewarding subjectively valued posts, based on the community's thoughts cannot be fully realised when the subjective valuation of posts is dominated by whomever figures out how to game the system the best and thus gain the most SP. The aim of community is not to turn that community into a plutocracy run by the most cunning and manipulative - indeed, this is exactly the scenario that @dan Larimer appears to wish to replace in our world by 'making governments irrelevant' through EOS and to some extent Steemit too.

The Original Thoughts on Curbing Abuse


The whitepaper goes on:

Eliminating “abuse” is not possible and shouldn’t be the goal. Even those who are attempting to “abuse” the system are still doing work. Any compensation they get for their successful attempts at abuse or collusion is at least as valuable for the purpose of distributing the currency as the make-work system employed by traditional Bitcoin mining or the collusive mining done via mining pools. All that is necessary is to ensure that abuse isn’t so rampant that it undermines the incentive to do real work in support of the community and its currency.

So the vision set out in the whitepaper is to take whatever steps are necessary to gently, but firmly limit the extent of the abuse that occurs so that there is sufficient balance that the community thrives.

Generosity Ranking Algorithm - A Simple Solution to a Complex Challenge


Rather than trying to control self voting, perhaps a wiser solution is to provide tools for the community to filter posts that are from flagrant self voters. This could take the form of having a ranking calculation, in addition to the existing reputation figure, that shows a calculation of the ratio of votes the account has made for self and for others. Generosity!

For example, if I make 1000 votes over a month and 40% of them are for me and 60% of them are for a wide spread of other users, then my balance can be said to be in favor of the community and I am working to help grow Steemit, in addition to ensuring my own rewards. A simple graphic can be used to display the lifetime calculation of my 'generosity' -with a colour coding being used to represent the spectrum from 'less generous' to 'more generous'.

Rough examples of how this might be displayed on blog profiles (Actual integration into Steem based websites would be decided upon by their own developers):

generosity

quite generous

The generosity rank will not effect post payouts or reputation directly, it will simply be used as a reference point for users when considering who to vote for and may also be used by UI designers when providing means for users to filter posts so as to allow, for example, only posts from users who are above a particular generosity threshold to be seen by users who want to filter their lists in that way.

The current reputation system only shows a figure that is relevant to the amount of upvotes an account receives for it's posts, which does not take into account self upvoting - the result being that any account can have a high reputation, regardless of it's actual reputation with other users. This can give a misleading impression to new users, such that they think that the community values some of the users who they see with high reputations who express behaviors that they consider anti-social or counter-productive for the community. Generosity ranking, correctly carried out, can correct this issue.

Points for consideration regarding the algorithm:

  • It is not enough to simply track how many votes are made for other accounts, since it is relatively simple to create sockpuppet accounts to receive votes that are all controlled by the same user. To improve the generosity rank of a given account, there must be a significant spread of other accounts voted on, rather than most of the upvotes just going to one single account.
  • Ideally, the ranking would be relative to all other users - so that the account that posts to the highest number of other accounts is 100% 'generous' and the generosity of other accounts is determined in relation to that top account. This allows the community's behavior as a whole to determine the spread of ranking scores and removes objections to the system that may be raised due to users being assessed based on limits/rules that might otherwise be somewhat arbitrarily forced onto them against a linear, rigid scale.
  • The center point of the scale of the Generosity Rank can be zero, with negative numbers reflecting more self votes than non-self votes and positive numbers reflecting a more community oriented approach to voting. So a generosity rank of -50 shows someone who is really only upvoting their own posts and a rank of +50 shows someone who is really only upvoting the posts of others.
  • Calculation of the voting activity must be done using Vests given by each vote, rather than a simple numerical count of the number of votes. This will ensure that the system cannot be gamed by auto upvoting high numbers of posts with almost no power behind the votes.

Preventing Abuse of the Generosity Rank Algorithm


Since the Generosity Rank Algorithm is based only on which accounts receive upvotes from a specific account, the only way to abuse the rank calculation is to upvote accounts that are also your own or possibly belong to a cartel of self-upvoters working together. Since there is no surefire way to stop users from doing this, the best approach here may be to provide greater Generosity Rank scores to accounts that vote for a high spread of other accounts.

The Generosity Rank algorithm could still be 'gamed' by creating a large number of sockpuppet accounts and upvoting them all, however, this will cost Steem Power to do and the effectiveness of the strategy depends on whether the money that can be taken from post payouts as a result of it's use is enough to cover the cost of creating the new accounts that are required.

Since generosity is calculated relative to the most generous account's activity - it will be possible (and necessary) to check that most generous account's behavior to ensure that it is upvoting in a genuine way and is not upvoting fake accounts. An alternative that may work better overall is to base the Generosity Ranks on the average Generosity Index Score across the entire system, rather than using only the highest Generosity Index Score as a reference.

Proposed Algorithm


The overview of my initial solution for this algorithm is as follows:

  • Calculate amount of Vests voted by account over it's lifetime both for self and for other accounts.
  • Calculate the total number of other accounts voted for by the account.
  • Calculate a Generosity Index based on the voting activity of each account.
  • Identify the account that tops the Generosity Index List.
  • Create the final Generosity Rank for each account in relation to the most generous account - such that -50 becomes the least generous rank possibly, zero reflects no vote activity and +50 represents a generosity level equal to the most generous account in the whole Steem blockchain.

Working Calculations For The Generosity Rank Algorithm


Legend


TV = Total value of votes made by a given account - Measured in VESTS.

AVF = Total number of accounts voted for by a given account.

SV = Total value of self-votes made by a given account - Measured in VESTS.

PSV = Percent of voting vests made by a given account that originate from self-votes.

GEN-I = Generosity Index Rating.

MAX-AVF = Total number of accounts voted for by the most generous account.

MAX-PSV = Percent of voting vests made by the most generous account that originate from self-votes.

MAX-GEN-I = Most Generous Account's Generosity Index Rating.

GEN-R = Generosity Rank of a given account.

Formulas


The percentage of votes from a given account that originate from self votes is as follows:

PSV = SV/(TV/100)

The Generosity Index that is later used to produce the final Generosity Rank is as follows:

GEN-I = (AVF/(TV/100)) * (100-PSV)

The final Generosity Rank is calculated to compare a given account's Generosity Index to the most generous users's Generosity index and is then adjusted to ensure that Generosity Ranks range from -50 to +50.

GEN-R = (GEN-I/(MAX-GEN-I)) - 50

Examples


Let's look at how this might work in practice.

Note: Once the algorithm is applied to the real world data set on the Steem blockchain it may become apparent that additional adjustments are needed to make the values agreeable to the community.

Most Generous Account:

In our example, the most generous account in the system has made upvotes with a total value in VESTS of 15000 and has made votes to a total of 9000 accounts. The percentage of those VESTS that were for self upvotes by the most generous account is 6.67%.

Account A:

Account A makes upvotes with a total value in VESTS of 100 and has made votes to a total of 9 accounts. The percentage of those VESTS that were for self upvotes is 90%.

Account B:

Account B makes upvotes with a total value in VESTS of 900 and has made votes to a total of 500 accounts. The percentage of those VESTS that were for self upvotes is 22.22%.

Generosity Ranks:

The resulting generosity rank for these three accounts would be:

AccountGenerosity Index ScoreGenerosity Rank
Most Generous0.5650
Account A0.009-48.39
Account B0.43227.16

We can therefore see that by this scale, Account A is considered to be extremely ungenerous as compared to the most generous account and Account B is quite generous in comparison.

To increase the Generosity Rank of Account B requires Account B to upvote a higher number of other accounts than it has done and/or to increase the amount of VESTS used to upvote other accounts. The current calculations meant hat generosity can be increased significantly by increasing the amount of other accounts voted for.

Conclusion


This algorithm and design requires some refinement and is open to scrutiny and feedback from vested parties across the Steem eco-system. Refinements might includes extra steps to prevent exploitation and/or corrections to calculations.

An initial step for testing this algorithm is to produce a webpage that calculates the Generosity Rank for a given account, enabling users to check their own rank to determine the fairness and usefulness of the calculations. I will take steps to create this page in the near future.

Wishing you well,
Ura Soul



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

You should check out Steemfollower, as this idea has already been implemented for many months. It is the basis of the whole platform.

The trending is ranked by total outgoing vote total.

Such a simple concept. So simple that it hasn't been proposed till now. ( At least I have not seen it, or thought of it). Works really well on a psychological level bringing voting behavior to the awareness of the voter. Your algorithm is way to complicated for my brain but this would be so easy to add to any of the steem front ends. It would not have to be a hard code change to the api. You idea actually has me a little excited. Please let me know if there is any way that I can help you promote this idea. I'm not sure how I could help but I am willing.

It's not only been proposed (by myself and others, 6 months ago or more), but it's already DONE AND IMPLEMENTED on Steemfollower.

Pulling this to Steemit would certainly be interesting.

Great ok, thanks. I find that my suggestions for Steem improvement generally get ignored which is frustrating - maybe posting links to this post and the video I posted afterwards to DTube to relevant chat groups with some words of support would get people's attention?

Yes, that's how it works around here. I suggested this many months ago.

Steemfollower has already been doing this for months upon months, successfully. It's the whole point of the platform.

I am still rather new here and navigating around. I think the term used for me is a minnow. I humbly and honestly don't think it is very feasible to out-game greed(whale upvoters for themselves) or desperation(minnows who vote on large posts to try to get a tiny piece of whale pie). The 'game' rules do appear to change at times, but as long as there is an ability to make your own post generate large sums AND be Trending then I can't imagine it will not continue.
Perhaps there should not be a trending category at all or no self voting. I self upvoted for my own post today (1 cent!), but I just wanted to see one upvote on a post that took me a while to do, LOL!!! I am finding a way to connect with some real people here and trying to let go of the $$$ aspect and focus on feeling good and safe to share parts of me that I have kept hidden so maybe this platform will serve some of us in ways that are much more important than reward$.
Lack, greed, generosity, and gratitude exist in our world and also here on Steemit...makes sense. I plan to stick around and see where this paradigm shifting platform goes and what part I have to play in it.
Peace and Love to ALL :)

It seems you are defining greed as "using what I bought myself for my own gain."

Do you donate your paycheck each week?

No, I donate a lot of my time, but that is beside the point and me (my ego) just pointing out 'I am a good person' ;) I think my use of the word greed is important to be pointed out to me, it actually comes across as a put down/accusation so please accept my sincere apology. I really do not understand how this all works, so I will try to observe and be more careful with my comments. <3

Great! Thanks for your comment. This is not so much about out-gaming anyone, it is more to provide a missing piece of information that exposes users to more of the reality of what they are seeing and voting on as they use the site. The more informed we are as users, the better our choices can be aligned to our preferences. :)

I really like what your propose here. It is by far the most simple solution I have seen so far. Indeed, a user that is generous and not simply self-serving is one that people wish to interact with. The incentive works. I will go through the maths of the formulas later and try to understand the mechanics of your proposal. For now I shall leave saying this, you are doing exactly what you should be as a witness - finding problems and proposing solutions. Thank you, @ura-soul.

Excellent! Thanks for your support as always!

This is an absolutely fannnnntastic idea and well deserving of a full upvote and resteem. I have been thinking a lot lately about how to stop the reward pool abuse and haven't been able to come up with any solutions that would work for all, this seems like it could do just that. It's a shame that you have users that put in such a lot of effort and never see their posts make more than a few dollars, while you have others who post whatever pops into their head and they receive hundreds of dollars in the first few minutes. We need to do what we can to get rid of this disparity. Great idea

Thanks! I'd really like to see how this effects the culture here :)

I think this is a great Idea and a good supplement for the user reputation score. I've seen quite a few with reputation above 65 who self vote at the time of posting which means they also reap the lions share of the curation rewards on that post as well, especially if they hold a lot of steem power.

Most people do self vote to some extent and it doesn't mean they're being exceptionally greedy, but if more than 50% goes to self votes then I think that's a bit excessive and counterproductive to the goals of the community.

Thanks! I actually checked my own self vote status and I might be considered greedy by my own aglorithm.. I simply had no way of easily keeping track of it so did't do any corrective action. Being reminded of the situation would definitely inspire me to vote others more. I don't have a problem with self upvotes, but there is clearly an issue with what I and @ned / @dan define as abuse.

It's an interesting idea, and along the lines of a metric I was considering a while ago, but haven't published, which I call 'Votes Dispersion':
http://www.steemreports.com/outgoing-votes-dispersion/
Without calculating for all accounts however, this is not currently a nice bounded metric. Once I have a front-end on which I can apply this kind of thing, and a machine learning based spam filter I'll look into it in more detail, but I considered that until then, there's little chance of adoption.

I prefer your term generosity rank, but you must admit it's more political than 'dispersion' ;)

oh yes, i considered numerous words - including 'vote spread' and another witness said he already had a similar idea and had used the word 'steemity' - which is a nice neutral way of using the language.
i chose generosity as it is a hearty kind of word and emotions are what make the world go round, not money - contrary to popular opinon ;)

I really appreciate both the thought and time you've put into this my friend, simple yet very effective. Posts/ideas like this display why you're so deserving of any witness votes people give you. But back to the concept, I genuinely feel that (as per your intent) these ideas would reign in and indeed highlight those that seek to use the platform for their own gratification and greed whilst at the same time rewarding those that display the symbiotic values that will help us grow .. in other words it's a win-win! Along with algorithmic changes I don't tink it would take long for the concept to trickle down into the subconscious and thus people will begin policing themselves. Great work @ura-soul

Thanks a lot for your generous words! :)
I am certainly inspired to set up a test page that allows us to calculate the GR for users, to find out if this is going to be helpful or not.

Excellent idea and credit where it's due my friend.

I really like the sound of this and hope that I can reread and understand it. There are so many things I can not understand here in steemit. In the real world I am seen as a generous person and would like to be seen the same way here. Thanks for the effort. I do hope to help.

Great, I will answer any questions you may have here.

Thank you! I hope to be able to take advantage of your offer in the near future.

Brilliant concept! I would also like to add my two cents:
Self upvoting IS a huge problem, contrary to @lextenebris - once an intelligent newcomer to the steem platform does some digging they see two things immediately wrong with the system.
Those are 1 - self upvoting and 2 - upvote bots.
The people with a bit more logic and sleuth skills then will quickly find out the third thing wrong with the system - sock puppet accounts.

I think this concept is absolutely brilliant and will be discussing it in my vlog tomorrow, however I would like to suggest two idea that I dont see here.
1 - Interaction with upvote bots decreases a generosity rating.
and
2 - Continued voting to a certain account decreases generosity rating. As in: The first X number of votes made to another account per week ADD to the generosity rating, any votes above X number SUBTRACT from the generosity rating.

To explain:

1: I see the use of upvote bots as the SINGLE most dangerous thing for the steem platform. What is preventing a future of steem where anyone that wants ANY type of exposure has to pay for it.. do we seriously believe that a new user from the States will shell out $10-50 (maybe in the future $100-500) to promote some blog on a platform he is not even familiar with, let alone someone from the third world. If we want steem to succeed the bots SOMEHOW must be kept in check. A simple solution is to lower a generosity rank for interacting with upvote bots.

2: Sock puppet accounts: many users are already gaming the system with multiple accounts, and already have little need to self upvote. For the ones that still are self upvoting, after this generosity rank comes into play, they will simply adjust their voting practices slightly. So it may seem that a whale is SO generous merely by upvoting their alternate accounts. A simple solution is to limit the generosity concept from voting on a single account over and over.
Also this WILL encourage people to find new and interesting content, and there is certainly not going to be any shortage of it in any particular field of interest as soon steem will have 1 million users. And if we can keep this entire platform from becoming a giant robot fueled circle jerk - hopefully many many more.

Thank you for this novel idea that I hope will spur the minds of many on this platform.

Thanks for your comments!

There's a lot to think about here. It would certainly be possible to include votes for self via a bot as a self upvote, just as any other self upvote, that's a good point. Part of the confusion here is that the official terms for Steemit actually say that using bots is prohibited (although this rule obviously isn't enforced) - so adding a metric that considers bots would be a sure sign they need to update the terms too. That said though, I don't see how this can be fully effective, since it is not fair to reduce the rank of a profile just because it receives votes from bot accounts, since bots can be paid by people to vote for others without the account owners knowledge or agreement. This therefore means that account owners will always be able to vote for themselves via bots, using sockpuppet accounts. I don't see a way around this that is fair.. Unless the metric for bot votes is a completely separate one that does not have any effect on the 'generosity' metric.

If I have understood your 2nd point correctly here - the algorithm I have proposed actually already takes your point into consideration, since gaining a high generosity rank will not be possible without upvoting a range of other accounts (relative to the most generous account).

Coin Marketplace

STEEM 0.35
TRX 0.12
JST 0.040
BTC 70638.80
ETH 3565.34
USDT 1.00
SBD 4.73