We propose to modify the Yam protocol so that LPs staking in the Incentivizer (i.e. farmers) will be able to vote in the onchain governance process.
An individual’s voting power for governance is currently based on the pre-rebase number of YAM the account holds when the vote begins. This means individuals farming YAM on the incentivized pool are unable to vote. In order to allow farmers to vote, modifications to the protocol will need to be made.
Due to the fact that voting weight is based only on an account’s YAM balance/delegates at the time a proposal is created, individuals in the incentivized LP pool are unable to vote. This causes a lot of difficulty for those individuals since they need to exit the pool, wait for the proposal to be created, and rejoin. It would be ideal to let these individuals vote without putting in the extra work or need to choose between voting and farming.
The following technical changes will be required to accomplish this:
Make Uniswap pool delegate to itself
Make Incentivizer have checkpointing/delegation like YAM has
YAM.delegateupdate delegation on the Incentivizer as well
Add governance function to allow governance to make a contract delegate to self
YAM.getPriorVotes(uniswapPool, proposalCreationBlock - 1) * getUserStakedLPBalanceAtBlock(user, proposalCreationBlock - 1) / getTotalStakedLPAtBlock(proposalCreationBlock - 1)
Update governance module to use
YAM.getPriorVotes(user, proposalCreationBlock - 1) + Incentivizer.getPriorVotes(user, proposalCreationBlock - 1)as voting weight
An audit will also be required, which the team is currently in the process of arranging.