At the core of Futureswap V4, LPs offer loans to traders that allow them to swap asset for stable (short) or stable for asset (long) in pre-existing Uniswap v3 pools. Futureswap uses two primary forms of liquidity:
- 1.Futureswap's own liquidity
- 2.Uniswap v3's liquidity
This section will only be talking about Futureswap's own liquidity. There is already quality information out there about Uniswap liquidity providing.
Futureswap does need its own liquidity, but the amount required is a mere fraction of what other exchanges need since the Futureswap liquidity can be leveraged up significantly. Currently on L1 Uniswap v3, the ETH/USDC (0.05% fee) pool has $110m of concentrated liquidity. Futureswap can launch with this as one of the liquidity pools and instantly have $110m of market depth for traders. Futureswap needs its own liquidity but even $1m would be able to facilitate trading on a liquidity pool of $110m. This would make the maximum capital efficiency of Futureswap 110x.
Liquidity pools have a combination of two tokens. These tokens are whatever the exchange is denominated in. An ETH/USDC exchange will require equal value amounts of ETH and USDC deposited by a liquidity provider.
Due to price movements of the underlying assets, the internal liquidity pool may become unbalanced. For example, if ETH appreciated by +50%, then there would be more ETH value in the Futureswap liquidity pool than there would be USDC. When a new LP deposits after the appreciation, they would deposit equal value amounts at the current market price, but they would then own the ratio that the liquidity pool is at, rather than the ratio that they deposited. This also acts as a balancing mechanism for the Futureswap liquidity pool.
- If ETH was at $100 and the liquidity pool had 10 ETH and 1,000 USDC:
- There are equal value amounts currently in the pool: $1,000 of ETH and $1,000 of USDC.
- If a new LP came in, they would deposit equal value amounts and their ownership after deposit would still be equal value amounts.
- Now if ETH appreciated to $200, there would be $2,000 of ETH and only $1,000 of USDC.
- If a new LP came in, they would deposit equal value amounts of ETH and USDC based on the $200 ETH price. They would be balancing the pool, as they would own more ETH and less USDC after deposit:
- If they deposited $2,000 of ETH and $2,000 of USDC, they would own (2,000 + 2,000) / (2,000 + 1,000 + 2,000 + 2,000) = ~57.14% of the pool's liquidity.
- Now if they withdrew, they would receive back $2,285.6 of ETH and $1,714.2 of USDC.
- Combined this equals the $4,000 (less rounding errors) that they initially deposited, but due to them balancing some part of the pool, they now have more ETH and less USDC.
When depositing liquidity, the value amounts being deposited are determined based on an on-chain oracle. It must be assumed that the oracle will be delayed in some periods. If the oracle is lagging the actual market price for the asset, there would be a profitable arbitrage to deposit liquidity when the pool is imbalanced to effectively buy or sell the asset at the delayed oracle price.
There are two deterrents to ensure this is not a profitable strategy:
- 1.Withdrawal fee
- 2.Minimum liquidity providing time of 3 days
When withdrawing liquidity, a configurable fee initially set to 0.3% will be taken from the proceeds of the withdrawal and given to the remaining liquidity providers. This is to remove any potential profitable strategy of depositing and removing when the on-chain oracle is delayed along with incentivizing long-term liquidity.
Liquidity has a 3-day delay from the time of requesting the withdrawal. The first step is to send a "start withdrawal" transaction. Then after a minimum of 3 days (72 hours), the final transaction to execute the withdraw can occur. If a user has a withdrawal request, but has not withdrawn yet and adds more liquidity, it will reset the withdrawal time.