STINGY Token (Powered by Steem Engine)

in steemengine •  14 days ago

In a nutshell, if you can correctly predict a particular post will be downvoted to zero payout, you get a reward.

TL;DR

First, click the opt-in link:

Go find stuff on Trending and be the first person to flag them. If you flag something that later ends up getting flagged to zero, you get STINGY tokens.

A Little Deeper

We award STINGY tokens to the earliest voters who downvote a post that would have otherwise been on Trending. It determines a) that a post was going to get a large payout and b) was instead downvoted to zero by the time payout arrived.

Hivemind queries

To find posts:

  • r = Hive::PostsCache.where("is_paidout = 't' AND payout = 0")
    • We want the payout zero and paid in the past.
  • r = r.where("total_votes > up_votes")
    • We want some downvotes.
  • r = r.where("rshares < 0")
    • But more downvotes than upvotes in rshares.
  • r = r.select(:post_id, :votes)
    • We only need these fields in the result.
  • r = r.where("payout_at BETWEEN ? AND CURRENT_TIMESTAMP", 1.day.ago)
    • Set a window in the past to work from.

This gives us r to check for upvotes. For each post in r, check if the upvotes rshares would have put the post on Trending.

Say we have 1000 results in r. How many of these have the upvotes that are above the average rshares? We need to a) know what the upvote rshares for each post was apart from the downvotes and b) what the current trending rshares average is.

posts = []
r.each do |p|
  votes = p.votes.split("\n")
  upvote_rshares = votes.map do |v|
    rshares = v.split(",")[1].to_i
    rshares > 0 ? rshares : 0
  end.sum

  if upvote_rshares > avg_rshares
    # post could have been above the current
    # trending rshares average but got downvoted
    # to zero payout
    
    posts << p
  end
end

To find current trending rshares average.

  • avg_rshares = Hive::PostsCache.where("is_paidout = 'f'")
    • Only grab posts that have not yet paid
  • avg_rshares = avg_rshares.order(sc_trend: :desc).limit(avg_rshares.count / 3)
    • Order by the sc_trend field, limit to top third.
  • avg_rshares = avg_rshares.sum(:rshares) / avg_rshares.count
    • Sum of rshares divided by that third

Payout

Each post qualifies for 1 STINGY if that post a) would have been on Trending, b) has instead been downvoted to zero, and c) has downvotes from accounts that opt-in.

  • If only one account downvotes, that account gets the entire STINGY payout for that post.
    • E.g., the one and only downvote came from Alice and Alice opts into STINGY
  • If multiple accounts downvote, only accounts that opt-in qualify for payout.
    • E.g., two downvotes: one came from Alice; Alice opts into STINGY; one came from Bob; Bob does not opt into STINGY
  • If multiple opt-in accounts downvote, payout is split by absolute rshares.
    • E.g., both downvotes came from Alice and Bob; Alice and Bob both opt into STINGY
    • The downvoter with the most absolute rshares gets most of the STINGY.
    • Ties prefer the earliest voter.

Opt-In / Consensus

As mentioned above, only posts that have downvotes from accounts that have opt-in records should be considered in the results. It might be possible to optimize the query to only process posts that have downvotes from opt-in accounts, but this might not provide much optimization because the votes field in hivemind is a string.

We’re using a non-consensus hivemind database to determine payout. This is probably ok, but it’s good to keep in mind that this may create some corner cases that aren’t fully specified.

Corner cases, like, extra payouts when there shouldn’t be any or missing payouts.

Since the hivemind database is non-consensus, certain elements like vote order must be queried at payout to determine the true order of votes. This does not present much of a problem, but does require minimal API access for each payout phase.

Links:

Gaming The System

One vector that might result in gaming the system is when Eve intentionally downvotes her own post just to farm STINGY. Say Eve intentionally writes a plagiaristic post, uses a bid-bot, then downvotes her own post. Later, Alice downvotes it back to zero. Does Eve qualify for her own downvote prediction?

This is not mitigated by disqualifying the authors from their own posts because they could just as easily use alternate accounts (sybil).

Then again, is this something to worry about or just accept as part of the cost of having STINGY tokens?

Another vector is trailing a stakeholder who is routinely spreading upvotes for low quality posts. Some stakeholders arbitrarily upvote with almost zero investigation on the validity of a post, only to have anti-plagiarism services downvote moments later. An observant account could predict this behavior to farm STINGY.

Again, is this kind of thing something to worry about?

One way to mitigate some of these concerns is to only focus on posts that reach enough upvotes that would get very high on trending. Technically, everything is on trending, if you scroll down enough and the post hasn’t paid out. That’s why avg_rshares is calculated to the top third of the results, which filters out all posts with 50¢ worth of upvotes.

Dealing With Unvotes

Let’s say Eve posts plagiarism and buys bid-bot votes. Alice notices it and downvotes it early, seeking a STINGY payout. Being that Alice is a STINGY super-star, bid-bots notice Alice’s votes and revoke their votes. Now Alice will not receive a STINGY payout. Technically, the post briefly made it to Trending but there’s no simple way to determine this without replaying the blockchain.

This is a win for the platform, but not for Alice. In this situation, Alice might consider unvoting as well.




Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

It's a nice way to gamify abuse fighting. But as with all ICOs, airdrops and so on. What incentive do abuse fighters have to HODL stingy?
Can they redeem the token for upvotes? For resteems from accounts with lots of genuine followers?
Or is it just a token (pardon the pun) of appreciation?

Posted using Partiko Android

·

I haven't really come up with an answer for that specific aspect. For now, I guess it's just a kind of "brownie point" token.

I have awarded you a 100% upvote and a resteem courtesy of @ackza

(come to https://steemspeak.com and beg @ackza for a tytran upvote or resteem if your post fits the narrative)

This should be interesting!

To listen to the audio version of this article click on the play image.

Brought to you by @tts. If you find it useful please consider upvoting this reply.

I’m ready . Take my body Stingy Tokens.
I wonder if I should downvote this post ?

Posted using Partiko iOS

Ummm...what is this exactly? Some sort of joke? Seems very convoluted. What value does this really bring to the platform?

Posted using Partiko Android

·

Good question. I'm hoping that it provides information about who is good at spotting bad content early.

·
·

I wasn't trying to be rude! But there are questionable aspects that made me unsure what to make of this. It would be great to have this information though. <3

Posted using Partiko Android

·
·
·
·
·
·
·

Very interesting idea!

Posted using Partiko Android

·
·
·
·

Very interesting idea! I suppose there are many ways you can implement something like that.

Upvoted, and resteemed, im jelous that u can already use steem-engine

·

I started coding this over a month ago, not having any idea steem-engine would get released. In fact, I wanted to be ready for an SMT roll-out. But when steem-engine came along, I started just tweaking it here and there. The steem-engine folks were good enough to set up a testnet (qa.steem-engine.com).

So after about a week of testing it, I realized it was working as I had hoped. I couldn't think of a good reason to delay it any longer.

·
·

yeah man i see that youll probably make all sorts of tokens and maybe one of them will really take off.

Bernie is going to do well here ...

how about comments ? Would it work on comments ?

·

Yes, it should work on comments. I think it'll be pretty rare, but who knows?

Hi @inertia!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 6.581 which ranks you at #147 across all Steem accounts.
Your rank has not changed in the last three days.

In our last Algorithmic Curation Round, consisting of 209 contributions, your post is ranked at #3. Congratulations!

Evaluation of your UA score:
  • You've built up a nice network.
  • The readers appreciate your great work!
  • Good user engagement!

Feel free to join our @steem-ua Discord server

This post has been included in the latest edition of SoS Daily News - a digest of all you need to know about the State of Steem.

Hi, @inertia!

You just got a 1.31% upvote from SteemPlus!
To get higher upvotes, earn more SteemPlus Points (SPP). On your Steemit wallet, check your SPP balance and click on "How to earn SPP?" to find out all the ways to earn.
If you're not using SteemPlus yet, please check our last posts in here to see the many ways in which SteemPlus can improve your Steem experience on Steemit and Busy.

I just opted in for brownie points.