Steemhunt's Account Based Voting ver 2 - Diversity Score

in #steemhunt7 years ago

ABV Journey

Previously, we created stake-weighted voting derived from Steemit to Steemhunt but this was an unfair ranking system because the top hunting posts were occupied by upvoting from bid bots, subscription bots, curation tails and self-voting, which is irrelevant to the hunting quality.

So, Steemhunt initiated an ABV (Account Based Voting) system last week (https://steemit.com/steemhunt/@steemhunt/steemhunt-initiates-account-based-voting-ranking-system). However, it was not easy to apply ABV on top of the stake-weighed voting system. The Steemhunt team (@project and @tabris) has been preparing for a long time to make the most suitable ABV system. You can check out all the previous discussions/studies here - https://github.com/Steemhunt/web/issues/135.

  1. Pure 1-account-1-vote system is not possible to use because it is easy for abusers to create many alternative accounts. So we created differential voting weight based on the Steem reputation score. It is simple, sophisticated, and easy to adopt. We discovered that we need a grading system, so we decided to invent our own hunter level system that reflects the hunter’s contributions in the Steemhunt community.
  2. We designed a 5 hunter level system based on how many times the hunter is listed in the top 10 section. Everytime a hunter’s post is listed in the top 10, their level will be higher, so they will have more voting weight than others. However, this requires everyday snapshot for an individual hunter’s achievement. So, it’s not a scalable idea.
  3. We thought that the most important activity on Steemhunt was upvoting. So we came up with the Hunt Curation Score (HCS) level system. Whenever you upvote hunts with more voting power on Steemhunt, your HCS is higher so that you can gain more voting weight. To prevent inactive users maintaining their high level, everyday the HCS decreases if the hunter didn’t upvote that day.
  4. There is a very critical problem of HCS. In Steem blockchain, a user can almost make an infinitive number of upvotes. Even though there is a limit, called as STEEM_VOTE_DUST_THRESHOLD, this dust level is very low so most users won’t be affected by it. This is a very crucial problem to make the ABV upvoting system because technically a user can abuse our ranking board by making many sub accounts and constantly upvoting all hunts with 100% voting power to maximise their HCS.
  5. If we were able to know the user’s remaining voting power when they make an upvote action on Steemhunt, it would be easy to fix this issue because we could just set the minimum remaining voting power to accumulate the score. However, we can only access the following information when a user upvotes: {"voter"=>"project7", "weight"=>622706, "rshares"=>"406089967416", "percent"=>10000, "reputation"=>"5834971324537", "time"=>"2018-03-03T06:13:03"}.
  6. Most users do not make full votes more than 10 times a day (this uses approximately 20% of their total voting power) because it takes 24 hours to recover their voting power. So we came up with the plus-buffer-minus HCS accumulation range. A user can accumulate 1000 HCS per day. If they try to upvote more than 2000 HCS (1000 to 2000 is a buffer range), rather than increasing their HCS they will lose it.
  7. We felt this was getting too complicated. Simplicity is always the best. So now we have returned to our first idea - utilising the Steemit reputation score for the differential voting weight, and run a V4V (Vote4Vote) report bounty program so that we can manually kill the V4V attempt.

Introducing Diversity Score

Even though we have taken down many V4V pools, we still need to have a systematic solution to mitigate those attempts. So we created our own voting diversity score (DS) to alter the user’s voting weight based on their voting patterns. We adopted our DS from Gini–Simpson index (https://en.wikipedia.org/wiki/Diversity_index#Gini–Simpson_index).

DS ranges from minimum zero to 1. If the user only upvotes a small number of hunters, DS will decrease towards zero. On the other hand, DS will move up towards 1.0 if the user upvotes a variety of hunters. DS will also calculate the voter’s voting weights. So if the user upvotes many other hunters but uses a heavier voting weight only, for a small number of hunters, the score will be lower.

If the user is new to Steemhunt, which means the user does not have enough voting history on our platform, the penalty-weighted DS will be applied. On the other hand, the user will have advantage-weighted DS when he/she has voting history with a maintained high diversity score.

This DS will be multiplied to the hunter’s original voting weight. For example, if your Steem reputation score is 60, your voting weight on Steemhunt is x3. When you make a full vote on Steemhunt, your voting score will be 3. However, if your DS is calculated as 0.7 now, this will be multiplied to your voting score, so it will be 2.1 (3.0 x 0.7).

Steemhunt ABV with DS

To minimise all kinds of abusing attempts, Steemhunt’s ranking system is currently using the following tactics:

  1. Only upvotes via Steemhunt are counted for the the hunt score.
  2. Steem reputation score is applied to reduce the upvoting impacts from alternative/fake accounts.
  3. Self voting is not counted.
  4. Whitelisting and blacklisting.
  5. Diversity Score (DS) reduces the impact of group voters.

What’s Next?

We know that many abusers are very smart and always adapt to the new system quickly. There is no perfect system to 100% prevent these attempts. However, the Steemhunt team will continue to minimise these attempts in order to make a fair daily ranking board.

We are now preparing to develop an automated monitoring algorithm that detects abusive voting patterns, such as link farming, unnatural voting traffic, automated voting activities, unnatural client device movement (like no scroll navigation actions) etc. We won’t give up the fight to create a well-structured account based voting system on top of Steem blockchain.

This new diversity score-weighted voting system is effective from June 23, 2018 KST.

...



Please follow @steemhunt account and join our chat channels (Discord is more active):





Steemhunt

A place where you can dig products and earn STEEM.
Steemhunt.com

Support Steemhunt with Steem Power Delegation:
500 SP |1000 SP |5000 SP |10K SP |20K SP |50K SP |100K SP

More information about our Sponsor program is here
More information about HUNT Token Airdrop is here
Support Steemhunt by following our curation trail

Sort:  

Good job team, I know it is difficult to countermeasure all parts but as the system is developing as fast as possible, my personal opinion is that you are on a right way!

@steemhunt appreciable efforts towards transparency.

Good Job~ Thanks^^

This is really awesome!! Great job man. :) This will really change the way it works from now on. :)

This is great to see. The team identifies a problem and makes an effort to fix it immediately, great work. If only the Steemit team acted as quickly haha

glad to join @steemhunt thanks for you.


Congratulations @steemhunt!
You raised your level and are now a Dolphin!

Do not miss the last post from @steemitboard!


Participate in the SteemitBoard World Cup Contest!
Collect World Cup badges and win free SBD
Support the Gold Sponsors of the contest: @good-karma and @lukestokes


Do you like SteemitBoard's project? Then Vote for its witness and get one more award!

Congratulations! Your post has been selected as a daily Steemit truffle! It is listed on rank 19 of all contributions awarded today. You can find the TOP DAILY TRUFFLE PICKS HERE.

I upvoted your contribution because to my mind your post is at least 26 SBD worth and should receive 135 votes. It's now up to the lovely Steemit community to make this come true.

I am TrufflePig, an Artificial Intelligence Bot that helps minnows and content curators using Machine Learning. If you are curious how I select content, you can find an explanation here!

Have a nice day and sincerely yours,
trufflepig
TrufflePig

It'd be great if you could also explain how you give your @steemhunt vote on posts. The vote for rank 30 is about 1% of rank 1. It'd be great if you can get better distribution. I don't know how things work in the back end. But I think the Top 10 posts end up getting most of the @steemhunt votes and if you could spread these rewards among at least the top 25 it would create a much better eco-system where more people get medium sized rewards instead of few getting large rewards. Personally I don't see a huge difference of value (personally) when I compare #1 with #50

So I'd like to see #50 to get at least 2% of the vote that #1 is getting. Give it some thought.
Best of Luck!

I am pretty sure I have ranted about this before, saying that if you keep voting for timmy then your vote towards timmy should have less impact over time. Pretty sure your solution is a bit more elegant and thought out will be nice to see how that works out, hoping to see an update post obviously.

This post has been just added as new item to timeline of Steemhunt on Steem Projects.

If you want to be notified about new updates from this project, register on Steem Projects and add Steemhunt to your favorite projects.