Future Yield Minting Vault
Logic flow of Future Yield Minting Vault is as follow: 1. User stakes USDB/ETH in the smart contract. This is considered a position. Separate stakings is counted as separate positions. 2. To unlock token in a position, user must either: - Wait until position reaches maturity, this is predetermined in each vault's pool. - Using USDB/ETH or fyUSD/fyETH to repay for the expected yield at the start of the staking process. As native yield accrue over time, the amount of token need to be repay will also be reduced as to how much yield generated by the position.
note: a vault's pool is corresponding to a staking token (ETH or USDB) and maturity time.
Yield genereated by each position will be calculated as follow:
More fyETH/fyUSD can be immediately from existing position by extending its locked duration. Maximum duration for a position is set to 10 years.
Contracts
smart contract(s) of future yield minting vault
LockedStakingPools
This is the vault contract which reponsible for all the functions of the vault.
To open the vault, an account with POOL_ADMIN_ROLE from RoleControl contract must call addLockedPool.
This will create new pool with increasing poolId.
User staking token into the pool will receive a Stake event with poolId and stakeId, these are unique for a staking position and
must be passed in argument when unstake or repay either with native or future yield token.
See on Github
Future developments
Upcoming features including: - repay a fraction of position.