Cover photo

A new incentivization mechanism for Uniswap V3 liquidity

Liquidity providers on Uniswap V3 do not get an ERC-20 when providing liquidity but rather an ERC-721 token which makes it harder for protocols to incentivize liquidity. In this article, we explain how Angle recently came up with a solution to efficiently incentivize liquidity while leaving Liquidity Providers a maximum flexibility in terms of how they provide their liquidity.

Introduction

Since the protocol launch in November 2021, Angle has been incentivizing agEUR liquidity on exchanges with ANGLE rewards. The biggest pools on Uniswap V3 are notably agEUR-USDC and agEUR-ETH.

While we used for a long time an incentivization system based on Gelato/Arrakis, following this governance discussion and vote, we recently switched to a new system.

In this post, we present the issues we faced with the original incentives mechanism, the solutions and trade-offs the new system brings, and how it is valuable for the protocol and LPs.

Problems with the old system

While this makes incentivization super convenient (you can use traditional staking contracts to reward ERC-20 liquidity), this does not make the most out of Uniswap V3 and comes with several issues: incentivization of idle liquidity, no custom range management, dependency on centralized wrappers.

Inactive liquidity being incentivized

The main goal of governance tokens emissions is to reward users for their useful participation in the protocol. In Angle’s case, distributing ANGLE should reward users who hold agEUR and provide liquidity on the token, as it grows Angle TVL and improves the robustness and the peg of the stablecoin.

One issue with UniV3 positions is that they can move out of range, in which case the liquidity in the position becomes inactive. As long as this liquidity remains out of range, it can’t be used to trade and doesn’t help Angle or the token in any way. In some cases, these positions have been receiving governance tokens incentives while bringing 0 liquidity whatsoever to the token, actually wasting governance tokens.

As UniV3 positions are NFTs, there were no easy way to stake and reward them. Therefore, the traditional DeFi incentives mechanism until now has been to wrap UniV3 positions over the same ranges into ERC20, and reward them the old way.

For example, if we had stick with this solution for our agEUR-USDC pool, we would have been periodically incentivizing LPs providing 0 useful liquidity.

Limited choices for LPs

A second and more fundamental issue is that with the classic staking system, we’re considerably reducing the possibilities offered by Uniswap V3. Uniswap V3 is a universal AMM, and the possibilities as an LP are endless. By requiring a specific range from LPs to wrap their tokens and receive incentives, we’re reducing the possibilities of UniswapV3 and making LPing significantly less attractive or capital-efficient.

Summary of the issues with incentivizing UniV3 positions through ERC20 wrappers:

  1. Waste token incentives when position is out of range

  2. Limits choices for LPs

  3. Prevent the capital-efficiency of Uniswap V3 concentrated liquidity

Uniswap V3 allows to have power users and professional hedge funds managing their positions as they wish and still be rewarded for their utility. Ideally, we need a system that allows to benefit from this flexibility: the best and only way to do this is to move the rewards computation off chain. This is the system we implemented and that we present below.

Solution

Our solution was designed to maximize the efficiency of the governance token distribution. In our case, this translates to incentivizing the most useful liquidity on agEUR positions, increasing peg (capital-efficiency), and TVL.

How does it work in practice?

A script looks into each pool directly, and sees which addresses held the liquidity as well as the amount agEUR in the position at each swap. Practically speaking, a "reward" is computed from every swap for each address with in range liquidity based on the following parameters:

  • The share of fees earned by the LP, telling us the virtual liquidity provided

  • The share of agEUR they hold compared to the total pool size

  • The share of the other token they hold compared to the total pool size

These parameters are then adjusted by a boost according to the veANGLE balance of the LP. The exact formula applied to each swap happening on a pool is:

$$ [0.4 \times (\texttt{fees earned by the position / fees earned by the pool)}

  • 0.4 \times \texttt{(agEUR in the position / agEUR in the pool)}

  • 0.2 \times \texttt{(other token in the position / other token in the pool)}] \times \texttt{veANGLE boost} $$

Note that this allows us to eliminate inactive liquidity from the rewards distribution altogether such that out-of-range liquidity cannot receive rewards. This granular computation for each swap is something that can easily be done off-chain.

At the end of each week, rewards are added, normalized and an ANGLE reward amount is computed for each address. Then, a merkle root of the distribution is published on-chain, allowing LPs to claim their tokens from a contract as usual.

As this solution looks at the addresses holding the pool liquidity directly, any UniV3 wrapper can be plugged on-top of this system, and profit from the improved distribution while managing the position for its users, like Gamma does. Thanks to this, LPs now have the possibility, but not the obligation, to have their positions manage by third parties. On the other side, if the third-party leaves its users positions out of range, Angle won’t incentivize this liquidity. Because of this, we would advise LP to carefully choose their UniV3 liquidity position managers and see how they plan on rebalancing the liquidity.

Off-chain rewards computation

What is being computed off-chain is the distribution of tokens between a specific pool LPs. The quantity of tokens distributed to the different pools is still decided on-chain by veANGLE holders.Though this introduces some trust in the process, we believe it is a worthy price to pay for a big improvement in the rewards distribution of the protocol. Additionally, the script used for the weekly distribution computations has been published publicly here.

Summary of the benefits

For Angle:

  • No incentives wasted on idle liquidity

  • Incentives distributed according to liquidity provided and quantity of agEUR in the pool

  • LPs can choose their range, allowing for more diversified liquidity for the token

For LPs:

  • They can choose the range on which they provide liquidity, giving them more flexibility

  • They can choose to optimize between fees and ANGLE rewards

  • Any UniV3 position manager can now be integrated, giving more choices to LPs with the latest integration being Gamma.xyz

What do I need to do if I’m currently providing liquidity?

If you are an individual LP not relying on any liquidity manager, you are now eligible to receive ANGLE rewards as long as your liquidity is in-range!

If you were providing liquidity through Arrakis/Gelato by staking G-Uni tokens on Angle, you will keep receiving rewards according to the new formula shown above if the range from Arrakis is including the current price. If it isn’t, then your position won’t be accruing any ANGLE rewards.

In this case, you can now provide liquidity yourself directly, or choose another UniV3 liquidity manager like Gamma.

All available ANGLE rewards can be claimed directly from the Angle App, or the the MerkleRoot Distributor contract directly. The distribution of rewards from the past week are updated directly to this contract every Thursday at 4am CET.

Conclusion

Up until now, there was no ideal solution to incentivize Uniswap V3 liquidity in an efficient way. We believe this solution makes the necessary trade-offs to let most protocols incentivize Uniswap V3 pools in much more efficient ways.

In general, we hope this solution is a first step forward in the generalization of more elaborated Uniswap V3 strategies, that could be incentivized as well.

If you are a DAO losing on Uniswap V3 efficiency because of a similar situation or a user looking to provide agEUR liquidity, feel free to reach out in our Discord and we will be happy to give you a hand!

Loading...
highlight
Collect this post to permanently own it.
Angle Protocol | Learn About Stablecoins logo
Subscribe to Angle Protocol | Learn About Stablecoins and never miss a post.
#defi#angle#pools