Introduction
The launch of veBAL has introduced the gauge voting system where veBAL lockers determine BAL emissions by voting for specific pool gauges. A flow has been created on the forum to facilitate approval of new gauges with several votes already passing in just the first three weeks. This proposal aims to streamline this process by delegating the power to add approved gauges to the voting list to the Balancer DAO.
It is important to make clear that no gauge will be added by BalancerDAO without going through the forum process for approving a new gauge and successfully completing a snapshot vote in favor.
Motivation
To alleviate the workload from the DAO Multisig, I am proposing to delegate the power to add approved gauges to this gnosis safe: 0xc38c5f97B34E175FFd35407fc91a937300E33860
. This safe already has the power to add new gauges for token rewards other than BAL so it makes sense to keep all gauge activities in the same place. Signers include myself, Mike B, Andrea, Xeonus, Zekraken, Luuk, and Markus who are some of the longest serving and most reliable members of Balancer DAO.
This group of signers will be responsible for ensuring that only approved gauges and gauges which have been correctly set up are added to the voting list. In practice this means the following:
- Ensuring that each forum proposal for a gauge gets adequate attention and that only pools with legitimate tokens are allowed to go for a vote (we don’t want to give BAL emissions to a pool with Uniswap LP tokens or an obvious scam token)
- For L2 gauges, checking that the root gauge has been correctly set up
- Checking that the root gauge’s recipient getRecipient() is the address of the streamer contract on L2
- Checking that the L2 gauge contract comes from the L2 factory (factory.isGaugeFromFactory(streamer))
- Checking that the L2 gauge’s reward_contract is the streamer
- Checking that the recipient reward_reciever() is a gauge with the LP token matching the pool from the approved vote
For reference:
- Polygon Root Gauge Factory - PolygonRootGaugeFactory | Address 0x4C4287b07d293E361281bCeEe8715c8CDeB64E34 | Etherscan
- Arbitrum Root Gauge Factory - ArbitrumRootGaugeFactory | Address 0xad901309d9e9DbC5Df19c84f729f429F0189a633 | Etherscan
- Polygon Child Chain Liquidity Gauge Factory - Contract Address 0x3b8cA519122CdD8efb272b0D3085453404B25bD0 | PolygonScan
- Arbitrum Child Chain Liquidity Gauge Factory - Contract Address 0xb08E16cFc07C684dAA2f93C70323BAdb2A6CBFd2 | Arbiscan
Specification
The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f
will initiate a transaction to the Authorizer 0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6
calling the function grantRoles
with the following arguments:
roles: [0x5dce9596402d216d8b1fa2b9f8e18b0dc1b5c81f96e0827c6cc83eba6e2205d4,0xeb223764963bceacbb06d72a3697801c2460ddf95b2ec410d2641d69249d466f,0x72c4c054ad03b4f5f0ba716c30d74c6f27fafb105c850cb59e2b6fec32a42f2f]
account: 0xc38c5f97B34E175FFd35407fc91a937300E33860
Immediately following a gauge approval vote that passed successfully, the signers of this multisig 0xc38c5f97B34E175FFd35407fc91a937300E33860
will perform the checks outlined above then initiate a transaction to the Gauge Adder 0xEd5ba579bB5D516263ff6E1C10fcAc1040075Fe2
calling the relevant function depending on the network to add the gauge to the voting list.