Yield Farming v2 Temperature Check

SundaeSwap Labs is presenting this temperature check to gauge interest in a proposal for Yield Farming on the SundaeSwap protocol. The text of the proposal is below.

’We’d like to thank and acknowledge the following people for their valuable feedback:

  • Viddie;
  • Eric Coley;
  • The newly elected Sundae Governance Moderator Team;
  • zygomeb;
  • fortunethechosen;
  • And many more in our Discord, Governance Forum, and private discussions.

Please indicate whether you are interested in this proposal receiving an on-chain vote.

Yield Farming V2

SundaeSwap Labs proposes that the Sundae DAO approve the creation of a yield farming program, funded by the Sundae protocol treasury and administered by SundaeSwap Labs. This yield farming program is intended to incentivize and attract liquidity to the protocol. The intention is to administer this program off-chain until it can be implemented as an automated system on-chain.

Summary

At a high level, the program will establish a daily emission of SUNDAE tokens, updated at least every 90 days by a protocol vote, which are distributed among community selected pools. Token holders can “stake” their SUNDAE tokens to vote for pools to direct this daily emission to, and liquidity providers from these pools can lock up their LP tokens to receive these rewards.

Below is a detailed specification of how this will work.

Detailed Specification

  • Any unclaimed Yield Farming v1 rewards will be assigned an expiration date 90 days after the launch of the new yield farming program.
  • After the development of the features summarized above, the yield farming program will be launched with a separate protocol vote to decide between the following three initial daily emission rates:
    • 118,430 SUNDAE per day (equivalent to 20% of the treasury in the next 4 years);
    • 296,077 SUNDAE per day (equivalent to 50% of the treasury in the next 4 years);
    • 444,115 SUNDAE per day (equivalent to 75% of the treasury in the next 4 years).
  • Every 90 days, a governance proposal will automatically be created with the following options:
    • Keep daily emissions the same;
    • Raise daily emissions by 5%;
    • Lower daily emissions by 5%;
    • Lower daily emissions by 10%.
  • The DAO may, at any time, pass a proposal to update the daily emission to an arbitrary value if that proposal has a quorum of (e.g., has votes by) at least 20% of the circulating supply of SUNDAE tokens.
    • Circulating supply will be defined as the total supply, minus the Sundae treasury holdings, minus the Sundae team multisig wallet.
  • A new, very simple and open source contract (henceforth the Locking Contract) will be written that allows users to lock arbitrary assets and reclaim them at any time.
    • This will serve the dual role of allowing users to lock Liquidity Tokens, to earn yield farming rewards, and locking SUNDAE, to indicate their preference for which pools should earn rewards.
    • Note that the term “lock” is a misnomer here, and these assets can be reclaimed by their owner at any time.
    • The owner will be encoded in the datum; unlike the Yield Farming v1 script, this will use the same the “native script” format, to support yield farming from multisig schemes.
    • The datum will also support arbitrary extra data in the datum, for future flexibility; for example, we will use this to encode a list of pools and weights for each pool when staking SUNDAE.
  • From the web app, users will be able to lock either LP tokens or SUNDAE (or both) into the Locking Contract.
    • If a user has an existing position, the web app will construct an on-chain transaction which adds to that position, though users may have multiple positions if building transactions manually or as a result of eventual consistency.
    • When locking SUNDAE, the user will additionally specify a list of preferences for pools they wish to receive SUNDAE token emissions; this will be in the form of a map from the unique identifier for a pool to a weight value, with the empty string signifying a portion of the SUNDAE held in abstention.
    • To avoid forcing users to choose between yield farming and governance, SUNDAE tokens and SUNDAE/ADA LP tokens held in this contract will be counted towards any governance votes.
  • Each day, 2 hours after Midnight UTC, SundaeSwap Labs will, by means of an automated process, compute the daily emissions to each pool and earned rewards, using the ledger-state snapshot “as of” (up to, but not exceeding) midnight UTC.
    • This 2-hour delay is to ensure roll-backs don’t change the result.
    • To calculate the daily emissions, SundaeSwap Labs will first take inventory of SUNDAE held at the Locking Contract.
    • Each UTXO of locked SUNDAE may encode a weighting for a set of pools, as described above; the absence of such a list will exclude all SUNDAE at that UTXO from consideration.
    • SundaeSwap Labs will then divide the SUNDAE at the UTXO among the selected options in accordance to the weight, rounding down and distributing millionths of a SUNDAE among the options in order until the total SUNDAE allocated equals the SUNDAE held at the UTXO.
    • Any pool that has less than 1% of the pools LP tokens held at the Locking Contract will be considered an abstention and will not be eligible for rewards.
    • We will sum up the allocated SUNDAE across all UTXOs held at the Locking Contract.
    • The top 10 pools, or the top pools that collectively receive 20% of the total weight (whichever is fewer) will be eligible for yield farming rewards that day.
      • Note that this criteria can be updated by a governance vote.
    • We then divide the daily emissions among these pools in proportion to their weight, rounding down and distributing millionths of a SUNDAE among them until the daily emission is accounted for.
  • For each pool, SundaeSwap labs will then calculate the allocation of rewards in proportion to the LP tokens held at the Locking Contract.
    • We will sum up the LP tokens held by each distinct owner encoded in the Locking Contract; thus, if someone has multiple UTXOs at the Locking Contract, they will receive a single allocation in proportion to the sum of their LP tokens.
    • The emissions for each owner will be rounded down, and millionths of a SUNDAE distributed round-robin until the total user emissions match the pool emissions.
  • Users will be able to claim these emitted tokens at any time, with no 30-day locking requirement.
    • A service administered by SundaeSwap Labs will allow users to claim these Sundae rewards by providing a signature (or set of signatures, in the case of a multisig owner).
    • They can choose to pay the accumulated SUNDAE rewards directly to their wallet, or directly into the Locking UTXO, effectively “re-staking” that SUNDAE immediately.
  • Rewards must be claimed within 6 months of being earned.
  • A governance vote may be held to explicitly exclude any token or pool from consideration.
    • During such a vote, rewards will accrue, but be unclaimable until the vote has concluded.
    • If the vote fails, the rewards will be claimable as normal.
    • If the vote succeeds, the emitted SUNDAE tokens will be returned to the treasury for future emissions.
  • Additionally, any project may choose to emit their own project token, split similarly across one or multiple pools.
    • SundaeSwap Labs will administer this service, and enter into an agreement with each project.
    • The project is responsible for furnishing the tokens to be distributed.
    • SundaeSwap Labs will allow LP tokens for these pools to be locked in a similar way, and a daily emission of tokens to be distributed among those liquidity providers in a similar way.
    • A user may claim both SUNDAE and native token rewards in the same transaction, to save on network fees.
    • SundaeSwap Labs will charge a small transaction fee to each claim involving a token other than SUNDAE, to cover administrative costs.
    • Explicitly, SundaeSwap Labs will not charge a fee for claims that only distribute SUNDAE tokens.

Justification

The above approach was developed after much discussion with the community and weighing a number of factors. Here are some key points that were raised that helped us arrive at final numbers:

  • While the 30 day lockup was intended to introduce an amount of stability to the liquidity in the pool, it is extremely unpopular with users;
  • An earlier proposal suggested emitting tokens calculated based on impermanent loss plus a stable APR;
    • Several users raised the point that this was essentially transferring the impermanent loss risk in full to the protocol and the SUNDAE token holders, through the risk of dilution;
    • Instead, taking inspiration from established financial systems, there was interest in creating a free-market negotiation for this risk, shared between the liquidity providers and the SUNDAE token holders;
    • This led to the idea that staked SUNDAE could serve as a mechanism for SUNDAE token holders to signal which pools should be incentivized to attract more liquidity.
  • A proposal whereby the total emissions was determined by the staked SUNDAE was also considered.
    • This would mean that large SUNDAE token holders would have to choose between:
      • Lending their voice to where the emitted SUNDAE gets directed as an incentive, but contributing to a dilution in value of their token;
      • Not staking their SUNDAE to keep emissions low, but having very little say over where the tokens that do get emitted get directed.
    • Additionally, the highly reactive nature of it meant that the emission schedule would be unpredictable, and subject to manipulation by a large holder.
    • Thus, we settled on a predictable, regularly updated value, with bounds on how quickly it could change under normal circumstances.
  • We introduce a quorum requirement for updating the emission rate outside of the normal 90-day schedule, to defend against low-quorum hijacking of the treasury
  • We limit the pools that are eligible for rewards to the top 10, or the top 20% of staked SUNDAE, whichever is fewer pools.
    • This is a measure meant to ensure that projects receiving SUNDAE tokens are actually those the broader SUNDAE community wishes to incentivize, and not those with one-off votes.
    • This is similar to ballot requirements in real-world elections.
  • We exclude pools that have only a small portion of the circulating supply of LP tokens locked up.
    • This helps to ensure that there is adequate notice for new projects attracting liquidity, and that one person doesn’t manipulate the protocol into receiving absurd token emissions on the first day.
  • We allow the DAO to vote to exclude tokens or pools from consideration.
    • This is to allow the DAO to react to known scam, “rugpull”, unfavorable, or otherwise manipulative tokens.
  • We introduce a 6 month expiration on rewards.
    • This is to reduce the administrative burden, and ensure that tokens don’t get allocated and reserved in perpetuity, when, for example, the wallet may be lost, or the user disinterested.
    • It is expected that users participating in this protocol are at least somewhat active.
    • This value can be updated by a governance vote in the future.
  • The starting emission rates are based on percentages of the treasury emitted over the next 4 years.
    • The treasury currently has 864,545,455 SUNDAE, with an additional 29,169,968 SUNDAE in the form of LP tokens.
      • This comes from the 1.1 Billion SUNDAE allocated to the community treasury, minus the 100m spent on the ISO, minus 90m spent on the initial yield farming program, minus the SUNDAE used to form the initial liquidity pool.
    • This value can be updated over time, but these initial values were chosen to give the DAO options ranging from conservative (reserving 80% of the treasury for future spending), to aggressive.
  • The options for the recurring vote to update the daily emissions are asymmetric.
    • The recurring vote to update the daily emissions are +5%, +0%, -5%, and -10%
    • These options are chosen to provide bounds on how quickly (under normal circumstances) the daily emission rate can increase, while allowing the DAO to decrease it more rapidly, to err on the side of more cautions.
    • Remember that, barring some other form of protocol revenue, the DAO can only spend these tokens once.

Simulation Results

It’s important to emphasize that the DAO is in complete control of the emission rate at all times. It will be important for the DAO to balance the utility of attracting TVL against the longevity of the treasury, adjust emission rates accordingly, and attempt to generate revenue that can grow the treasury over time.

That being said, here are various simulation results for how long the treasury may last under various conditions.

Extremely Conservative

In this simulation, the DAO votes to start at the lowest emission rate, and votes to decrease emissions by 10% every time the vote comes up. This provides an extreme lower-bound on emissions (and upper-bound on how long these emissions can be sustained absent any other revenue streams).

In this case, by the end of the 10th year the treasury still has over 750m SUNDAE, while only emitting 1000 SUNDAE per day across all users. This is unlikely to generate sustainable interest in the project.

Aggressive Conservative

In the second simulation, the DAO votes to start with the most aggressive emissions, but then as in the first simulation, always votes to lower emissions by 10%.

In this simulation, by the end of the 10th year the SUNDAE treasury has over 360m SUNDAE left, and is emitting around 4000 SUNDAE per day. Rewards were aggressive at the start, but the DAO chose to be fairly conservative in the long term.

Consistent Conservative

In the third simulation, the DAO votes to start with the most aggressive emissions, and consistently votes to reduce emissions, but only by 5%, rather than by 10%.

In this simulation, the treasury maintains its reserves into the 15 year mark, at which point it is emitting 20,000 SUNDAE per day.

Extremely Liberal

In the fourth simulation, the DAO votes for the maximum starting emissions, and votes to consistently raise them by 5%, maximizing short-term excitement over protocol longevity.

The DAO treasury runs out part way through the 4th year.

Random Walks

In the fifth simulation, we attempt to approximate more real world conditions; every 90 days, the DAO votes with some probability to change the emissions according to evolving market conditions, with a bias towards lowering emissions over time. We provide 4 such random walks, each with the same probabilities: 20% probability to remain the same, 15% probability to increase by 5%, 45% probability to decrease by 5%, and 20% probability to decrease by 10%.

In each of these cases, the treasury ran out of funding in the 6th or 7th years while daily emissions were still close to 200,000 SUNDAE per day.

Random Walks with Income

In the sixth and final simulation, we introduce the notion of protocol income, which increases slowly over time, replenishing the treasury. That income is modeled using a logistic growth model, approaching some upper-bound on daily protocol revenue. In the chart below, we use the same settings from the previous simulation, along with an income that starts at 500 SUNDAE per day 180 days after yield farming launches, and grows gradually over the course of 6 years to a maximum of 250,000 SUNDAE per day.

The exact numbers chosen are fairly arbitrary, and further analysis based on real world data is important. In the coming weeks, in order to help the DAO develop an understanding and strategy for these votes, we’ll be releasing an interactive dashboard where you can play with these numbers and simulations yourself.

Conclusion

Please indicate whether you would like to see an on-chain vote for this proposal. Per the governance procedures, once we receive 20 “Interested” votes, we will create the on-chain proposal for voting.

  • Interested - Proceed to an on-chain vote

0 voters

10 Likes

Pi what an awesome read and in depth analysis behind your decisions in the proposal. I voted yes and cant wait to see the on chain proposal vote. Second I appreciate the real world economics you’re integrating in the proposal to have a more streamlined token emission controlled by the community ran DAO. Coupled with the new UI V2 improvements SS is ready to compete more with Minswap. Cant wait! Hope SS is ready to be stressed tested in the near future!

Side note:
A colleague of mine wanted to know if you and team are considering an imbalanced liquidity add feature. Sort of like zap, but you could add any amount of both tokens and the dex figures out the price impact?

1 Like

Some additional thoughts after discussing this proposal with people today.

  • It’s not mentioned explicitly in the proposal, but there is no direct reward for staking SUNDAE
    • The SUNDAE remains entirely under your control, just held in a smart contract to express your preference
    • “Token for Token” schemes are considered by some to be unhealthy “growth hacks”, which create incentives for unsustainable behavior

Additionally, I did some napkin math to estimate the predicted annualized returns under some conditions; note that real world conditions are likely to differ, and these are only rough estimates to gauge the idea, not the .

  • At the lowest tier, 118,430 SUNDAE per day
    • assuming all emissions go to the ADA/SUNDAE pair, the TVL stays the same, and 100% of LP tokens get locked, that pool would be earning around 0.07% per day, or 26.6% over the course of a year.
    • assuming 33% of emissions go to the ADA/SUNDAE pair, the TVL doubles, and 70% of LP tokens get locked, that pool would be earning around 0.017% per day, or 6.28% over the course of a year.
  • At the middle tier, 296,077 SUNDAE per day
    • assuming all emissions go to the ADA/SUNDAE pair, the TVL stays the same, and 100% of the LP tokens get locked, that pool would be earning around 0.182% per day, or 66.7% over the course of a year
    • assuming 33% of emissions go to the ADA/SUNDAE pair, the TVL doubles, and 70% of LP tokens get locked, that pool would be earning around 0.043% per day, or 15.72% over the course of a year
  • At the highest tier, 444,115 SUNDAE per day
    • assuming all emissions go to the ADA/SUNDAE pair, the TVL stays the same, and 100% of the LP tokens get locked, that pool would be earning around 0.274% per day, or 100% over the course of a year
    • assuming 33% of emissions go to the ADA/SUNDAE pair, the TVL doubles, and 70% of the LP tokens get locked, that pool would be earning around 0.064% per day, or 23.58% over the course of a year

Finally, here’s a worked example using the DJED/ADA pair, purely for illustration purposes:

  • you pay your SUNDAE into a smart contract
  • it just sits there, and you can withdraw it at any time
  • while it’s there, it has a datum attached to it
  • that datum says “Direct 100% of my SUNDAE voting power towards the DJED/ADA pool”
  • Lets say the DJED/ADA pair had 15% of all staked SUNDAE delegated to it, which qualified it to be one of the pools receiving SUNDAE
  • of those pools, the DJED/ADA pair accounted for 45% of the allocation
  • thus, it would receive 45% of the daily emitted tokens
  • DJED/ADA liquidity providers (of which you may be one) can then lock up their DJED/ADA LP tokens in the same way
  • Say you held 10% of the locked DJED/ADA LP tokens
  • you would then receive 10% of that 45% of the daily emissions
  • seeing these emissions, other DJED holders or ADA holders may come and deposit their liquidity as well
3 Likes

Thanks for the kind words!

With regards to the “arbitrary deposits”, we spent quite a bit of time before our launch trying to figure out the math for this, but in the time crunch we had and all the responsibilities we were juggling, we couldn’t quite figure it out, and we haven’t revisited it since; it’s something I’d love to add in a hypothetical future protocol upgrade. If they have a formula already, tell them to each out to me!

1 Like

For math could it be treated as two zaps, token 1 first, token 2 second, with no other transactions allowed to take place in between?

I notice staking SUNDAE gives no rewards. How about adding a 0.1% fee for every new LP added to the rewarded farms and then distribute it to all SUNDAE Stakers?

This could create an incentive to switch SUNDAE Staking between LPs.

This proposal has passed it’s on-chain vote, and this topic will now be closed.