This proposal aims to include a dynamic gas reward for harvest() callers to align the interests of the Function Callers, vault LP, and the YFI Governance.
There is also a competing proposal that implements changes to the TreasuryVault contract to subsidize gas faster. Though the harvest() proposal might help in the future, we do need gas now.
Implement a dynamic gas reward pot as part of the harvest() function to incentivize Callers. This ensures vault LP never pay above fair market value for gas and resolves the conflict of interest between LP and Governance while determining gas budgets.
With gas prices constantly changing, it is hard to allocate a fixed monthly/daily gas fee budget to call functions. It is also hard to figure out the optimal frequency to call the harvest function.
A dynamic gas reward will align the interests of the Function Callers, vault LP, and the YFI Governance. Since:
- The Function Callers can determine when to call functions based on the reward.
- Since anyone can call harvest(), Function Callers will need to compete with each other for the reward, resulting in a fair market price. This will optimize the frequency of harvest() calls at the same time.
- The vault LP will always be paying market rate for harvest() to be called. While still retaining the advantage of gas savings as a pool.
- The Governance will never over or under-allocate budget needed for gas. And can still claim the 5% fee on gas saved for the LP. Resolving the conflict of interest when determining gas fees.
Change the harvest function by:
- Implementing a dynamic pot for gas reward that grows over time, proportional to the profit of the pool. Claimable when other current conditions for harvest() are met.
- Retain the 5% fee on gas saved to be reserved for YFI Governance and development.
Since this proposal assumes the pool doesn’t incur losses before harvest is called (part of the condition for harvest() to be called), a different strategy might be needed if that is no longer the case.
Implementing a variable for how fast the gas reward grows (most likely as a percentage of profit) for Governance to experiment or control in case things go wrong might be a good idea. But the method of funding the pot should be up for discussion in this thread.
It might also be a good idea for other functions (draw, deposit, pay, etc.) to also have their own separate gas pots that are funded when harvest() is called. This ensures only profit will ever be spent on gas fees, protecting the principal. However, this should be submitted as a separate proposal and is not part of this proposal.
Include a dynamic gas reward pot for the havest() function of vaults.