Handful of Users Are Gaming the Liquidity Reward System And Earning 1200 STEEM per Hour

in #steem8 years ago (edited)


Note: I first discovered this by watching transactions on SteemStream, a very interesting, nifty tool

Within the on-chain market, there is a reward mechanism that pays users who provide liquidity to the market. Liquidity points are measured like this : liquidityPoints = netAsksVolume * netBidVolume

The reward for having the most points per hour is 1200 STEEM (~4k USD as of time of writing).

The two accounts in question @adm and @abit are buying from each other on the market, and then sending to the other in an automated endless loop, generating liquidity points. You can see their wallets and recent transactions by clicking their names above.

Between the two accounts, they have approximately 43,000 STEEM, 266,000 STEEM Power, and 36,000 STEEM Dollars. At these levels, they quite easily dominate the liquidity reward competition.

You can look through their transfers and see the activity as well as the rewards.

{ "type": "liquidity_reward", "owner": "adm", "payout": "1200.000 STEEM" }

Without digging deeper, its hard to be sure just how long this has been going on, but I can confirm they have received at least two rewards. (Note: I say they assuming they are two people, though I have had at least one person confirm they are the same account)

With the rate of transactions occurring, there is little doubt that this is being executed by a script.

The purpose of the liquidity reward system is to encourage users to keep Steem Dollars and Steem available on the on-chain market as bids and asks to increase the ability for other users to exchange.

Given this fact, two very important points:

1) Since they are only buying, selling, and sending to two accounts, the liquidity reward is going to someone that is not actually providing liquidity to the on-chain markets.

2) Given the amount of assets they have and the speed at which they are transferring, no 'normal' users have any chance to earn the liquidity reward, thus removing the incentive opportunity for users and as a result, actually hurting liquidity.

Possible Solutions

  • Liquidity reward algorithm needs to be changed to make it proportional. This 'all-or-nothing' dynamic makes this attack vector possible.
  • This user(s) SHOULD NOT be punished -- they simply identified an exploit and they have already received quite the bounty for it.

What do you think?

EDIT: Important point on the way the algorithm works from @smooth:

The reward is, in a sense, already proportional. Once an account wins the reward its score is reset and has to start from zero. Someone else who earns rewards at a slower rate will not win but their score is not reset. So they can continue to earn points to reach the top of the scoreboard after multiple hours. For example, in a contest between two accounts with one earning points at twice the rate of the other, the slower one will get one in three hourly rewards on average.

Sort:  

Thanks for the head up. It's me. If I don't do that, others will -- already detected indeed and some of my bot's strategies are to counter act on those. But it's sad that my bot is stupid enough and is losing much every day, for example more than 20K STEEM in last a few hours, kind of punishment. It's not funny at all. Competitions are welcomed, leave more orders on the book please.

If I don't do that, others will

I don't necessarily agree. If the liquidity rewards were more accessible to others then more would be competing to provide liquidity by leaving more orders on the book and narrowing the spread. The more populated book and narrower spread would in turn would make successful self-trading much harder. Systems like this can reach multiple equilibria, and it is very possible that another one would serve the community better than what is happening now.

I think you should try simply providing liquidity and not self-trading for a while, and if others provide better liquidity, either compete on that basis or let them get the rewards for providing the service, which encourages more and more of it. I can't tell you what to do though, this is just my opinion.

As for the bot losing, well, that is part of the (distribution) game. The final destination of a subsidy in a market isn't always (or even usually) only the first person to touch it.

What I said is about current algo. I admit if there is a better algo it would be harder to game and attract more "normal" traders.

(replying to your reply below, which is at max comment depth)

None of the other self-traders you identify are running full time bots as far as I know. Thus they are not always stacking the queue and preventing (at least currently) smaller liquidity providers from ever being paid as yours does.

If you were to pull back and if it turned out that actual liquidity providers were still never paid (and thus encouraged to continue and even expand), then it would be reasonable to resume what you are doing. But there is no way to find that out without trying.

There are many names on that list who are not being rewarded even though they have likely provided liquidity to the market and would likely do so again if rewarded for it. Providing liquidity also becomes easier for others if they are receiving rewards (even occasionally) since there is no other good way to have access to liquid steem without incurring an opportunity cost.

The most successful tit-for-tat strategies will forgive occasionally to attempt to test a return to a cooperative equilibrium. That is my suggestion.

Thanks for the reply. They were running full time bot before I started to compete to them. I have no idea whether they'll start do that again if I stopped, it's fair to assume they will. If they want to show me that they won't do that again (sounds like I'm police), they can reset their reward points by self-trading on the opposite direction, then I'll remove them from my "bad guys" list manually, and start to compete "normally" . Anyway I don't think it's bad to set a barrier.

What I said is about the current algorithm as well.

Most time I was being nice. Xeldal who provided some real liquidity has ever got rewarded once or two, some of his volume were fed by me though. About others, I'm not sure whether they really provided enough liquidity. If yes, they should show up on the list: https://steemd.com/tools, I'm happy if they can be rewarded. However, some other self traders have set a barrier on the list, so I set my barrier higher than that.

On the list,

  • adm is the active barrier keeper
  • alittle is my account which has been providing real liquidity, but most volume are done by others' self trading (as a side effect). I don't know it profitted or not, too lazy to calculate
  • james-show is a self-trader
  • smooth-a is a self trader
  • xeldal is a half-self-trader, he's providing real liquidity but did trade with himself when got chance
  • others are likely real liquidity providers so far, or perhaps haven't got chance to do self trading

Out of the list, the big players

  • complexring/thursday/saturday/sunday, has been rewarded by self-trading several times, and got around 30K STEEM by gaming my bot
  • smooth got around 5K STEEM by gaming my bot
  • creator has been rewarded once for whatever reason

The small players

  • when my bot is self trading, place an order in front of it (kind of providing liquidity), they've been earning from the spread.

I will tell you this.. The weight that these self traders generate makes it virtually impossible to compete unless you actually trade against yourself. For example:

adm has a weight of 455,445,235,982,016
and I spent 5 hours trading yesterday and my weight is currently 84,193,654,372

At that rate, it will take me 5409 more trading sessions to ever get to the top of the list that the self traders are at. I want to trade and provide real market making services (that will add to overall liquidity) because of the reward program but it is currently being gamed in such a way that I can't compete unless I start just self trading.

Yes I noticed your bot yesterday, it's smart. My bot had to feed it many times, sometimes it prevented my bot from self-trading. Good profit even without the reward, right? If you can put in more token, I'm sure you can play a more important role.

💖 HI GUYS! 💖YОU WANT ТО LООK AT MY BООBS?👙💋💖 --->>> http://goo.gl/jTtyFY

Maybe @dan should look into this. Thanks for pointing out though.

Edit: or @ned

They already know about it.

@dan has stated that the purpose of the liquidity reward is in part to subsidize liquidity but also in part to serve as a component of the distribution strategy for Steem. By offering such a bounty it brings traders to Steem, an audience which would not normally be interested in the social media aspect (though they may indeed post about or discuss trading).

Some tweaks are planned to improve the algorithm, but in a sense traders being clever and figuring out how to collect it is the whole idea. The same applies to saturday/sunday who appears to be trying to compete along with others who will join the game later.

an audience which would not normally be interested in the social media aspect

But why should we concentrate on traders and such when the social media aspect is roaring? The traders could always be catered to later. Anyway the rise of the steem coins has been fueled by users of the social media component and should get preference. Besides this incident is causing consternation in some users, so maybe a post from @dan shall satisfy all.

I think @dan's answer would be that traders bring liquidity and investment, leading to higher market cap and larger rewards for the social media side. It is a synergy.

And I would disagree that the rise in price and market cap has been funded by users. 2000+ BTC trading volume over the past few days on bittrex is not (primarily) steem users, it is traders and investors buying in, increasing the market cap, and making the entire system work better for everyone.

Anyway, perhaps @dan will have his own thoughts to share on this

Yes I agree it being a synergy, but it could wait IMO. As for the rise, i feel the demand was pumped up due to the interest generated with new sign-ups and believe they should have preference. Yes we will wait for @dan to explain!

smooth, I have voted for abit as a witness. Is a it's behaviour considered exploitative at this time? Is he acting in keeping with his position of responsibility? Should I be considering removal of my vote for witness? I would really appreciate you take on the slack participants thoughts.. thank you.

I don't think @abit is behaving in a manner that most benefits the Steem community. If his trading bot were more focused on providing liquidity and less on self-trading then he would still likely get a good share of the rewards, just not (nearly) all of them, and would be providing a better service to customers in the market while encouraging rather than discouraging competition from others who also want to provide liquidity (but don't have the head start he does in terms of creating bots that take advantage of various nuances of the system). I'm not going to tell you how to vote though.

Thank you for your perspective. It is appreciated. Don't worry, I wouldn't expect you to tell me how to vote but I do value the opinions and advice of those I trust. I think @abit has done a lot to contribute to Steemit, I'll wait to see if his behaviour changes or what his take is should he comment. Given some of his recent posts about fairness.....I've stopped voting for myself....I'll feel a touch let down if he's not observing the same standards.....

Certain, I think that the better thing is that they explain it to avoid doubts, and that it could harm to the project.

It's only $100,000 per day being "earned" by a single bot, who does not seem to be providing any actual liquidity.

Might I suggest not counting any self-trades? I know not easy to prevent, but maybe you can use coinage to at least limit the abuse

Might I suggest not counting any self-trades? I know not easy to prevent, but maybe you can use coinage to at least limit the abuse

This is not viable since it is trivial to create multiple accounts. In fact, abit doesn't self trade literally at all, he uses two different accounts.

(The algorithm already subtracts taker trades from your score so if you did literally self-trade, you would earn no points.)

Suggestions how to improve the reward scoring are definitely appropriate though. Maybe discuss it on the steem slack?

by "self-trade" I mean trading against yourself regardless of if it is the same account or not. That is why I suggest coinage. Using that it wont matter how many accounts are used.

I posted several possible solutions:
https://steemit.com/trading/@jl777/usd100-000-per-day-ongoing-drainage-of-liquidity-rewards
also I am rejected when I try to join the slack, "token revoked" or something error like that

There is no coinage literally since it is an account based system, not outputs, but maybe something like average coin age could be maintained for an account, or minimum, or something. I haven't thought it through. Reasonable direction though.

No idea what's going on with slack. Maybe try a different email or different browser?

Personally, with the way things are configured today (sure to be changed tomorrow, for the better or worse is yet to be determined) this system will serve to only chase away new investors.
Sure, tons will join daily - investing only their email, phone number, and time/content. Yet the days of people pumping tons of their own money into it are most likely over (that is, to say; only those with the intend of screwing over as many little fish as they can while habitually self-upvoting themselves will be the ones investing hard cash into this Oligarchy).
The system of "flag other's content to return potential payouts to the rewards pool, then self-upvote to confiscate said rewards" IS being viewed more and more as not only a form of censorship yet also as an economy designed to take from the "poor" to give to the "rich".
I personally think @dan and @ned were well aware of this. Not only well aware yet also purposefully intended.
If they do not configure things to prevent bots from raping the system, to prevent those who already have a lot from abusing those who have little, I foresee this system suffering a slow and horrible death - much as someone with a flesh-eating bacteria would suffer as one's being is being eaten away little by little.

The reward is, in a sense, already proportional. Once an account wins the reward its score is reset and has to start from zero. Someone else who earns rewards at a slower rate will not win but their score is not reset. So they can continue to earn points to reach the top of the scoreboard after multiple hours. For example, in a contest between two accounts with one earning points at twice the rate of the other, the slower one will get one in three hourly rewards on average.

I made a test spread at 3.500005/3.500010, which is a ridiculously tight spread.
abit came in between this, self-traded and collected another $5000. basically $100,000 per day is being gifted to abit and his bot appears to swoop in to just get enough points to win that hour's reward.

since he has more capital than anybody else, he can make tighter spreads than anybody else and self-trade as much as needed to win in any given hour.

So what good is slowly gaining points when there is a self-trading bot that will always have more points in any given hour? Your assessment that an account getting double the points loses one third of the time seems to ignore the fact that there is an account that is getting 1000x the rate and just a few minutes is all that is needed to win, every hour.

This is basically a $100K/day hack and while I would be interested in a relatively fair liquidity providing rewards system, I cant even find the API docs to write a bot and there is no way to beat abit with the current rules.

Your assessment that an account getting double the points loses one third of the time seems to ignore the fact that there is an account that is getting 1000x the rate

I completely agree with you on that. My point was simply that it is somewhat proportional, not that you can compete with someone getting 1000x more points. You can't, but that is true under any proportional system. Perhaps under another system you have an easier time realizing your 1/1000 share, but it would still be negligible.

(replying to your reply below, which is at max comment depth)
if it is a balance based system instead of unspent outputs, it makes it a lot trickier...
what we need is some metric that consumes a finite resource and it doesnt have to be specifically coinage. Maybe something like (account balances / total activity) can be used. In the case of two accounts trading back and forth, the account balances stays constant while total activity goes way up, so the value of this shrinks to nothing at the abit level. The problem is that there also needs to be a way to pull in all the other accounts so an honest liquidity provider that is doing a lot of trading is able to get proper credits. If a snapshot of all the account balances involved in the market maker's trades can be made, then it could be used as a limiting factor.

anyway, there is a solution, just not sure the right details yet

Lol its like they didnt even try to hide it with those names.

Haha, right? I love the mindset of

"Let me make an obvious boasting of skimming/gaming tactics
as an inside joke that nobody buy myself will get!"

Then it resulting in something as stupid as what you just
publicly revealed (e.g. @saturday & @sunday, etc.)

I didn't think it could get worse than the OP's whisteblowing,
but you found an equivalent from someone even cockier, hahaha


Thanks for the laughs!

Signed,
obfuscate-me

It's possibly one user with 2 accounts... But there's got to be a better solution than continuing to siphon money into the hands of some of the richest users on the site. When I joined, I viewed the economics of Steem as a potentially revolutionary force, a democratizing force. I'm seeing a lot of reasons to question that assumption. There are far too many mechanisms in place for people to exploit imbalances of power and wealth for personal gain without providing any obvious benefit for the majority of users.

I'm confident that all of these little exploits will be identified and worked out in time. The entire community has a vested interest in doing so. This is an example of the wrinkles being ironed it in action.

I'm honestly surprised that there isn't more exploitation given the relative complexity of this system, but it seems quite airtight in my mind (except for this one, imo)

Look forward to seeing @ned and @dan responses... I'm sure they're already working on it anyway..

Seems to me that you should always be skeptical of a system that explicitly allows people to purchase themselves a voice...

But money is free speech!!!!11one1eleven!

Maybe it was a feature to start with but it should change with the realities. If the system is truly being gamed, it should be identified and corrected swiftly. These things are bound to happen in an evolving system

I'll take this as another opportunity to plug my series on game theory and Steem. Over the next few weeks I'll be writing more articles where I rigorously analyze the incentives built into Steem from a game-theoretic perspective, specifically looking for exploits like this one.

Why is someone getting paid to provide liquidity ? Wouldn't the market eventually do this itself without incentives ?

I think its a great idea especially if it is proportionally rewarded.

Incentives are all over the place in Steemit... this one just appears to be the easiest to exploit.

If these users powered up all their steem and voted on things, that'd be nice :)

Since there are no trading fees on Steemit, traders would happily arbitrage the prices. Liquidity rewards ONLY create a reason to game and distort the system.

This needs to be fixed ASAP

Coin Marketplace

STEEM 0.16
TRX 0.16
JST 0.030
BTC 59319.27
ETH 2469.45
USDT 1.00
SBD 2.45