PTIP-61: Provide Single-Sided Liquidity to Uniswap V3

Summary

The market cap of PoolTogether has now dipped below the value held by the protocol’s treasury. This presents a security risk as the POOL token controls the treasury. This proposal will open an extremely broad single-sided POOL/USDC position on Uniswap V3 to provide sufficient liquidity to protect the protocol.

Motivation

The market cap of PoolTogether has now dropped below the value of the treasury, which is a major security risk. Malicious actors could accrue tokens then take control of the treasury at a profit. To maximize security, the protocol should provide POOL liquidity to ensure the market cap exceeds the treasury.

Specification

Overview

This proposal will create a Uniswap V3 position with the following parameters:

600k POOL
Price Range: ~$2 - $55

Rationale

The position will be (mostly) single-sided, in that we are just providing POOL tokens. Depending on the current market price, we may have to provide some USDC.

600k POOL will be provided to the market, which is more than triple the current POOL held by the POOL/ETH pair on Uniswap V2.

The price will range from our all-time-low to our all-time-high to reflect the full range of the market. The token price of $2 puts the market cap at approximately the value of the treasury, so it serves as a good starting point.

Technical Specification

TBD

Poll

  • Yes
  • No

0 voters

4 Likes

Security is the most important factor here. I trust you a lot on this matter, and seeing you bring it up so urgently is an indicator for me that we should get this sorted asap. I vote yes.

1 Like

I’d like to preface this post by saying I understand very little about Uniswap V3. Because there is not much in terms of specifics here in cost or outcomes I do not feel comfortable voting on this PTIP. I am alarmed however by the security threat presented. I hope we can discuss both the specifics of providing liquidity on V3 - how it will be executed, and managed, the costs, and goals, as well as the security implications if we do not act now.

Let me pretend to be the bad guy. I am looking at Uniswap.org, and it will only let me buy $2 million worth of POOL before it says insufficient liquidity. A 2 million USDC swap for 152,293 POOL which incurs a 84% price impact, and I’d be paying $13.13 per POOL. It doesn’t seem like I can make a governance attack. Maybe I’m not savvy enough?

Some rough numbers

  • 10 million total POOL supply
  • 5 million POOL in treasury
  • 5 million POOL circulating
  • 2 million POOL held by team and early investors (as per token launch medium)
  • 400k POOL still vested from VC diversification

Being that 2 million + 400k represents half of the circulating supply - Is there risk to the treasury without team/investors selling? With such a wide distribution otherwise it seems to me the concentration of circulating supply in that 2.4 million controls the majority of the risk.

Two other things to note -

  1. We do still currently have some FEI/POOL liquidity with 258k POOL in the pair
  2. I’m aware of something drcpu has mentioned a few times - that generally the protocol owning the majority or all of the liquidity is somewhat of an ideology debate.

I think my stance on Olympus PRO was pretty clear - bad deal. My impression is that the FEI deal has not worked out great for us either. I believe that liquidity as a service operates on our very own mantra of “no-loss”, so when there is loss we can expect to take it. To add insult to injury it seems Ondo rebalanced (sold POOL) outside of our verbal agreement. At the same time it’s clear that the token has not been doing well and I personally believe this is most reflective of the traction the protocol has as opposed to any liquidity or tokenomics issue. Never-the-less all issues must be addressed and as we continue to experiment with liquidity solutions it’s clear to me that the implications of them become more serious. I hope we can get this one right.

1 Like

The attack wouldn’t be by buying in one shot- it would be a constant accrual at a rate below the value of the treasury.

This proposal improves the liquidity of the token massively upward, to allow the token price to stabilize higher than the value of the treasury. However, the liquidity provision should be paired with a tokenomics proposal to drive support for the token.

There is a tokenomics proposal pending which we’re really excited about. We will be able to rally around the tokenomics and create a narrative.

Ensuring there is deep liquidity is the first step, and ideally the removal of any buying overhead will help secure the protocol.

3 Likes

Two thoughts:

  1. Any specific reason to choose for a USDC base pair versus an ETH base pair? Generally stable coin pairs lead to more IL and you lose the advantage of moving in tandem with a bull market.

  2. I like range positions because they are essentially a DCA out strategy. Which is something we’ve discussed several times in several forms, but never actually implemented. Of course a USDC base pair does make sense in that case.

This is true, but that is more an ideological issue of mine with attempting to buy most of the liquidity through a program like Olympus PRO. This proposal is aimed at providing base liquidity and anyone can add to that. I guess it does look very similar though.

Technically it would be better if we do not provide significant liquidity in the $2 range if we want to prevent this? That way any attempt to buy tokens for a governance attack push the price upwards rather quickly.

1 Like

We have easy access to USDC in the treasury, so it was a natural default for me. However looking at it now, ETH has far higher TVL than USDC ($1.3b vs $800m) so it’s likely a more accessible pair for swapping. We could swap some USDC for ETH then supply to the POOL/ETH pair.

Yes; I used the all-time-low as a starting point but we could start higher. In fact, based on the treasury value of $9.7m and a circulating supply of about 3,100,000 we’d want to start at about $3.

  1. $1MM in USDC in prizes to V4 POOL pool. Boom! Market cap back above treasury holdings and some folks would buy POOL to participate in the fun.
  2. POOL drip back on and remove subsidy.
  3. Success token sale to buy protocol owned liquidity.

Completely separate motivation, but I am really excited to see much needed liquidity added at this price point. Price crash and low liquidity causes a death spiral and kills protocols and I don’t want to see that happen for PT.

From here, it can go 1 of 2 ways.

  • Recent vested team/investor tokens have much needed liquidity to dump tokens. I am curious to see how this plays out so we know who is truly aligned with long term protocol success.

  • Whales (or even medium/large fish like me) will have sufficient liquidity and can buy POOL with minimal slippage. This is important to shift price momentum and I welcome much needed liquidity at this time.

When it comes to protocol-owned liquidity, I’m more than happy to explore different options. Using Uniswap V3 with a ranged position from $2 to $50 is one solution, but I’d love to see more specifics on the execution.

The TL;DR on how Uniswap V3 works: if you sent a liquidity range for POOL from $2 to $50, POOL will be sold for USDC (or whatever the paired asset is) as the price moves toward $50. When POOL trades back down the range, or toward $2, USDC is sold for POOL. And while trading happens, the position earns trading fees, which can be withdrawn from the NFT position as they are held separately from the liquidity within the position. In Uniswap V2, trading fees were reinvested in the position, but in Uniswap V3 that is not the case.

Since POOL governance is still conducted on mainnet and the discussions regarding cross-chain or multi-chain governance have not progressed beyond the forum, that I’m aware of, I’m assuming we’d be setting up a ranged position on Ethereum mainnet. Because Uniswap V3 is on Polygon as well, that is another possible option.

In any event, we’d want to provide shallow liquidity along the full range, as that reduces the likelihood someone could execute a TWAP attack on POOL liquidity. In the future, if we want to see POOL listed or used in a lending market, using best practices to ensure it’s harder to manipulate POOL price will be important. Euler Finance has a great tool that can be used to gauge the relative safety of a liquidity pair on Uniswap V3 against TWAP attacks. Locating a liquidity pair on Uniswap V3 with similar depth as the proposed POOL:USDC pair would give us some insight into the security of that pair.

If we provide a small amount of liquidity along the full range and the majority of our liquidity in bands between $2 to $50, we’d still need some POOL:USDC liquidity in the current range to allow for buy and sell trading. Defining the amount of USDC needed before an execute vote is important, as we’ve recently deployed USDC into PoolTogether V4 to earn interest and fund prizes via interest generated. Any use of USDC from the treasury should be specified ahead of a PTIP execution.

To note: Uniswap V3 allows users to enter single-sided liquidity outside of current trading ranges. Should PoolTogether ever want to create a buy order below a specific price, we could set USDC below a certain trading range to act as a buy order that acts at a buffer at a certain price. Worth mentioning, as this functionality can be used in the future in more strategic ways to get around the 7-day timelock present when funds are deployed using the governor alpha contract.

Technical Specifications

One important element I’d love to have some more discussion on: pool cardinality

Anyone can pay a fee to increase pool cardinality, or the ability to store pricing information in the contract for longer periods of time. By increasing pool cardinality, a user can increase the number of pricing observations that are stored directly in the pool contract; this functionality is what makes Uniswap pools a commonly used price oracle source. More on this in the Uniswap documentation. Hayden Adams also has a discussion about this here.

There hasn’t been any mention of what fee tier we’d be using when setting up this pool. Right now, most users are used to paying 0.3% in Uniswap V2 pools, but we’d have the ability to choose from 0.01%, 0.05%, 0.3%, or 1.0%. I’d guess that most would be in support of the 0.3% fee tier, but having a poll on tiering or a broader discussion is worth having as well.

In Uniswap V3, we can also conduct liquidity mining campaigns to direct liquidity to in-range liquidity bands. Once we are happy with POOL price, we could shift nominal amounts of POOL liquidity mining to Uniswap V3 to increase the depth of our liquidity. More on liquidity mining in V3 here.

There’s a lot of functionality we can take advantage of in Uniswap V3, but it is a more complex protocol that is more difficult for users to understand. Because of this, I’d like to see a wider discussion on specifics of this PTIP before progressing to an on-chain vote.

Thank you, @Brendan for starting the conversation. This is a valuable one to have, as our DeFi 2.0 experiments have yet to yield significant value to the protocol or to POOL holders.

2 Likes

Will thia be solely on mainnet, or will there be some held ok V3 on polygon also?

2 Likes

We need to extend gov to L2 first before holding large amounts of funds. It’s coming.