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
- Deposit my funds, and receive shares that represent my ownership over those funds
- At time A (no harvests in between) the shares can be redeem for funds at a 1-1 to one rate, even multiple times
- 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)
- I can transfer my shares and they will be eligible to 1.a and 1.b
- I can track the value of my shares via
getPricePerFullShare
- 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
- Set settings for the Vault, such as performanceFee, governanceFee, managementFee and withdrawalFees
- I can set a recipient (a different address) to receive fees, called the
treasury
- If the
treasury
is entitled to a fee in form of the deposit token
the fee is issued as shares instead