Consensus Check - Should Uniswap incentivize Liquidity on Optimism and Arbitrum

Uniswap governance should start incentivizing liquidity on its Arbitrum and Optimism deployments to kickstart adoption of Ethereum Layer-2.

If you are not familiar with this proposal and its motivation please read the original temperature check proposal here or scroll to the bottom where I re-posted it.

For the consensus check I want to address some of the most urgent questions that came up in the governance forum and on Twitter.

This proposal strives to achieve two goals:

I. Kickstart L2 adoption by incentivizing users to bridge and shift their activity to L2’s
II. Offering deep liquidity for key pairs on L2

  1. How to execute liquidity mining on Uniswap V3 in a fair manner

Uniswap V3 is incredibly powerful but most liquidity mining programs that run on top of it don’t score well on achieving a key goal of liquidity mining: distributing token ownership in a fair manner to a wide user base.

Consider the Ribbon liquidity mining program pictured below: a single whale provides millions of dollars of liquidity around the spot price on one tick and rakes in all the liquidity mining rewards. This whale has enough funds to pay the gas costs for re-balancing the position every minute and so he stays always closest to the spot price. The closer LP’s range is to the spot price, the more rewards they get.

Even Ribbon founder Julian Koh stated publicly that the liquidity mining experiment was a failure in this regard and the only reason they hadn’t stopped it was that the proposal was irreversible.


The goal of this proposal is to make participation in the liquidity mining program as easy as possible, without users having to constantly re-balance their positions and to distribute $UNI token ownership to as many users as possible. In other words, to give users who weren’t able to participate in earlier liquidity mining schemes on Ethereum mainnet a chance to do it on L2. We should not only optimize for liquidity but also fairness.

To achieve this I suggest modifying the Uni staker contracts to allow for fixed liquidity ranges. Instead of favouring whales who re-balance every minute around the tick, everyone within the prescribed range earns their pro-rata share of $UNI rewards.

For $ETH for example, the range could be $1000/$ETH to $10,000/ETH. We would still get much better liquidity than in Uniswap V2, users wouldn’t need to actively manage their liquidity and professional LP’s would still have the option to actively re-balance their positions to earn more swap fees vs. the “passive” LP’s. We would get the best of both worlds!

I considered suggesting third-party liquidity provision tools like Visor or Gelato but the overwhelming feedback I got was that:

  • Uniswap wouldn’t want to incentivize liquidity on a third-party tool/protocol
  • Third-parties introduce risks/vulnerabilities
  1. Which pairs to incentivize liquidity for and what ranges to choose

To avoid any controversy and tribalism I suggest we keep the proposal as simple and exclude governance tokens of popular DeFi tokens on L2 (e.g SNX on optimism, GMX on arbitrum etc.). Instead, we can stick with the same pairs as the initial liquidity mining program:

ETH/USDT (0.30%) <> $1000/ETH - $10,000/$ETH

ETH/USDC (0.30%) <> $1000/ETH - $10,000/$ETH

ETH/DAI (0.30%) <> $1000/ETH - $10,000/$ETH

WBTC/ETH (0.30%) <> 0.045/ETH - 0.15/ETH

Optional
USDC- DAI (0.01% fee tier) <> 0.9999 <> 1.0001 (very successful on L1)
Swap out ETH/USDT for LUSD or sUSD to strengthen decentralized stablecoins

  1. How much $UNI to allocate and for how long should the rewards run
    I suggest a liquidity mining period of 3 months - long enough to make it worthwhile for users to bridge to L2’s and short enough to adjust in case of major changes in the crypto landscape changes (e.g incorporate zk-Rollups in next LM program).

To calculate rewards and APR we should target a specific level of liquidity in the pools. One suggestion would be to target similar liquidity for each pair than on Ethereum mainnet. Liquidity parity between L2 and L1!

Formula: TargetPoolSize * TargetAPR * RewardYears / UniPrice

For example, for USDC the target pool size would be( $250m * 0.10 * 0.25)/ $20 = 321,500 $UNI

ETH/USDC = 321,500 $UNI
ETH/DAI = = 43,750
ETH/USDT = 68,750
ETH/WBTC = 150,000 $UNI
DAI/USDC = 200,000 $UNI

*2 to have this liquidity on both networks

SUM = 1,567,000 $UNI

  1. How to execute the proposal
    Since the Uniswap governance is on Ethereum mainnet and not on Layer-2 we need to figure out how to execute the proposal.

After consulting with @t11s I suggest two options:

  1. Setup a one time spell that transfers UNI to a contract with only one purpose on L2 ( i.e send funds to the liquidity mining distributor)

  2. set-up a multisig of prominent delegates on each L2 that receives the UNI and seeds the liquidity mining distributor

I hope this proposal satisfies the Uniswap community. I am looking forward to receiving your feedback and kickstart Layer-2 adoption!

Link to temperature check governance forum post: Temperature Check - Should Uniswap incentivize Liquidity on Optimism and Arbitrum?

Link to snapshot poll: https://snapshot.org/#/uniswap/proposal/0xc1aec11c9ac5698920072a5de807284a56becbadfb7bef68b2618ad00e61547c


Uniswap governance should start incentivizing liquidity on its Arbitrum and Optimism deployments to kickstart adoption of Ethereum Layer-2 and prove that its decision to bet on Optimistic Rollups was the right one.

It’s unfortunately a fact that the Ethereum mainnet has become unusable for normal users. As a result, many of the crypto newcomers trying DeFi for the first time are not being on-boarded on Ethereum anymore but on EVM chains like Fantom, Avalanche or other L1’s altogether such as Solana.

The adoption of Layer-2 networks thus far has been promising but too slow considering the competitive landscape.

Three main blockers exist:

  1. Missing Incentives
    Networks like Avalanche, Celo and Near are spending hundreds of millions of dollars to attract developers and users. Without a token, rollups can’t revert to the same strategy. On the other hand, a lot of the Ethereum native DeFi protocols sit on billion dollar treasuries that are waiting to be deployed for productive purposes.

  2. Missing fiat on-ramps

Without direct on-ramps onto Layer-2 networks users face high barriers before they can enjoy the benefits of these networks. These users have no other choice but to withdraw from a CEX to Ethereum to then bridge up from Ethereum to the promised land of Layer-2. On a day where fees on Ethereum mainnet are high, a user starting with $200 easily loses half of their portfolio.

  1. Slow application migration to Layer-2’s
    Perhaps the most surprising is how slow some protocols are to deploy on Layer-2’s. This can partly be attributed to composability effects, where applications relying on other protocols to exist need to wait on their partner protocol to deploy first (e.g Ribbon → Opyn, DeFi Saver → Aave etc.). But to a large extent applications seem to take their time because the growth statistics (volumes, tvl, unique users etc.) are simply not compelling enough.

This is a typical chicken-egg problem where every party involved stands still until the other moves. Users are waiting for subsidies and more applications to use, centralized exchanges and application developers on the other hand are waiting to see user adoption first to justify the integration efforts.

Uniswap is in a unique position to kickstart growth by launching a liquidity mining campaign on Layer-2. For one, it sits on a $11 billion dollar treasury (!!) that is currently being underutilized. Secondly, as one of the most essential money legos in the DeFi ecosystem the move would have a strong signalling power and trigger more applications to follow suit and invest resources into deploying on Layer-2. Third, the resulting liquidity and yields would set into motion a large-scale migration of users which in return has spillover effects on other factors (CEX on-ramps, devs deploying etc.) .

Per Uniswap governance guidelines this forum post is merely a temperature check. Details such as the amount of rewards or the length of the liquidity mining program are better left for the Consensus check. In order to move to the next stage, this proposal needs a majority yes with a min. threshold of 25k $UNI on Snapshot.

13 Likes

I am fully supporting modifying the staking contract so that only fixed ranges are rewarded.

However, enforcing fixed ranges is too limiting and may cause issues down the line (read my previous post discussing this here). Here’s why:

  • First, even if 1000-10,000 look reasonable now, there is still a ~9% chance that the price will end either above 10,000 or below 1,000 after 3 months. What happens after ETH goes up by 3x and the incentivized liquidity dries up? Most liquidity will not be used, pool volume will drop, and LPs will not collect rewards.

  • Second, the current (1000, 10000) range is centered around sqrt(1000*10000) = 3162, meaning that users will have to deploy ~1.7x more stablecoin than ETH in absolute value when entering the position at the current price. That could cause problems because users would need to transfer 2 assets to L2 just to be able to participate.

  • Third, the proposed range of (1000, 10000) may be too large. While (1000, 10000) is still ~2.3x more capital efficient than Uni v2, it “splits” the liquidity into 384 ticks and is thus 384x less capital efficient than 1-tick liquidity. Users may feel shortchanged by being forced to use very low yield positions.

  • Finally, enforcing a fixed liquidity range may be counterproductive for many LPs. Users may still want to be more directional when providing liquidity or may want to re-adjust after large price moves, keeping a wide but fixed range prevents that from happening.

I suggest that the staker contract only rewards LP positions that are in range AND above a specific width (ie. upperTick - lowerTick > minWidth). In other words, allow users to choose the upper/lower bounds but limit the range to prevent 1-tickers.

The value of minWidth could still be capped at the 1sd expected move for 3 months (about +/- 33%) or whatever the governance votes on.

Providing liquidity in Uni v3 should not be a “set it and forget it” strategy, nor should it be a “rebalance every minute” strategy either. Overall, implementing a minWidth criteria will allow users to be rewarded in a manner that is directly proportional to their amount at stake as long as their position is “active” while allowing them to be strategic in their LPing.

What you may not want to see happening is users “forgetting” about their liquidity and end up with pools with large TVLs but barely any liquidity at the current tick.

Example, the ETH-MKR-0.3% pool:

Also, speaking of Maker, has UNI governance thought about minting Dai against their billion dollar treasury and deploy it to DAI-UNI pools on Layer 2? That would be one way to solve the stablecoin bottleneck on L2s and help provide some utility to the UNI token on layer 2 (or on Mainnet).

7 Likes

Amazing write up Lito your work is greatly appreciated by myself and I’m sure the rest of the community as well.

My only suggestion would be to exclude sUSD as an option because it’s not fungible with L2 sUSD currently. I love the decentralized stablecoin shout out, but we need more infrastructure in place before sUSD can be used across multiple layer2’s.

On the other hand, LUSD is a great option for this proposal since it’s fully backed by ETH and governance minimalized!

Unfortunately gas prices on L1 have made opening new troves to borrow LUSD extremely expensive and unfeasible for many smaller users, however these smaller users may still appreciate the decentralization and security of stablecoins like LUSD (particularly the users who choose Arbitrum or Optimism over other EVM L1s like BSC or AVAX) and they should be considered in a proposal like this one. Tether will surely make it’s way to every L1 and L2 imaginable and there is no need for bootstrapping it with a community treasury like Uniswap’s. A stablecoin like LUSD in this case would really benefit from community lead incentives given that it’s governance minimalized and relies on ecosystem integrations to scale adoption.

I feel like including LUSD in this proposal instead of Tether is a perfect opportunity for the Uniswap and larger Ethereum community to hit two birds with one stone; Incentivize Layer 2 adoption and make secure stablecoins that are culturally aligned with ETH users available on Optimism and Arbitrum.

Thank you again Lito for creating this proposal and including LUSD as an option, I only hope the Uniswap community will make the right choice here and approve the use of a decentralized stablecoin over something like Tether so we can bring an ETH L1 native product to L2!

Overall I feel like Ethereum and Uniswap users are culturally aligned with stablecoins like LUSD and RAI and we should begin including them in all L2 incentive programs to remove dependancies on centralized stablecoins like Tether and create a decentralized feedback loop for the Ethereum ecosystem. After all what’s the point of using the security of Ethereum Layer2’s if we are going to rely on strictly centralized products? :wink:

cheers everyone :clinking_glasses:

18 Likes

A few issues I see:

  1. Changing the stake contract seems risky. Can you evaluate how much changes are needed and if it needs audit?

  2. Who are the delegates on each L2? Why is optimism and arbitrum not proposing/ structuring a liquidity program for UNI governance to vote on? As this directly benefits those ecosystems.

  3. Is this proposal still needed since polygon is working towards a Uniswap liquidity program on their L2? Users can more easily go from polygon to optimism and arbitrum.

  4. You state an issue with large whales taking advantage of single tick, but this would also happen with a spread range. We saw these same pairs taken advantage of on the Uniswap V2 liquidity program.

  5. Why not take advantage of a bonding program? Doesn’t hop protocol do this?

  6. The liquidity pairs should have more ethereum beneficial programs.

For example:

Rai (reflexer labs): moving away from USDC fork risks

RETH (rocket pool Ethereum): decentralized ethereum staking, intrest-bearing ethereum, client diversification

sUSD: synthetic ecosystem

I would like to emphasis point 2, if we are to fund 20+ million USD of UNI; optimism and arbitrum should step up and find a unique liquidity structure that is mutually beneficial. I.e. look at how polygon structured it’s proposal.

Instead of a relaunch of the same expensive v2 Uniswap liquidity program. Lets do something better… maybe a liquidity program that also helps Uniswap v3 oracles?

3 Likes

Many thanks @litocoen for this proposal - much appreciated! :pray:t2: :blush: Combined with @Milli3E‘s suggestion to consider / include LUSD as the most decentralized stablecoin, it‘s a wholehearted YES! :raised_hands:t2:

1 Like

Thanks for posting this @litocoen - excellent work as always.

For the order ranges - @guil-lambert your approach makes a ton of sense to me. I’ve struggled with the design of incentives for v3 ranges for volatile assets. Without a third party, the best option seems to be constant adjustment (which can be very gassy for each NFT on mainnet but will be much cheaper on L2). If @guil-lambert’s approach is technically infeasible, perhaps we could approve the 3 month incentive pool but set the reward ranges on a monthly basis (3 times throughout the reward period) to target a relevant range for each monthly period.

I fully support the idea of adding alternative stablecoins to this incentive pool, however I think that we should incentivize stablecoins that are actually having an impact on Uniswap. Unless I’m missing something, LUSD has $2m of liquidity on Univ3 (TVL) and even less on v2. sUSD has $4.7m of liquidity (TVL) on v3. Both are great projects but neither seem to be heavily invested in Uniswap at the moment. I’d love to see both projects have huge Uniswap pools on Optimism and Arbitrum but I don’t see why we should incentivize them over projects that have already invested in V3. For example, this might be a narrative violation but FRAX looks pretty obvious as the next stablecoin to add beyond USDC, USDT and DAI. It’s the #6 token on v3 by liquidity (after ETH, USDC, WBTC, DAI and USDT) with over $100m TVL. FRAX-USDC is the #4 pair on v3 (DAI/USDC is #7). FRAX is 2x as large as the next closest stablecoin on v3 (Paxos) and 3x the next DeFi stablecoin (FEI) and also the largest sUSD pair asset.

FEI is also heavily invested in Uniswap with solid TVL and volume. It makes a lot more sense to me to incentivize these projects as a reward for their investment in Uniswap rather than arbitrarily bootstrap other projects. Both are crypto native projects with strong communities. The tricky part of adding these stablecoins is what pairs do we select and how do we prevent this from getting overly complicated. The obvious pairs from a TVL and volume perspective would be USDC/FRAX and USDC/FEI (or ETH pairs). An alternate approach would be to add a FRAX/FEI pair for incentives, which would drive both FRAX and FEI to invest in ETH, USDC and DAI uniswap pairs (so that they can route orders through all those assets). This might be the most bang for our buck approach - I’m confident we could get both projects to build out the other pairs. So by seeding FRAX-FEI, we could get FRAX/ETH, FRAX/USDC, FRAX/DAI and FEI/ETH, FEI/USDC and FEI/DAI for the same price. I’d be happy to reach out to both communities to get them involved if there is traction for this idea (I expect both would commit in this forum thread to building out those pairs). Big picture - we should add another crypto native stablecoin or two to the incentives. I’d love to hear feedback on how best to do it.

Overall, this is an important proposal for Uniswap but also helpful for the Ethereum community in general. Layer 2 has taken longer than anticipated; the average consumer now has many options and they may not know or care about the differences. Many of us within this community believe that Ethereum and L2 are the future but we also need to take steps to help realize this future. This proposal helps kick things off. Let’s not take anything for granted going forward.

2 Likes

Unless I’m missing something, LUSD has $2m of liquidity on Univ3 (TVL) and even less on v2

so the reason LUSD has little liquidity on Uniswap is because it’s a governance minimalized stablecoin meaning there is no mechanism by which the LUSD community can incentivize users to hold or use LUSD, unlike FRAX which has a governance model that can incentivize liquidity. FRAX is great as a stable value coin but it’s trust assumptions are nothing like LUSD.

LUSD is only ETH backed and always redeemable for $1 ETH

FRAX is partially backed by USDC and partially backed by FXS

3 Likes

Very excited to see the L2 incentives at the consensus check stage!

Would it be simplier to impliment this proposal as a “full-range liquidity providing that emulates the v2 uniswap experience”? If so, does this also remove the trust assumptions with the L2 multisig’s?

Reasoning for rewarding full-range is it will remove the confusion around setting ranges for newer users. Full range also encourages long term passive liquidity providers and will attract v2 uniswap liquidity providers who have not switched to v3.

The ask amount of 1,567,000 UNI seems reasonable to me for the stated goals.

2 Likes

I find this suggestion very clever thanks @guil-lambert!

I would have no objection against implementing the liquidity mining program this way.

1 Like

Reasoning for rewarding full-range is it will remove the confusion around setting ranges for newer users. Full range also encourages long term passive liquidity providers and will attract v2 uniswap liquidity providers who have not switched to v3.

Full range liquidity is obscenely inefficient --as is Uni v2 for that matter ;).

The Full Range option in Uniswap v3 splits the liquidity equally between all 1,774,544 ticks between MIN_TICK and MAX_TICK. In other words, it covers all possible prices from 3e-39 to 3e+38. That means capital efficiency will be >170,000 less than single-tick liquidity for the 0.05% pools.

I proposed in another post that liquidity mining should incentivize a capital efficiency of at least 2x over UniV2/sushiswap.

Recall that capital efficiency for a range [Pa, Pb] can be calculated as follows:

C.E. = 1/(1-(Pa/Pb)^0.25)

So when Pa/Pb = 1/16, the capital efficiency is 2. This corresponds to a range [K/16, K*16], where K is the midpoint of the position K=sqrt(Pa * Pb). So the range would be [300, 76000] assuming a starting price of K=4750.

Since most assets won’t 16x in either direction in 3 months, the C.E. = 2 may be too large.

The 3 months expected move is +/-33% assuming a ~66% annualized volatility, which corresponds to a capital efficiency of 7.5x over UniV2 (nice!). The exact range could be adjusted: for example the one-month expected range would be +/-19% with a 12x increase in capital efficiency, etc.

The expected move calculation predicts that the asset should remain within the prescribed range about 68% of the time. So the price will end up outside that range after 3 months about 32% of the time. This will require a rebalancing event from the LPs, but that’s probably OK because gas on L2 is much cheaper.

And to prevent all liquidity from becoming out-the-money at the same time, users should be to choose any midpoint K they wish.

Here are some choices for users deploying to the 2 ETH worth of liquidity to the ETH-Dai-0.05% pool at +/- 33% range:

  1. Neutral position: Deploy with K = 4750 and lock 1 ETH + 4750 Dai between [3571, 6317]
  2. Bullish position: Use K = 6317 and lock 2 ETH between [4750, 8402]
  3. Bearish position: Use K = 3571 and lock 7142 Dai between [2685, 4750]
  4. Neutral-to-Bullish: Use K = 5500 and lock 1.5 ETH + 2425 Dai between [4135, 7315]

The liquidity mining rewards will be distributed equally to all those participants as long as the price is within their prescribed range.

Overall, that would still allow users some agency in how they manage their capital while still preventing LPs with ultra-narrow ranges to collect all the LM rewards.

At the end of the day, rewards will be proportional to the deployed liquidity for the minTickers. Everyone’s happy, except maybe the 1-tickers, but they will still collect a large fraction of the fees on their ultra-concentrated positions.

1 Like

These look like great thorough write-ups!

Are the recent “Just in Time” liquidity attacks going to be gameable with the discussed implementations?

1 Like

Blockchain@Columbia directionally agrees with this proposal to incentivize L2 usage as we think it’s important for Uniswap to be a major L2 player, but think that we should proceed with caution around changing the Uni staker contracts as not only could this potentially introduce an attack vector for the protocol, but also think that these changes to the protocol shy away from the Uni v3 goal of capital efficiency.

think that we should proceed with caution around changing the Uni staker contracts as not only could this potentially introduce an attack vector for the protocol

It may be straightforward to change the existing staking contract to enable minimum ranges for liquidity mining, plus it should be easy to audit as it is <10 lines of code:

2 Likes

I agree that Optimism and Arbiturm should also launch corresponding incentive plans.

so, now ? nest steps ?

If we do liquidity mining incentive, I think we should also turn on the fee switch at the same time at least to offsetting some of the UNI price downward pressure.

2 Likes

I agree that we should turn on the liquidity mining and cost switches simultaneously ~ this can ensure the spiral rise of uni price and drive more funds to enter uni mining, which is beneficial to ecological development.

1 Like

Great post and proposal!

We’ve implemented @guil-lambert 's approach in modifying the staking contract with a minWidth parameter added to the IncentiveKey struct. All tests are passing and added a few additional tests accounting for the new param.

https://github.com/overlay-market/v3-staker/tree/tick-bounds

Would it be helpful to create a PR for this into main branch? Additionally, out of curiosity, does anyone know who audited the v3-staking contracts? Would be keen on getting this audited!

1 Like