# Fungible Liquidity Aggregator Vault(s) ## Abstract The following standard introduces a novel vault format for managing yield bearing assets. This is an extension of the Vault standard to introduce compounding strategies to the asset management. ## Motivation Typically, early stage protocols create vaults to incentivize locking certain tokens that benefit the protocol, in exchange for a token utilized by the protocol. For example, a team might reward creating liquidity for a governance token with more of that token. Fungible Liquidity Aggregator Vaults (FLAV, as in FLAVor) introduce a novel mechanism for integrating this token dillution into a vault directly, and allowing for additional services to be integrated with this vault. # Specification FLAVs are standard ERC4626 vaults that provide a yield in a single asset. By locking the asset in the vault, the vault is able to create revenue for the asset in some external strategy, and in return increase the balance of the existing vault. FLAVs have a few key assumptions: 1) the vault allows for a fungible token to be deposited in the pool, and compounded at any point in time to increase the balance of the vault. 2) The balance of the vault is represented as a sum of the current assets in the vault, and the current value of the asset in the strategy. 3) The token should have no lockup. The yield strategy should allow the tokens to be pulled out at any time. 4) A threshold is set for the amount of funds in the vault allocated to the strategy. This can be as high as 100%. By creating an ERC-4626 Vault (or set of vaults) that incentivize the depositing of a specific token, the protocol is able to accomplish multiple goals simultaneously. ## Definitions: - manager: there should be a vault manager set that is able to manage the funds in the vault ## Methods The pool has a few actions that separate it from a standard ERC-4626 Vault: - `increaseFunds` is the method to deposit funds into the pool without minting shares. This is used by the vault manager when it needs to adjust the balance. - `removeFunds` is the same as `increaseFunds`, except for funds being removed. - `allocateToStrategy` deposits the funds in a strategy to being increasing the token balance. - `compound` will update the current balance of the token and reinvest any amount below the threshold set for the FLAV. - `reserves` will return the current total balance of the vault, including all allocations. If yield is being provided in a different token, the calculation must factor in converting the token balances back to the underlying asset. ## Rationale By integrating these methods into the vault standard and creating a manager for funds, vaults are able to be stacked and/or integrated much more easily. A vault can present itself as a "credit" for the underlying assetm, while still utilizing the funds for additional purposes. Because there is no lockup, the funds are liquid at all times. In this way, a vault is a synthetic asset representing a dynamic allocation of a token that can be audited at any time. This allows the vault to have a concrete value, while not requiring the tokens to remain at rest.