This week will (hopefully) see the release of Uniswap v3. Let’s take a look at the biggest and most innovative change in this highly anticipated release: Concentrated Liquidity Providing.
Uniswap v3 focuses on improving capital efficiency when compared to v2. To accomplish this, Uniswap has implemented concentrated liquidity ranges to which liquidity providers (LPs) can allocate their assets to custom price ranges. For example, Nearly 99% of all USDC/DAI trades occur in the $0.99-$1.01 range yet in v2, liquidity would be reserved for all prices from $0 – infinity, meaning most of the liquidity in this pair is sitting unused. This change allows LPs to provide their coins where they are most needed and most useful. With v3, an LP can devote 100% of their assets to earning fees in that $0.99-$1.01 range.
For asset pairs with less predictable trading prices, such as the USDC-ETH pool, an LP could concentrate their assets in the $2,750-$3,250 range allowing LPs to earn higher returns on their capital as long as the assets stay in that chosen price range. If the price ratio drops out of the range, by going higher or lower, the LP will stop collecting fees from trades, and their assets will be entirely composed of the less valuable asset until the price re-enters the LPs price range.
So what does this look like in practice, and in terms of returns? Let’s use the above USDC-ETH example of $2,750-$3,250 and $10,000 worth of capital provided within that range. If a user concentrates their $10,000 within that range, they will earn the same amount of fees and perform identically as a user who provided $248,878 in v2. That is a whopping 25x return on capital just for selecting a custom range. The obvious downside is if the price moves out of that range, you won’t be earning any more fees.
Uniswap has even claimed that if an LP provides liquidity within the tightest price range possible, 0.10%, maximum capital efficiency could reach a mind blowing 4,000x return compared to v2. Trading fees collecting within a given price range are split by LPs proportionally to the amount of liquidity they contributed to that range.
Another feature added is the ability to set range orders, allowing you to deposit a single token into a price range above or below the current price and when the price enters your range, the contract sells your token for the other along a smooth curve all while collecting swap fees in the process. When the price goes out on the other end of your range, you could then withdraw your assets entirely in the other token, including fees collected while the price was in that range.
One side effect of this change is that LP tokens are no longer fungible. An ETH/USDC token with a range of $2,750-$3,250 isn’t the same as an ETH/USDC token with a range of $2,250-$2,750 and thus they’ll no longer be represented by ERC20 tokens, but instead will be non fungible ERC721 tokens, commonly known as NFTs.
What are everyone’s thoughts on this coming release?
Edit: In the interest of being fair and balanced. Here is a well written critique of v3 as well.