Vault 1.5 User Stories

The end goal of Vaults 1.5 is to make day to day operations easier for Badger, while maintaining a similar risk profile from Badger Sett (v1 to v4) and Yearn V1 (which we originally forked)

The additional features are:

  • Removed Controller, new architecture is Vault → Strategy, where Strategy.vault is immutable but the vault can change strategy via a governance change (while ensuring all funds have been migrated)

  • OnChain APY tracking for want token as well as additional tokens

  • Integrated Emissions to Badger Tree for Strategies that emit token (instead of selling it for more want)

  • Standardized Events and return values for Harvest and Tend

  • Reduced Strategy Bytecode by adding most of the logic to the vault (vault will be proxy cloned, while strat requires a unique deployment each time)

As a end user I can

  1. Deposit my funds, and receive shares that represent my ownership over those funds

    1. At time A (no harvests in between) the shares can be redeem for funds at a 1-1 to one rate, even multiple times

    2. Over time (in between harvests) my shares entitle me to withdraw at least what I deposited and sometimes more than what I deposited (if the strategy auto-compounds) NOTE: Net fees (fees may be higher than yield) NOTE2: Some strategies can loose funds, in that case the shares would be worth less than the initial deposit

  2. I can transfer my shares and they will be eligible to 1.a and 1.b

  3. I can track the value of my shares via getPricePerFullShare

  4. Vaults can use a guestlist, in which case, the guestlist contract has to return true, given the data I gave, before I'm able to deposit

As the DAO (Governance) I can

  1. Set settings for the Vault, such as performanceFee, governanceFee, managementFee and withdrawalFees

  2. I can set a recipient (a different address) to receive fees, called the treasury

  3. If the treasury is entitled to a fee in form of the deposit token the fee is issued as shares

  4. I can set certain limits for fees, these limits will be enforced if the strategist is trying to change certain settings for fees

  5. I can trigger a deposit of funds from the Vault to the Strategy via earn

  6. I can sweep tokens that are not protected via sweepExtraToken

  7. I can pause and unpause deposits

  8. I can set the guestList

  9. I can change the Strategy for the vault, assuming that the previous strategy's funds have already been brought back to the Vault (no rugging)

  10. I cannot rug nor move user funds outside of the Vault and Strategy system

  11. I can set a Keeper and Strategist, whose stories are defined below

As the Strategist I can

  1. Change fees for the vault within limits decided by the governance

  2. I can tend and harvest the strategy

  3. Am entitled to the performanceFeeStrategist on each report

As the Keeper I can

  1. Tend and Harvest the Strategy

  2. Call earn on the Vault to invest the funds into the strategy

The Vault is responsible for:

  • Accounting of deposits and distribution of the funds (when withdrawing)

  • It's relation with the strategy

  • Keeps accounting of historical earnings for all tokens (want and additional tokens)

  • Emits events to track harvests and gains in other tokens (emitted to the badgerTree)

The Strategy is responsible for:

  • Investing the funds into yield farming schemes

  • Harvesting gains

  • Tending the want token to increase yield

  • Reporting the gains back to the Strategy (code specific)

Additional Requirements

Every harvest needs to emit the amount harvested and give details as to what was harvested

Every time the strategy accrues new non-want tokens, it has to emit them via reportAdditionalTokens

When emitting tokens to the badgerTree, the vault has to emit the event TreeDistribution

The function getProtectedTokens tokens has to return a list of all tokens that the Strategy is using and could have, these tokens cannot be sweeped by the governance for any reason

The only way to move these tokens is by sending the want back to the vault (withdrawAll) and by emitting the tokens via reportAdditionalTokens

The functions harvest and tend in the Strategy return a list of all the tokens harvested and tended (tended signifying claimed or moved) and harvested signifying an increase in the amounts of tokens the strategy had and is emitting

Last updated

Was this helpful?