[BIP-57] Introduce Gauge Framework v1

Balancer

Authors: philjfry, solarcurve

Motivation

Recently Balancer has seen an influx of projects asking for gauge approvals, many of them with a relatively small market capitalization. The vast majority of Balancer’s revenue today is generated from a small handful of pools containing tokens with a relatively high market capitalization. There is a growing need to strike a balance between optimizing for revenue generation and being supportive of small cap or newer projects which might one day grow to become significant revenue generators themselves.

This “Gauge Framework v1” aims to deliver a simple and objective rating criteria that the Balancer community can use to filter all current and future gauges. There are two phases of analysis - first using a “weight” factor with a “market cap” factor to derive an “overall” factor. All gauges scoring below a certain threshold would proceed to the second phase which would apply a “revenue” factor, helping those small pools which are generating significant revenue reach the threshold. If a pool remains below the threshold after phase 2 it will undergo a mandatory migration to a new gauge with a 2% or 5% maximum cap on the emissions it can receive.

Phase 1

Weighting Factor

We’ll be borrowing the old weight factor 21 from v1 liquidity mining. You can copy this spreadsheet 52 and play around to see the results of various pool configurations.

Market cap Factor

Based on depth of pool assets and taking into consideration that assets weighting in the pool.

Each asset in the pool is analyzed individually, and the lowest score from the pool is taken into account.

token mcap factor = mcap (in USD millions) / % weighting

mcapFactor = square root (min(token mcap factor))

Source for market cap information is Coingecko.

Note: For the purposes of this calculation any asset that can be freely minted is assumed to have the market cap of whatever asset is used to mint it. auraBAL is minted with BAL, graviAURA is minted with AURA, maticX is minted with MATIC, etc.

Overall Factor

mcapFactor^weightFactor = overall factor

The proposed threshold for an uncapped gauge is an overall factor of 5 or higher.

Sample Calculation

Aura/WETH 50/50

Weighting Factor: 1

Aura mcap factor: $28M market cap / 0.5 weighting = 57

WETH mcap factor: $809B mcap / 0.5 weighting = 1,619

Lowest mcap factor: square root(57) = 7.53

Overall factor: 7.53^1 = 7.53

Phase 2

Revenue Factor

An average of the percentage of total revenue a pool contributed during the most recent two protocol fee distribution periods. This factor is bounded by 1 to 100 and is multiplied by the overall factor from Phase 1.

Total Revenue source is the core pools worksheet 11.

Pool revenue source is this dune dashboard 9.

Sample Calculations

Aura/WETH

July 11th → July 25th

Total Revenue = $489,308 * 2 = $978,616

Aura/WETH 50/50 Revenue: $24,060

Percentage of total: 2.45

July 25th → August 8th

Total Revenue = $686,997 * 2 = $1,373,994

Aura/WETH 50/50 Revenue: $34,504

Percentage of total: 2.51

Average of both periods percentage of total: 2.48

Overall factor of 7.53 * 2.48 = 18.67

Conclusion

You can find a mostly complete spreadsheet here 36 that shows the relevant factors for each gauge Balancer has. The proposed threshold for imposing a 2% or 5% cap is a factor of 5, after the revenue factor is applied. This effectively means a 50/50 token/weth pool with token having a market cap of $12.5M would have a factor of 5 and be right on the cut-off line. All gauges below this threshold would migrate to a new gauge with a max_weight modifier. Governance can adjust this in the future so if a gauge becomes a strong revenue generator or the market cap of tokens increases significantly there is no migration required to remove the cap.

What defines how a gauge moves between being capped and uncapped and vice versa? The crypto market can change rapidly as we all know. If a gauge crosses the threshold in either direction the community can put forth a proposal to adjust that gauge’s status and voters will decide if it is justified or not based on the data.

Most new gauges won’t have a revenue factor so they will only be assessed on the overall factor - any new gauge with less than a 5 would be introduced with a cap. As it earns a revenue factor if that pushes it above a 5 a proposal can be made to remove the cap.

A complete list of gauges which will undergo a migration to a capped gauge:

TEMPLE/DAI (Ethereum)

USDC/TEL/DFX (Polygon)

RBW/WETH (Polygon)

BADGER/wBTC (Ethereum)

NOTE/WETH (Ethereum)

DFX/WETH (Ethereum)

VSTA/WETH (Arbitrum)

TCR/DAI (Ethereum)

VITA/WETH 80/20 (Ethereum)

wBTC/DIGG/graviAURA (Ethereum)

WNCG/WETH (Ethereum)

NOTE/WETH 80/20 (Ethereum)

HAUS/WETH (Ethereum)

PAL/USDC (Ethereum)

FDT/WETH (Ethereum)

D2D/USDC (Ethereum)

D2D/BAL (Ethereum)

PICKLE/WETH (Arbitrum)

CRE8R/WETH (Arbitrum)

Specification

#1
If approved, the DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will initiate a transaction to the Authorizer 0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6 calling grantRole with the following arguments:

role: 0xaf9696666cd7f5e2ffb6abcf1a60f195cf8c7a99e7c63db98d14948fd4855f06

This corresponds with the role for calling addGaugeFactory on the gaugeAdder v2 as seen here 2.

account: 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f

This gives the DAO Multisig the ability to call the above function.

#2
The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will initiate a transaction to the gaugeAdder 0x2fFB7B215Ae7F088eC2530C7aa8E1B24E398f26a calling addGaugeFactory with the following arguments:

factory: 0xf1665E19bc105BE4EDD3739F88315cC699cc5b65

This corresponds to the mainnet gauge factory v2 as seen here 1.

gaugeType: 2

This corresponds to the Ethereum gauge factory, which can be confirmed by calling gauge_type_names with the argument of 2 on the gaugeController.

#3
The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will initiate a transaction to the gaugeAdder 0x2fFB7B215Ae7F088eC2530C7aa8E1B24E398f26a calling addGaugeFactory with the following arguments:

factory: 0x1c99324EDC771c82A0DCCB780CC7DDA0045E50e7

This corresponds to the arbitrum root gauge factory v2 as seen here 3.

gaugeType: 4

This corresponds to the Arbitrum gauge factory, which can be confirmed by calling gauge_type_names with the argument of 4 on the gaugeController.

#4
The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will initiate a transaction to the gaugeAdder 0x2fFB7B215Ae7F088eC2530C7aa8E1B24E398f26a calling addGaugeFactory with the following arguments:

factory: 0x866D4B65694c66fbFD15Dd6fa933D0A6b3940A36

This corresponds to the optimism root gauge factory v2 as seen here 1.

gaugeType: 5

This corresponds to the Optimism gauge factory, which can be confirmed by calling gauge_type_names with the argument of 5 on the gaugeController.

#5
The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will initiate a transaction to the gaugeAdder 0x2fFB7B215Ae7F088eC2530C7aa8E1B24E398f26a calling addGaugeFactory with the following arguments:

factory: 0xa98Bce70c92aD2ef3288dbcd659bC0d6b62f8F13

This corresponds to the polygon root gauge factory v2 as seen here 1.

gaugeType: 3

This corresponds to the Polygon gauge factory, which can be confirmed by calling gauge_type_names with the argument of 3 on the gaugeController.

#6
The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will initiate a transaction to the Authorizer 0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6 calling renounceRole with the following arguments:

role: 0xaf9696666cd7f5e2ffb6abcf1a60f195cf8c7a99e7c63db98d14948fd4855f06

This corresponds with the role for calling addGaugeFactory on the gaugeAdder as seen here 2.

account: 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f

This removes the DAO Multisig’s ability to call the above function.

Then to add the gauges to the voting list:

#7
The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will initiate a transaction to the Authorizer 0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6 calling grantRole with the following arguments:

role: 0xf49d7ffb5922642adc9f29cfb52b2214e81e0b0e54e9cd1e9f70439f0011f368

This corresponds with the role for calling add_gauge on the gaugeController as seen here 1.

account: 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f

This allows the DAO Multisig to directly add gauges to the controller.

#8

The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will interact with the AuthorizerAdaptor at 0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75 and call performAction with the GaugeController at 0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD for the target(address) argument and using 0x3a04f900 followed by each one of the gauge addresses listed below and their corresponding gauge types for the data(bytes) argument. Each gauge will be its own transaction, thus there will be a total of 19 transactions.

List of contracts

0xb0FB3e031224bd449974AB02cae369E81db58Fa6
0xb61014De55A7AB12e53C285d88706dca2A1B7625
0xa3E3B2C9C7A04894067F106938cA81e279bC3831
0x3F29e69955E5202759208DD0C5E0BA55ff934814
0x96d7e549eA1d810725e4Cd1f51ed6b4AE8496338
0x27Fd581E9D0b2690C2f808cd40f7fe667714b575
0xd863DA50435D9FCf75008f00e49fFd0722291d94
0xf46FD013Acc2c6988BB2f773bd879101eB5d4573
0xAde9C0054f051f5051c4751563C7364765Bf52f5
0xc2D343E2C9498E905F53C818B88eB8064B42D036
0xE5f24cD43f77fadF4dB33Dab44EB25774159AC66
0x47c56A900295df5224EC5e6751dC31eb900321D5
0x09AFEc27F5A6201617aAd014CeEa8deb572B0608
0x00Ab79a3bE3AacDD6f85C623f63222A07d3463DB
0xe2b680A8d02fbf48C7D9465398C4225d7b7A7f87
0x59E7DBfF74B2B76957E6a3f25cCEe40b2f3421D0
0x1249c510e066731FF14422500466A7102603da9e
0x231B05F3a92d578EFf772f2Ddf6DacFFB3609749
0x077794c30AFECcdF5ad2Abc0588E8CEE7197b71a

#9
The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will initiate a transaction to the Authorizer 0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6 calling renounceRole with the following arguments:

role: 0xf49d7ffb5922642adc9f29cfb52b2214e81e0b0e54e9cd1e9f70439f0011f368

This corresponds with the role for calling add_gauge on the gaugeController as seen here 1.

account: 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f

This removes the ability for the DAO Multisig to directly add gauges to the controller.

Transaction json for #7, 8, and 9

Transaction json
{"version":"1.0","chainId":"1","createdAt":1661868407382,"meta":{"name":"Transactions Batch","description":"","txBuilderVersion":"1.9.0","createdFromSafeAddress":"0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f","createdFromOwnerAddress":"","checksum":"0x948dc5b0b328579096c0c1ef4458efc048b725b93e64d186ae58db5ed2069247"},"transactions":[{"to":"0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","payable":false},"contractInputsValues":{"role":"0xf49d7ffb5922642adc9f29cfb52b2214e81e0b0e54e9cd1e9f70439f0011f368","account":"0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f900000000000000000000000000b0FB3e031224bd449974AB02cae369E81db58Fa60000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f900000000000000000000000000b61014De55A7AB12e53C285d88706dca2A1B76250000000000000000000000000000000000000000000000000000000000000003"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f900000000000000000000000000a3E3B2C9C7A04894067F106938cA81e279bC38310000000000000000000000000000000000000000000000000000000000000003"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f9000000000000000000000000003F29e69955E5202759208DD0C5E0BA55ff9348140000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f90000000000000000000000000096d7e549eA1d810725e4Cd1f51ed6b4AE84963380000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f90000000000000000000000000027Fd581E9D0b2690C2f808cd40f7fe667714b5750000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f900000000000000000000000000d863DA50435D9FCf75008f00e49fFd0722291d940000000000000000000000000000000000000000000000000000000000000004"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f900000000000000000000000000f46FD013Acc2c6988BB2f773bd879101eB5d45730000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f900000000000000000000000000Ade9C0054f051f5051c4751563C7364765Bf52f50000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f900000000000000000000000000c2D343E2C9498E905F53C818B88eB8064B42D0360000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f900000000000000000000000000E5f24cD43f77fadF4dB33Dab44EB25774159AC660000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f90000000000000000000000000047c56A900295df5224EC5e6751dC31eb900321D50000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f90000000000000000000000000009AFEc27F5A6201617aAd014CeEa8deb572B06080000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f90000000000000000000000000000Ab79a3bE3AacDD6f85C623f63222A07d3463DB0000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f900000000000000000000000000e2b680A8d02fbf48C7D9465398C4225d7b7A7f870000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f90000000000000000000000000059E7DBfF74B2B76957E6a3f25cCEe40b2f3421D00000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f9000000000000000000000000001249c510e066731FF14422500466A7102603da9e0000000000000000000000000000000000000000000000000000000000000002"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f900000000000000000000000000231B05F3a92d578EFf772f2Ddf6DacFFB36097490000000000000000000000000000000000000000000000000000000000000004"}},{"to":"0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","payable":true},"contractInputsValues":{"target":"0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD","data":"0x3a04f900000000000000000000000000077794c30AFECcdF5ad2Abc0588E8CEE7197b71a0000000000000000000000000000000000000000000000000000000000000004"}},{"to":"0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6","value":"0","data":null,"contractMethod":{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","payable":false},"contractInputsValues":{"role":"0xf49d7ffb5922642adc9f29cfb52b2214e81e0b0e54e9cd1e9f70439f0011f368","account":"0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f"}}]}


For those gauges which are migrating, the new capped gauges will be live for voting by September 8th. The old gauges will be killed on September 21st. This allows enough time for votes and bribes to be moved over to the new capped gauges.

On September 21st, the DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will interact with the AuthorizerAdaptor at 0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75 and call performAction using 0xab8f0945 for the data(bytes) argument and the following list of contracts for the target(address) argument. Each contract will be its own transaction, thus there will be a total of 19 transactions.

List of gauge contracts

TEMPLE/DAI (Ethereum) → 0x7DfaDb8c3230890a81Dc9593110b63Bc088740d4
USDC/TEL/DFX (Polygon) → 0xEad3C3b6c829d54ad0a4c18762c567F728eF0535
RBW/WETH (Polygon) → 0xD13A839BB48d69A296a1fa6D615B6C39B170096B
BADGER/wBTC (Ethereum) → 0xAF50825B010Ae4839Ac444f6c12D44b96819739B
NOTE/WETH (Ethereum) → 0xC5f8B1de80145e3a74524a3d1a772a31eD2B50cc
DFX/WETH (Ethereum) → 0x7CDc9dC877b69328ca8b1Ff11ebfBe2a444Cf350
VSTA/WETH (Arbitrum) → 0x6cb1A77AB2e54d4560fda893E9c738ad770da0B0
TCR/DAI (Ethereum) → 0xE273d4aCC555A245a80cB494E9E0dE5cD18Ed530
VITA/WETH 80/20 (Ethereum) → 0xb154d9D7f6C5d618c08D276f94239c03CFBF4575
wBTC/DIGG/graviAURA (Ethereum) → 0x5204f813cF58a4722E481b3b1cDfBBa45088fE36
WNCG/WETH (Ethereum) → 0x86EC8Bd97622dc80B4a7346bc853760d99D14C7F
NOTE/WETH 80/20 (Ethereum) → 0x40AC67ea5bD1215D99244651CC71a03468bce6c0
HAUS/WETH (Ethereum) → 0xa57453737849A4029325dfAb3F6034656644E104
PAL/USDC (Ethereum) → 0xe3A3Ca91794a995fe0bB24060987e73931B15f3D
FDT/WETH (Ethereum) → 0xbD0DAe90cb4a0e08f1101929C2A01eB165045660
D2D/USDC (Ethereum) → 0x5A481455E62D5825429C8c416f3B8D2938755B64
D2D/BAL (Ethereum) → 0xc43d32BC349cea7e0fe829F53E26096c184756fa
PICKLE/WETH (Arbitrum) → 0x899F737750db562b88c1E412eE1902980D3a4844
CRE8R/WETH (Arbitrum) → 0xACFDA9Fd773C23c01f5d0CAE304CBEbE6b449677


If the framework is approved and the 5% cap option has the majority of votes, the following will happen:

The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will initiate a transaction to the Authorizer 0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6 calling grantRoles with the following arguments:

roles: [0xae60dce27f51ce5815357b9f6b40f200557867f8222262a1646c005d09b7dfba,0xae60dce27f51ce5815357b9f6b40f200557867f8222262a1646c005d09b7dfba,0xae60dce27f51ce5815357b9f6b40f200557867f8222262a1646c005d09b7dfba]

These correspond to the roles for calling setRelativeWeightCap on gauges with this function.
First one is for the mainnet gauge factory v2 per this.
Second one is for the arbitrum root gauge factory per this 1.
Third one is the polygon root gauge factory per this.

account: 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f

This allows the DAO Multisig to call the above function.

The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will then interact with the authorizer adaptor 0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75 and call performAction with the following:

data: 0x10d3eb0400000000000000000000000000000000000000000000000000b1a2bc2ec50000

target: each of the following gauge contracts (one tx per contract)

List of gauge contracts

0xb0FB3e031224bd449974AB02cae369E81db58Fa6
0xb61014De55A7AB12e53C285d88706dca2A1B7625
0xa3E3B2C9C7A04894067F106938cA81e279bC3831
0x3F29e69955E5202759208DD0C5E0BA55ff934814
0x96d7e549eA1d810725e4Cd1f51ed6b4AE8496338
0x27Fd581E9D0b2690C2f808cd40f7fe667714b575
0xd863DA50435D9FCf75008f00e49fFd0722291d94
0xf46FD013Acc2c6988BB2f773bd879101eB5d4573
0xAde9C0054f051f5051c4751563C7364765Bf52f5
0xc2D343E2C9498E905F53C818B88eB8064B42D036
0xE5f24cD43f77fadF4dB33Dab44EB25774159AC66
0x47c56A900295df5224EC5e6751dC31eb900321D5
0x09AFEc27F5A6201617aAd014CeEa8deb572B0608
0x00Ab79a3bE3AacDD6f85C623f63222A07d3463DB
0xe2b680A8d02fbf48C7D9465398C4225d7b7A7f87
0x59E7DBfF74B2B76957E6a3f25cCEe40b2f3421D0
0x1249c510e066731FF14422500466A7102603da9e
0x231B05F3a92d578EFf772f2Ddf6DacFFB3609749
0x077794c30AFECcdF5ad2Abc0588E8CEE7197b71a