Author: Zefram Lou (zefram@88mph.app)
Currently, depositors are rewarded with MPH, which is vested over a fixed period of time regardless of how long the deposit period is. Most pools have a 270-day vest period, the Compound UNI pool has a 14-day vest period, and the Aave DAI pool has a 30-day vest period.
We propose that the vest period should equal the deposit period.
The initial discussion by the community can be seen here.
88mph pools have been using 7-day reward vesting for most of their existence. During this time, it has been fairly easy for users to dump MPH on the market in the following way:
This is clearly problematic for the long term growth of MPH. There are two potential ways to resolve this:
While the first option is easier to implement, it also makes it more difficult for other protocols to integrate 88mph. For instance, Mushroom Finance is currently using the Compound UNI pool to earn interest, and their smart contract is making 14-day deposits to ensure the liquidity of their funds. If we made the vest period 1 year, smart contracts integrated with us would need to track vested MPH from a long time ago, rather than just assume that all MPH has been vested when a deposit is withdrawn. This makes things much more difficult for them. Therefore, the second option seems better in the long run.
Moreover, with the need to pay back part of the MPH received when a user withdraws their deposit, users who deposit for a short period of time will need to buy MPH from the market to withdraw their funds, which makes for a terrible user experience.
In addition, making the vest period equal the deposit period means the rate of reward is the same regardless of how long a deposit is locked for, removing the incentive for users to make deposits with maximum periods.
Having a short vest period makes it more attractive for users to deposit, which would lead to more TVL and more revenue generated for MPH holders. Prolonging the vest period would hurt the TVL growth.
The MPHMinter and MPHIssuanceModel01 contracts currently used for minting MPH rewards only support a fixed vest period for each pool. Therefore, they need to be upgraded, which involves:
MPHMinter::setMPHTokenOwner() on the current MPHMinter to set the owner of the MPH token contract to the new MPHMinter.DInterest::setMPHMinter() on each pool with the new MPHMinter.The modified MPHMinter and MPHIssuanceModel02 contracts are available here: