The Liquidity rewards bot is too effective or defective

in #steemit6 years ago (edited)

4 Days ago the Liquidity Rewards associated with the Internal Market were announced in the post below.

As a result at least one bot (@abit-@adm), has been created and the internal market is now greatly enhanced due to much higher liquidity. This has also enabled price stability since the rewards earned on site have a great place to be spent without losses to fees, volatility etc.

Last night and this morning I spent a couple of hours and a few hundred Steem Dollars (I got them on this site anyway) testing all the functioning of the market and messing around with the bot :).

....(what can I say its in my analytical nature)

A couple of things emerged...

  1. The bot is great at creating liquidity and identifying a trader that is trading against their own orders.
  2. There is a feature or a flaw? that stacked orders (on the same price) do not record the order of the stacking. They do not operate on a first-in-first-out basis.
  3. The result is that if a bot or a person knows the value of the order they placed, even if it is intermingled with other orders on the same price, if they/it submits the opposite order with the same price, their previous order is automatically picked out of the pile.
  4. Effectively bots and traders can still trade against themselves no matter how many other players are in the mix, as long as the price is stable at one price point on either side of the spread.
  5. Currently the bot trades against itself much of the time and it is impossible to out-compete it for the liquidity reward as it trades against itself with very high values at the start of each hour.

Basically the bot provides effective liquidity and that is a reward in and of itself.
But.... don't try for the liquidity rewards on offer, it's highly unlikely you will be successful if the features of the market remain the same (no FIFO in orders).


There is no FIFO bug. The issue has to do with decimal roundoffs in the interface so that different bids/asks with 6 digits of precision appear (from the GUI) to be the same price.

You have to look at the order book itself.

The first solution would be to show all orders separately and not aggregate them.

However, this doesn't solve the problem of a LARGE stake that can obtain higher precision more easily than a small stake.

In fact, it makes it practically impossible to combat anyone with that large of stake as you need to be able to obtain that precision level, too. Theoretically, you can design a bot to combat this if you had a large enough stake.

In addition, the bot can also calculate how large of an order it needs to make (and subsequently take on a different account) in order to obtain the liquidity rewards that hour. As the number of liquidity points that is needed to obtain the liquidity rewards increases--due to other bots or users manually trading and attempting to obtain the rewards--the orders of the bot become necessarily larger. Once more, any little person, or even a collection of several whales, cannot obtain the level of precision necessary to combat such large orders.

I believe I have a solution that increases the liquidity and limits the size of such large orders in a way that may favor other liquidity makers so that they have a chance to obtain the liquidity rewards. I will write a post on this here shortly.

Thanks for that.

I ran a few tests with my smaller trade amounts and was able to pull my own smaller amounts out of the bundle too...

We are aware of the issues and have been considering options to prevent the precision loophole from being abused.

By the way, current status of competition for next liquidity reward is here (shared in Steem Witness Slack channel):


  4 xeldal                  7507457495000 Weight,     3009.001 STM     2495.000 SBD
  3 steempower             10255475575972 Weight,     2800.006 STM     3662.662 SBD
  2 smooth-a               46881026692548 Weight,     3942.109 STM    11892.372 SBD
  1 complexring          1098675959332108 Weight,    28580.507 STM    38441.444 SBD
  0 adm                  4567287052726852 Weight,    77545.316 STM    58898.297 SBD

@Abit, is there another way to see liquidity reward info - that seems to not work anymore.


Thanks for this analysis, is true that the bot provides much needed liquidity and tight spread but on the other hand it makes it impossible for others to win the liquidity rewards... I would much rather have the reward being proportional to the volume you contribute. I am sure there will be a fix soon since @dan is already looking into it

Great analysis!
TBH I've been earning liquidity rewards with bots.
Other bots/players (at least @complexring-@thursday) were earning money from my bot.
My cash flow is positive so far.
Market making is always with risks.

Yes. But the amount that I was earning by manually pushing your naive bot is neglible compared to the rewards.

I don't have a problem with you running a bot or the rewards or anything with this itself, other than it's impossible for anyone to go against someone who has a larger stake, (unless there is a larger move in the overall market, which doesn't appear to happen), due to how fractions work with decimal precision. With the accumulation of rewards, the precision becomes arbitrarily large.

In order for a market maker to lose 1200.000 STEEM an hour, at even 3% spreads, one needs to have trades totaling at least 40,000.000 STEEM and the corresponding amount in SD (at current prices, roughly 12,000.000 SD). You also need to have large enough amounts of STEEM to to be able to 'push' the bot by having more precision.

For all intents and purposes, it is practically impossible to do anything when someone has such a large stake, even if yours is large and 80% of that large stake, that means the number of decimals for precision level for the larger stake is still way more.

Seems like a DAO type issue to me.... and you are getting your bounty for surfacing the "exploit".


I hope it won't take forking acrobatics and a divided community to balance this one out :)

Coin Marketplace

STEEM 0.28
TRX 0.07
JST 0.042
BTC 30387.47
ETH 2070.63
USDT 1.00
SBD 2.61