The Univ3 Farm is being taken advantage of.. We need to fix it

It came to our attention about a month ago that an anonymous actor has been taking advantage of the GIV/ETH Univ3 Pool on Mainnet. This actor has been using the unique dynamics of Univ3 to precisely allocate a staggering amount of liquidity into a single price position, thus taking almost all of the farming rewards for themselves. This person has been constantly readjusting their position to move into minimum range, ensuring they stay in range as the price of GIV fluctuates. Furthermore this actor simply dumps the GIV they acquire from rewards, hurting the price of GIV and tarnishing the vision of the GIVeconomy.

We’ve tried fighting back with tokenomics, pushing the GIV price out of their range to keep rewards distributions decentralized but they just keep coming back, this has proven to be an ineffective solution, spending tons of ETH on gas only for the ominous “middle finger” to come back into range.

We’re proposing to temporarily suspend GIV/ETH Univ3 Rewards and find a solution to this gross centralization of farming rewards. This is not what our intention of the GIVfarm was and Giveth shouldn’t idly support this form of gamification of the GIVeconomy.

If you are staking in the Univ3 GIVfarm

Follow this thread - If there are no strong objections to this course you will need to make sure you claim your rewards before the farm is turned off.

Following proper Advice Process on this topic we will advertise a clear shut-off date and create a community vote via Snapshot on whether to proceed or not. We will also reach out via Comms to spread awareness and ensure current Univ3 stakers are given proper notice to take action.

7 Likes

It just came to my mind and I like to share with you even though it may not be good for Giveth brand. We can update token reward token and add an abused account list/map to it! That is, we will add abusers (e.g. the middle finger guy) to that list and when they want to claim their reward, the smart contract transfer method will ignore them!! it means that uniswap v3 staker pays the reward but they will not have anything in their wallet!

2 Likes

Some thoughts:

On the V3 Program:

  • I think it’s important to distinguish Giveth’s goals with the liquidity mining program? Is the goal to create a decentralized distribution of GIV tokens, or is the goal to create deep liquidity for the GIV token and price stability and actually incentivize liquidity?
  • The v3 program, due to incentivizing concentrated liquidity, has issues with the former goal but is way better for the latter goal. The middle finger is really good for GIV liquidity as it creates a much stronger buffer and price wall against GIV dumping, since the middle finger guy’s liquidity is willing to eat up those dumps. Especially with a lot of airdrop tokens and new givstream tokens being emitted from other LM programs, the incentivized middle finger liquidity can protect against price decline from those tokens being sold and so in some ways the concentrated liquidity is better than typical LM programs due to this. Of course, for the goal of wide decentralized token distribution, it’s not as effective.

Of course this still depends on what the middle finger does - if it always dumps GIV to keep staying in range then it may not help that much, but if it buys or holds GIV then it will keep fulfilling the goal of incentivizing liquidity and keeping the GIV price more secure.

On potential fixes:

  • It looks like the actor has been buying GIV at times to stay in range too - effectively fighting upwards to stay in range instead of fighting downwards. Fighting with tokenomics and the right swaps that make it easier to fight upwards would be better or even symbiotic instead of swaps that make it easier to fight downwards.
  • Additionally, creating a shared concentrated pool that everyone can participate in would be a potential option to solve the fair distribution problem, ie, something like a layer on top of the v3 pool that runs an actively managed v3 position that anyone can join and that rebalances to stay concentrated and in range too.
  • Suspending the program could work but it means Giveth no longer gets the benefit of concentrated liquidity and way amplified depth for the token. Sells from the airdrop and other LM programs could start to create even further price drops without the extra depth the V3 pool creates.
  • Blocking or even slashing the actor could work too but is a lot more malicious/dodgy on Giveths part, especially since they’re only doing exactly what Giveth wants and they are creating liquidity for GIV. If Giveth slashes all their current future GIVStream rewards in addition to just blocking them from continuing to accrue more rewards, that could be really bad from a PR/brand perspective, but even a block may be contentious. There are also multiple actors now doing more concentrated positions of 2-4 ticks and an actor could easily just migrate over to using a new address, so there are practical problems to blocking too.

Overall I’d suggest creating a shared managed position and/or doing more fight-upwards style swaps to encourage symbiotic fighting are probably the best options, or just pausing the program for everyone and accepting the loss of deep liquidity for GIV if that’s possible.

4 Likes

Just to inform participants, till now we have had two middle finger guys!
At the moment, token allocation (stream+released amount) for each one is

1st guy: 2,053,988 GIV
2nd guy: 295,038 GIV

They have received about 13% of their allocation till now and will receive the rest as stream.

2 Likes

This is a very good analysis @bobsledder23!

I would seriously consider using some kind of amalgamated position, some simplified staking model that would allow more predictable reward distribution, and would be more accessible to GIV holders.

gm frens

@bobsledder23 thanks for that comment! it’s a great analysis of the situation. Some responses:

It’s true that concentrated liquidity provides a buffer against price fluctuations, but right now the rewards are honestly overinflated. When setting up the univ3 rewards program, we assumed than rewards were distributed evenly to everyone with NFTs in range, but learned that it’s not the case. Right now, one-tick liquidity earns 12,500% APR. Full range NFTs earn only 18.71% APR. You can see these APRs in real time by mousing over the :gift_heart: on the univ3 card.

Our “middle finger” friend is earning the majority of rewards, then just dumping the GIV earned wherever possible. It’s true that he does end up putting in GIV & ETH and sometimes ends up with a fully GIV position… but then he just sells for ETH again. He’s exploiting our rewards program, at the expense of the GIVeconomy, and other value-aligned stakers.

Creating a “abusers” list is not a viable option, because it’s easy for someone just to create a new wallet - this would require us to do a bunch more monitoring, and I don’t think is a long-term solution.

Based on our discussion in the governance call, I think the best solution is to shut off the univ3 rewards, and create an alternative solution shortly thereafter. Process like this:

  1. Communicate to our users that we’re shutting it off (and why) and ask them to claim rewards - set a cut off date
  2. At cut off date, take a snapshot of current stakers & rewards earned
  3. Shut off rewards program
  4. Distribute any unclaimed rewards to users (via GIVbacks perhaps, to make things easy)

I think we should absolutely start with this because:

  • it solves the issue of us being attacked
  • it prevents continuous similar attacks
  • it’s much cleaner than changing the rewards
  • it leaves space for us to decide on some replacement

We can decide if we want to start new incentives (with drastically lower rewards) or not. We can consider alternative solutions to get univ3 liquidity like the Angel Vault described by Willy.

The conversation on what to do next (after shutting off rewards) can continue, but I think for now we should act quickly and turn it off. What do you think? Looking for soft consensus:

Should we go ahead with shutting off univ3 rewards program?

  • Yes
  • No, let’s keep discussing
  • Abstain

0 voters

4 Likes

9 votes: 8 yeses and one abstain! Sounds like we have soft consensus.

Let’s ratify this with a snapshot vote

If it passes, next steps will be:

  • Communicate to users that we are cutting them off on March 21 and they should claim before we do that
  • Make all the dev work happen to set up taking the snapshot of everyone who still has pending rewards
  • Take snapshot
  • Shut off rewards
  • Distribute unclaimed rewards

Hey! I see the majority is very much for shutting it off. Anyway I’ll try to offer a different perspective.

For me it’s purely a problem of information asymmetry.

I was one of the first LPs in this pool, and I was informed by someone from Giveth that the rewards are being given proportional to the size of LP position as long as this position is in range. I’ve even tried to kind of exploit it, by creating position with very wide range (I’ve disclosed it as a potential weakness). After some time I found out that I’m not getting anything even close to APR advertised and I gave up. Also I learned that maintaining Uniswap position is not an easy feat, adding back rewards consumes lot of gas.

Now I see that the rewards are assigned not to whole range, but only to the liquidity which is in a current tick. I think this is a good thing, consistent with whole Uniswap v3 philosophy.

The problem is, there’s only 2 LPs in this range. From my perspective the root of the problem is that in general nobody knows of 5 digit APY that can be made by offering highly concentrated liquidity. It was not visible on the website for many weeks. Now it’s better displayed, although I’d rather put like “10000% - 18%” and then in a hovering tooltip explain that it depends on how concentrated your position is. I’m pretty sure that more LPs will jump in and GIV will be distributed to more ppl while we still will keep the benefits that concentrated liquidity gives us all.

1 Like

Well this one user is providing between 5 ETH & 15 ETH, raking in 10,000% APR… it’s quite a lot of liquidity. According to our dashboard the total liquidity in that pool is about 220 ETH. That one person has a pretty big chunk of it.

When we set up the rewards pool, we had (incorrectly) assumed that the rewards were distributed to everyone with in range liquidity according to the amount of liquidity provided… so we decided the amount of rewards to send out every 2 weeks based on that. Since having learned about this concentrated liquidity… I think it just become clear that our rewards are way too high to be sustainable for this one pool. they are great and working as expected for all the other non-v3 pools on mainnet & xDai.

I think that, considering mainnet gas, for many small LPs, it’s not very worthwhile to be frequently adjusting the range in order to maximize the rewards… and with the existence of this exploitative whale… this person could also push the price out of range of others & then make a huge LP and chew up all the rewards on another tick.

We are considering the possibility or starting a new univ3 rewards program (after turning off this one) with much lower rewards which would make any future univ3 pool less attractive to exploit.

1 Like

Well, there are several issues. One is that I was always wondering why 0.3% and not 1% pool was used or even why Uniswap v3 was used at all. Other is why (correct me if I’m wrong) much more GIV is distributed via Uniswap v3 rewards than via eg. Balancer pool.

But regarding “one user”* problem, I’m 100% sure that it will resolve itself if more people will know about APR in this pool. I learned this first hand from Balancer pool. It had 3000% APR or more when I jumped in, now it’s 600% or so. And I was looking at Uniswap pool, sensing that there’s something going on given that APR is now gone from the website, but were too lazy to actually give it a shot. Someone took the risk and was rewarded.

I’m not sure if the “pushing the price of range” scenario is actually beneficial for whale (considering costs).

In my opinion the “worst case” scenario when things are left where they’re now (+ creating some buzz around this staking option) is that there will be several (7? 15? 30?) whales competing with each other.

*) Looks like there’s more than 1 LP in this pool and APR is no longer 10K%.

2 Likes

There were a lot of limitations with the rewards for univ3 in comparison to the rewards for other pools. We actually set the amount of rewards that goes out to for all pools change every 2 weeks. You can see the rewards distribution for each week (overall) in our docs.

For the balancer pool, and all the other pools, we set the rewards to follow a “wave”. They start higher, go down a little gradually, then go up again near the end of the program (June 2022). For univ3, we had to set the rate of rewards to be constant through the entire duration of the program (it doesn’t change every 2 weeks). We also had to allocate the largest amount of rewards to this pool to make the APRs similar to other pools at the beginning.

This is why it seems like there is more liquidity in balancer, when actually there is almost triple in univ3 right now.

Anyway, I do see what you are saying. Looks like the max APR today is only 3700% on univ3. If you mouse over the " :gift_heart: " you can see the max/min/avg APRs.

That’s all just more info to give more context :slight_smile:

Anyway… whether or not we end up with whales competing to push each other out (which actually, I do this is a possible scenario because that has been happening for weeks w/our middle finger battle)… the main issue is that because univ3 is so complicated, expert liquidity providers will succeed in making the most rewards, at the expense of normal users.

We want our community, including average users, to be able to provide liquidity and be rewarded for supporting the economy, and the reality is that they will be out-competed by experts. If we wanted to give big rewards to expert liquidity providers, we could allocate a fund of GIV and reach out to them directly, rather than leaving this situation open where normal users lose out because of the excessive complication.

OK, I was just offering my perspective. I’m not sure there’s a lot of expertise in provide liquidity in this case (I’m bit of an expert on Uniswap v3, wrote some articles about it and started a community researching it). Here the case is simple: you have to provide liquidity in the narrowest range possible (but still in range). It’s much simpler (in my opinion) than majority of DeFi strategies used nowadays. When this + APR amount would be a public info, I expect lot of people joining.

So what I would do (I don’t know if it’s possible), would be lowering rewards for Uniswap pool (I don’t know why it should be 4x more than Balancer) and put the rewards amount on the page, without forcing user to mouse over :gift_heart:

Actually we can see this right now, max APY is 3600%, 3x less than yesterday.

I’m 99% sure that in a few days rewards for Uniswap would be quite similar (possibly higher, but not by much) to rewards on Balancer. Perhaps Uniswap would indeed be more for “whales” (but you certainly don’t have to have 100K or more to participate), but it will give great liquidity for all GIV users.

Canceling this pool will cause, in my opinion, large drop of coin price, caused by whales selling into very low liquidity that exist on mainnet. If this pool was to be phased out, I’d phase out it gradually, lowering allocation every week or so, and at the same time start new “better” pool, which would have allocation increased every week. But again, I’m don’t think Uniswap v3 pool is a bad idea, it just gets too much GIV allocated and it’s performance is hidden from sight.

2 Likes

“We want our community, including average users, to be able to provide liquidity and be rewarded for supporting the economy, and the reality is that they will be out-competed by experts.”

TBH, liquidity providing is in a way fundamentally something that requires expertise and at least basic understanding of how markets work. Sure, we’ve seen LM be used for community distribution in web3 so far and in some cases it has worked due to the immaturity of the market, but i’m not convinced that this is more than a fad and that the primary purpose of LM long term is to rent liquidity and attract LPs to essentially become long-term aligned investors in the protocol (via mechanisms like GIVstream), rather than for community distribution. For community distribution as the goal, use alternative processes to distribute tokens rather than via liquidity. The airdrop and GIVBacks are already other examples of this and should hopefully serve that purpose.

LM should be perceived as a process for incentivizing liquidity, not for community distribution, and tokens should be allocated to LM based on that perspective. Maybe in this case too much was allocated to LM due to the misconception about it being great for community distribution, so we could shift the allocation, but don’t expect LM be great at something it’s not meant for :P. (small caveat - the idea to have a shared LM fund managed by an expert could still be used to democratize the expertise though)

LM should serve the purpose of attracting and retaining liquidity, which is also valuable - perhaps your suggestion to reach out to experts directly instead of via a rewards program could actually make sense, although it seems like the rewards program is actually starting to achieve this anyway in a more permissionless way: the information asymmetry is declining and the pool is becoming a lot more concentrated and GIV is already developing much much stronger sell liquidity.

3 Likes

From the snapshot I see this is basically a done deal, so further discussion is quite pointless. Situation was (mis)characterised as “huge rewards going to one party who is dumping the GIV and hurting the economy”

It’s not “one party” anymore and somehow this “dumping” does not translate into GIV price decrease (on the contrary, GIV appreciated vs ETH a bit during last 30 days). That’s why I call it mischaracterisation.

Now what I expect to happen is LPs withdrawing most of GIV from Uniswap and dumping it into a market that lacks liquidity (because liquidity was withdrawn). Those who wait, will wake up with all their positions converted to GIV, and selling will only accelerate. Other liquidity sources won’t be able to absorb this.

This will really hurt the economy.

From my understanding, we can’t change the way rewards are being distributed by univ3. We couldn’t even set it to change according to some pattern when it started - like we did for the other pools like balancer. The only thing we could do it stop it, and restart with lower rewards.

The plan for what to do after stopping the rewards is not yet set in stone, but we are working on token swaps and other ways of creating DAO-owned liquidity. Because of your experience and interest, it would be really great to have you jump into our governance, GIVeconomy or treasury management calls and offer your opinion.

Today I will create a new forum post regarding what to do after stopping the univ3 rewards. The snapshot vote was a unanimous “yes” and soon to finish… so we will likely go ahead with stopping the rewards.

My whole point is that the reward distribution by Uni v3 is good, totally aligned with whole concept of “concentrated liquidity”, just nobody knows about it. Active LPs will stay silent, it’s not in their best interest to talk loudly about 4 digits APR.

Instead of shutting it down, why not go to /r/ethfinance daily thread, write a comment on this and see what happens.

It’s great that the plans to create alternatives, but in my opinion those alternatives should be introduced in parallel with shutting down existing Uni v3 program, so that there’s no liquidity crisis in the meantime.

I just don’t understand why Uniswap pool has to be shut down completely. If 3800% APR is too high, why not just cut rewards in half. Or reduce to 30% or whatever?

The problem is it isn’t really technically feasible to minimize it slowly :frowning: The reward token “value” could be reduced… but we can’t connect it to the date that people were staking, people harvest when they want and well it would just take A LOT of accounting and development power to do this in any other way than just turning it off and doing a snapshot and making sure everyone gets the rewards they earned.

I would be interested in starting up the program again IF we could limit rewards to people who set ranges to be 10 ticks or more. Otherwise expert Liquidity Providers will be advantaged over the general community and I think attracting more expert/professional LPs creates more downward pressure on the price because the professionals are more likely to sell their rewards where as if community members who want more GIV are able to participate in a “lazy” way they would be more likely to accumulate $GIV

We can restart it with lower rewards… for sure… and maybe that will be what we do… but the first step is to turn it off and make sure we can get everyone who earned rewards the GIV they earned, then we can look at what options we have.

1 Like

I don’t think there will be a liquidity crises, most of the issuance of GIV is on xDai and the liquidity there is strong.

The crises will be coming from our mistake of over rewarding UniV3 if the people playing that game decide to dump.

It might create a short term issue, but leaving this up until we have a replacement exasperates the eventual issue IMO, it’s just putting more GIV into the hands of professional LPs who probably don’t care about the success of Giveth over all.

I think we are better off to take a smaller hit now than a bigger hit later…

2 Likes

I kind of like this idea for dealing with it now… we still have a week of rewards and this could help distribute the rewards more widely…