[RFC] - Flashstake - Enabling upfront yield for Uniswap Liquidity V2&V3

Summary

Flashstake has worked closely with xToken Terminal over the last few months and through this partnership, we now have the infrastructure required to build time-based yield markets for any Uniswap V3 pair adding another dimension to liquidity provisioning not currently possible on any other DEX.

Flashstake would like to request 200,000 ARB tokens which will be used to jump-start this new market through liquidity mining incentives (additional details below). The intention is to enable instant upfront yield for a handful of Uniswap V3 pairs to start and expand to new pairs as demand increases.

What is Flashstake?

Flashstake allows users to earn instant upfront yield.

DeFi applications, like AAVE, only allow users to earn variable interest on their deposits over time. Flashstake strategies transform this variable yield into a fixed rate yield and pay the yield upfront to the user. This is achieved through a combination of interest rate swaps and a marketplace for the time value of money.

Flashstake is currently live on Ethereum Mainnet, Arbitrum and Optimism.

Example

Bob has 100 ETH and would like to start earning yield. Bob could deposit this into Rocket Pool and acquire rETH which increases in value over time relative to his deposit thereby slowly accumulating yield (eg 5% APR). Bob decides to instead Flashstake 100 ETH for 1 year into the Rocket Pool Flashstake strategy accepting a 4% APR paid upfront.

Bob has given up some of the yield he would have otherwise earned at Rocket Pool in exchange for a fixed rate of yield paid out immediately. Bob can withdraw his 100 ETH after 1 year has passed. Bob can also choose to unstake early by paying back the yield he received.

You can view a real transaction of a user depositing 125 ETH for 3 months to earn ~4,600 USD worth of rETH here. Note that Flashstake relies on LPs for jumpstarting new yield strategies and in the provided example transaction the upfront yield is coming from a Uniswap V3 swap.

A deeper look

Under the hood when Bob deposited his 100 ETH for 6 months into the Flashstake Protocol he minted approximately 50 yield tokens (fy-rETH). The 100 ETH was automatically deposited into the associated underlying protocol which in this case is Rocket Pool. This ETH then goes on to generate yield block-by-block which drips into the associated yield pool.

Bob can choose to either sell his 50 fy-rETH (yield tokens) on the open market via Uniswap or burn these to redeem a proportional amount of yield from the Flashstake yield pool. Both avenues would result in a redeemable value. The Flashstake Dapp currently automatically chooses the most favourable path for Bob.

Alice is happy to purchase the rights to yield generated from Bob by acquiring his fy-rETH tokens. Alice is happy to wait until the 100 ETH has generated a higher return from Rocket Pool.

Summary

  • Rocket Pool is offering a 5% APR
  • Alice is willing to give Bob an upfront yield such that Bob can lock in a 4% APR
  • Bob is willing to give up 1% APR to lock in the lower rate

In the early days of launching a new Flashstake Strategy, the yield pool starts at zero and subsequently cannot be used to redeem any meaningful upfront yield. We decided to partner with xToken Terminal to help incentivise liquidity for concentrated liquidity positions on Uniswap V3. This has allowed the open market to provide instant upfront yield with the expectation that yield tokens can be burned against the Flashstake Strategy in the near future as/when the yield pool grows.

You can read more about the inner workings of Flashstake in our documentation.

Milestones/Achievements

  • Flashstake launched with this architecture in August 2022 - you can visit the Dapp here
  • Flashstake has since deployed on Mainnet, Optimism and Arbitrum
  • Flashstake has never raised funds
  • Flashstake received a grant from AAVE Grants DAO
  • Flashstake TVL has roughly doubled after every major launch
  • Flashstake currently supports GLP, sUSD, WETH, rETH, stETH and USDC through various underlying protocols such as GMX, AAVE V3, Rocket Pool and Lido
  • Flashstake currently has $5M in strategy TVL and $11M total including staking

Proposal

Flashstake is looking to launch a new Flashstaking Strategy which would allow Uniswap V3 liquidity providers to earn instant upfront yield. This would initially be limited to a handful of specific pools (currently undecided) with the intention to expand when sufficient demand is shown by the market.

We have performed a significant amount of research to make this possible and have worked closely with xToken Terminal to help facilitate this functionality. We have integrated with xToken Terminal’s contracts in a new innovative way to enable this functionality.

Flashstake would like to request 200,000 ARB tokens to incentivise liquidity providers via xToken Terminal liquidity mining. These incentivised liquidity providers would be paying users upfront yield through v3 liquidity pools which would allow all future fees associated with Flashstaked liquidity to drip into the associated yield pool.

Example:

  • Bob currently holds 500 UNI-V2 tokens associated with the USDC/DAI pool. It is expected that this would yield 35% APR (after 1 year in fees)
  • Bob Flashstakes 500 UNI-V2 tokens for 365 days and receives 500 fy-USDC/DAI tokens
  • Alice is currently providing liquidity on Uniswap V3 (via xToken Terminal) for the token pair fy-USDC/USDC within the 0.1 to 0.25 range which roughly translates to upfront yield of 10% to 25% for Bob
  • Bob effectively gives up all rights to future yield on his LP tokens accepting an upfront yield rate of 25%
  • Alice now holds 500 fy-USDC/DAI tokens which can be redeemed at any point in time for proportional ownership of the yield pool. In an efficient market, Alice would choose to redeem these in 365 days. If the yield rate remains at 35% or increases, Alice would earn the difference.

Note: I have highlighted the section within the example above showing where these ARB tokens would be spent.

Note: Bob could Flashstake UNI-V2 OR choose to deposit USDC and DAI (in the correct proportions) into xToken which then gets Flashstaked. A lot of this complexity would be abstracted away within our front end (in the simple mode).

Flashstake has already been using xToken Terminal for liquidity mining towards concentrated liquidity positions in the same way explained above (for existing Flashstake Strategies). The most recent examples of these pools can be found here, here and here. More information on these campaigns can be found on this tweet thread.

To date, Flashstake has run these xToken campaigns between 1 to 4 weeks (due to limited resources) but we believe less tokens can be spent if these campaigns run for a longer duration which would give liquidity providers more certainty. We would like to run these campaigns for between 1 to 3 months giving each Flashstake Strategy the best opportunity to succeed.

Benefits to Uniswap:

  • Sticky Uniswap TVL - The more we can incentivize our yield LPs, the more volume and TVL passes through these Flashstake Strategies which in turn leads to larger amounts of liquidity locked in for extended periods of time. (Bob Flashstaking for 365 days means this liquidity is locked for 1 year)
  • Migrate liquidity from UniV2 to UniV3 - The more attractive Flashstake is for liquidity providers, the higher the chances they use Flashstake. Since Flashstake will support UniV2 tokens and will deposit this liquidity into UniV3, this would help migrate liquidity away from UniV2
  • Additional functionality for existing Uniswap V2 and V3 liquidity providers - The ability to Flashstake to earn instant upfront yield

Path to Sustainability

It is important to highlight, rewards given to liquidity providers which allow for upfront yield in the early stages of a strategy, are temporary. As more capital enters the system, the yield generated increases with each block (based on trading fees), contributing to the growth of the yield pool.

Once the yield pool has reached a sufficient level, we expect the majority of all future Flashstakes to receive upfront yield directly from the protocol, without the need for additional incentives.

This means once a Flashstake yield pool becomes self-sufficient, it creates a constant activity of locked-up LP tokens for Uniswap pools.

11 Likes

I created an account just to tell you how amazing this project is :joy:

4 Likes

this would bring Uniswap the edge it needs to stay relevant in times of ever-growing competition.

The opportunity to receive yield for liquidity mining in advance opens up a whole new level of DEFI composability. More sticky liquidity and more efficient use of funds, offsetting potential IL by deploying yield elsewhere for amplification of earnings.

Also Flashstake has proven itself to be a resilient protocol with no exploits of any kind to date, 2 audits of reputable auditors, and no exploitable admin functionalities in its immutable smart contracts.

I’d be more than happy seeing this proposal pass and said functionality to be implemented ASAP.

2 Likes

Sounds like a great way to expand Uniswap use-cases, go for it!

This proposal Looks great and will bring in some positive impacts.

Can you please provide more details on how the integration with xToken Terminal’s contracts enables the functionality of incentivized liquidity mining for Flashstake?

Can you please provide more details on how the integration with xToken Terminal’s contracts enables the functionality of incentivized liquidity mining for Flashstake?

I will use the first link provided in my original post as the example xToken pool:

https://app.xtokenterminal.io/mining/pools/mainnet/0xaBC95d77fb9D4538e6B00Bc8c9bE22DDB8df3004

You’ll notice on xToken the description says “Liquidity mining for concentrated liquidity range between 4% and 8%” and the LP it is incentivizing is fy-rETH/rETH

By adding liquidity to this LP position, by using xToken, xToken is forcing the UniswapV3 range to be a very specific price range so that 1 fy-rETH is worth somewhere between 0.04 and 0.08 rETH depending on current market prices at the time of adding/removing liquidity. In case this helps, another way to put it is that xToken enforces a concentrated UniV3 liquidity range of 0.04-0.08 rETH per 1 fy-rETH.

How this helps Flashstake?

You can refer to the Time Vault Pool: Liquidity Pool documentation https://docs.flashstake.io/time-vault-strategies-tvs/time-vault-pools#example-2-liquidity-pool

Liquidity pools, such as this xToken incentivized UniV3 range, allows LPs to provide the upfront yield and speculate on upfront yield rates and earn incentives for being an LP. This is especially needed early on for new strategies as a way to jumpstart new strategies so there is upfront yield available from LPs instead of from the yield pool that hasn’t grown enough yet to provide meaningful yield.

So, for example, when we first launched the rETH (Rocket Pool) strategy on Flashstake, we spun up several xToken LP ranges of 4-8% (like I mentioned above), 6-12% and a promotional 10-15% that paid much higher incentives to help cover the IL that LPs would likely see. Different ranges lets LPs choose their risk tolerance and also consider what incentives and swaps APR they will earn, since every time an LP is used for upfront yield, that also generates a swap.

Every time someone does a Flashstake transaction to get upfront yield, the Flashstake dapp has a proxy https://docs.flashstake.io/smart-contracts/flash-protocol-proxy that will automatically determine the best upfront yield rate from either swapping or burning, which means either taking yield from LPs or taking yield from the yield pool, to give to the person wanting upfront yield. So in the case of the rETH strategy, the yield is being taken from LPs from Uniswap swaps. And xToken forced UniV3 ranges is helping make sure the % of upfront yield is in an appropriate range and able to be incentivized with tokens.

This proposal is to get ARB tokens so we can incentive with those tokens on xToken for Arbitrum strategies that will be developed that focus on giving upfront yield to LPs. We have never given upfront yield to LPs before, there is a synergy effect that this proposal also encourages more LPs on Uniswap for those who wish to use the Flashstake ecosystem to

  1. Get upfront yield as an LP
  2. Provide liquidity and earn ARB tokens incentives via xToken

I hope that was able to fully answer your question?

1 Like

Seems like a natural evolution of defi to allow for interest rate swaps for liquidity provision. The immediate vs. delayed swap makes it even more attractive and allows for more efficiency.

As this is still fairly nascent in our space, it seems worthy to accelerate this development via token incentivization.

I wonder what pools you would plan to use these incentives for. Do you think pools with certain assets would benefit in particular from this enhancemet or what would be your criteria?

Also, over what timeframe would you plan to spend the incentives?

I think reviewing defillama to see which UniswapV3 pools on Arbitrum, with a good sized TVL that have good APR helps give insight to what may be the best ones to start with that would generate the most activity for the used incentives.

https://defillama.com/yields?chain=Arbitrum&minTvl=1000000&maxTvl=&project=uniswap-v3

These look promising to start with
WETH-USDC
WETH-ARB
ARB-USDC

These are also being considered and may bring other partnership/marketing opportunities for Flashstake/Arbitrum/Uniswap/xToken:
RDNT-WETH
WETH-GMX
FLASH-WETH

I would estimate 6 months, but could be half to double that timeframe depending on other factors as market dynamics change over time, and if we see certain pools are having significantly more activity and more TVL than others, we may adjust which pools we incentivize and by how much, as we refill xToken incentives every few weeks.

We may find that certain pools require more or less incentives than anticipated to generate enough liquidity required to facilitate the upfront yield liquidity pool range needed for users to want to accept the upfront yield rate.

Historically, we have monitored the xToken pool incentives we have been providing with FLASH tokens, and adjusting these on a week to week basis. Sometimes increasing, sometimes lowering, sometimes creating an entirely new pool with a new range to properly incentivize what is required. When creating an xToken incentive, it is locked in: the total weeks, the total tokens allocated. During those weeks, APR rates, token prices, supply/demand of liquidity, all are constantly changing. We reevaluate the numbers regularly.

The example with rETH makes sense. The APR is fairly certain within a couple month range. So locking up to get 4% immediately, vs 5% without locking makes sense. With 1% providing a spread of profitability.

The main proposal case of using univ2 → univ3 liquidity providing positions is not as clear to me:

  • How is APR estimated for the year for a trading pair that is highly dependent on fluctuating volume? For example if volumes are high, and Flashstake pays out 20% immediately, but then volumes plummet in the following months, the Flashstake/users lose money?

  • Is the LP lockup much shorter than the 1 year lock up of the rETH example to take into account the volume volatility? 1 Month lockups?

  • What are the locked up LP liquidity ranges, since univ2 are being locked up and put into univ3 they will be full ranged liquidity providing?

  • If not full range, how are these positions actively managed to keep inrange? Is IL calculated in the expected APR?

  • How is APR estimated for the year for a trading pair that is highly dependent on fluctuating volume? For example if volumes are high, and Flashstake pays out 20% immediately, but then volumes plummet in the following months, the Flashstake/users lose money?

The Flashstake docs “Where does the yield come from?” may help answer part of this.

Yield Pools and Liquidity Pools are used to pay the upfront amount. If volume plummet, this does not impact existing stakers, it only impacts how fast the yield pool will fill up to help facilitate future Flashstakes that “burn” instead of “swap” for upfront yield.

  • Is the LP lockup much shorter than the 1 year lock up of the rETH example to take into account the volume volatility? 1 Month lockups?

The Liquidity Pools being incentivized with ARB tokens from this proposal (as we have done with FLASH tokens for incentivizing previous strategies at xToken) would be expected able to facilitate a decent amount of upfront yield, so I don’t anticipate there being any need to have a strategy maximum duration to be set lower than 3 months, with an ideal target of 6+ months as the maximum duration enabled.

  • What are the locked up LP liquidity ranges, since univ2 are being locked up and put into univ3 they will be full ranged liquidity providing?
  • If not full range, how are these positions actively managed to keep inrange? Is IL calculated in the expected APR?

The UniV3 LPs locked up as Flashstakes, not to be confused with xToken LP incentives for anyone else reading this, would likely not be a full range but would benefit from concentrated liquidity improvements even if set in a very wide range. We would evaluate each LP on a case by case basis. For example, ARB has been within a tight price range of around $1-$2 since it launched so a USDC/ARB pair could have a tighter range than some other LP whose both tokens have more volatile price changes such as let’s say GMX/WETH.

1 Like

Yes it does.
But What criteria will be used to select the specific pools for the initial Flashstake Strategy? How will Flashstake determine which pools have sufficient demand?

Hey @Damboy I believe your questions have been answered in the above post here

Did you have a particular question that you felt was not answered?

The initial uniswap pools would be chosen based on factors such as TVL and volume since these would be important since they influence the trading fees generated.

1 Like

Thanks for the response @DevSalim.

We support this proposal and it fits within our logic regarding optimal budget allocation if the Uniswap community has a similar consensus to us as described here.

Do you have API for other UIs to integrate?

The contracts are immutable and exist on the deployed networks. This means anyone can interact with them and it does not require a specific API.

We have deployed subgraphs on each network and you can find the links to them here: Addresses and Links - Flashstake

You should be able to find all the necessary information in the documentation linked above. If you require any additional support, feel free to join the Flashstake discord.