Discussion https://forum.indexed.finance/t/iip-3-enable-meta-governance-for-comp-like-tokens/56
Author: Dillon Kellar
This proposal would enable NDX holders to vote with the COMP & UNI held by any index pool. Support for other governance tokens that support delegation will follow as the contracts are developed.
The two indices which currently exist are DEFI5 and CC10. These 2 pools collectively hold 285k UNI and 7.3k COMP. These are not quite enough tokens to make a large difference in proposals based on current levels of participation in these protocols, but in the future this may change, and we do not want to contribute to voter apathy in other on-chain networks.
Because these governance tokens allow delegation of voting power, it is possible to use them to vote even while they are held by the index pools. Index tokens do not support the necessary balance snapshots to allow LPs to vote with these tokens in a secure manner, but they can be delegated to meta-governance contracts where NDX holders can determine how to cast votes on UNI and COMP proposals.
This would both make our protocol a better member of the ecosystem by increasing participation in on-chain governance and increase the value proposition of NDX token itself, which would likely encourage governance participation for our own community. Additionally, it would help compensate the NDX treasury for rewards paid to keepers who keep the pools updated.
We will utilize two new "meta governance" contracts. These are contracts modeled on GovernorAlpha, the governance contract used by NDX, COMP, UNI and several other projects, which allow NDX holders to vote on "meta proposals" which are proposals for how the delegated votes should be cast on external proposals for Uniswap or Compound governance.
We will use one contract for each governance token - this proposal adds MetaGovernorCOMP and MetaGovernorUNI, which use the same template.
The code for these contracts can be found here: https://github.com/indexed-finance/governance/tree/master/contracts/meta
In order to support delegation of COMP-like tokens, the proxy implementations for MarketCapSqrtController and IndexPool must be updated to allow governance to tell the index pools to delegate their voting power to the meta governor contracts.
The primary challenge with this is handling the different governance interfaces. For COMP-based tokens such as UNI and COMP, it is quite simple to enable this feature. For other tokens, we will need to create more specific contracts & delegation functions to enable meta governance. This proposal would enable support only for COMP-based tokens, with other delegation-enabled tokens to follow.
The contracts have been updated on github with the modifications described below.
MarketCapSqrtController
Add delegateCompLikeTokenFromPool which is only callable by the NDX timelock. This function takes the address of an index pool, the address of the token to delegate, and the address of the delegatee, and calls delegateCompLikeToken on the index pool.
IndexPool
Add delegateCompLikeToken which is only callable by the controller. This function takes the address of the token to delegate and the address of the meta governor to delegate to, then calls the delegate function on the token to delegate to the governor.
Daniel Luca will be auditing the new meta governance contract beginning on Sunday, January 24. If this proposal reaches a quorum of 50,000 votes on Snapshot with majority approval, the on-chain contracts will be deployed and an on-chain proposal will be created to execute this proposal once Daniel has completed the audit and any issues that come up are addressed.