Summary:
Proposal for a GHO Facilitator which accepts Uniswap V3 NFT (LP positions) as collateral and permits minting and burning GHO tokens when borrowing/repaying and getting liquidated.
Motivation:
Uniswap V3 has a current TVL of $2.83 Billion [1] and growing, most of which is currently illiquid for the liquidity providers. Borrowing/minting GHO against Uniswap V3 LP positions makes the liquidity providers illiquid assets be more liquid, thus bringing deep liquidity to the DeFi ecosystem while also helping AAVE gain significant TVL solving the problem.
Specifications:
According to the GHO technical paper [2], there could be many facilitators participating trustlessly in minting and burning of GHO with their own strategies with the initial facilitator being the AAVE DAO.
The goal is to have a separate facilitator which is responsible for accepting Uniswap V3 NFT as collateral and minting/borrowing GHO against it.
To minimise risk exposure only specific Uniswap LP pairs will be allowed to be supplied, which would be voted from the governance or hardcoded as the assets currently being used to supply in AAVE. The facilitator could have a small bucket capacity of $1M to start off, giving room for experimentation with this model while keeping the protocol stable and safe.
Pricing the V3 LP positions:
Every position on Uniswap V3 is non-fungible and has different pricing which constantly changes based on the range in which liquidity is provided.
It’s important for the pricing to be non-manipulative and simple in order for the model to work. The facilitator will be using chainlink oracles and the periphery contracts of Uniswap to help in calculating the price of the NFT.
token0, token1, tickLower, tickUpper, Liquidity = positionManager.positions(tokenId) [3]
sqrtPriceX96 = pool.slot0() [4]
tick = TickMath.getTickAtSqrtRatio(sqrtPriceX96) [5]
amountA, amountB = LiquidityAmounts.getAmountsForLiquidity(
TickMath.getSqrtRatioAtTick(tick),
TickMath.getSqrtRatioAtTick(tickLower),
TickMath.getSqrtRatioAtTick(tickUpper),
liquidity
); [6]
Using the Uniswap periphery contracts we can fetch the amounts of token0 and token1 which can be then be used to get the total price of the current position in ETH using chainlink oracle, thus giving the accurate price of the position.
The facilitator will depend on external participants for liquidations in case the value of the position (collateral) falls below due to factors such as impermanent loss on the position or the value of assets LP’ed going down.
Conclusion:
This ARC is meant for the community to discuss on the potential integration of UNI V3 into the AAVE ecosystem, there might be some flaws in the model but looking forward at discussing it with the community :)
LFGHO!
[1] GHO Technical Paper
[2] Defillama
[3] Uniswap positions()
[4] Uniswap slot0
[5] Uniswap getsqrtratioattick()
[6] Uniswap getamountsforliquidity()