# \[BIP-57\] Introduce Gauge Framework v1

**URL:** <https://forum.balancer.fi/t/bip-57-introduce-gauge-framework-v1/3604>\
**Category:** General Proposal\
**Created:** [August 18, 2022, 1:56pm UTC](https://forum.balancer.fi/t/bip-57-introduce-gauge-framework-v1/3604 "2022-08-18T13:56:04Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![solarcurve](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.balancer.fi/solarcurve/32/1487_2.png) [@solarcurve](https://forum.balancer.fi/u/solarcurve)\
**Post date:** [August 18, 2022, 1:56pm UTC](https://forum.balancer.fi/t/bip-57-introduce-gauge-framework-v1/3604/1 "2022-08-18T13:56:04Z")

</div>

_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](https://forum.balancer.fi/t/introduction-of-a-weight-ratio-factor-in-liquidity-mining/15) from v1 liquidity mining. You can copy [this spreadsheet](https://docs.google.com/spreadsheets/d/1zKb8x1RqJ5Ap7gXPvYn38U0TwjqAQCzBB62N2d7feto/edit#gid=1999793696) 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](https://docs.google.com/spreadsheets/d/1xwUPpbYq7woVOU9vQ8EB8MY75I-1mauTLyDVwvKUDKo/edit#gid=0).

Pool revenue source is this [dune dashboard](https://dune.com/balancerlabs/Balancer-V2-LP-Revenues).

**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](https://docs.google.com/spreadsheets/d/1zKb8x1RqJ5Ap7gXPvYn38U0TwjqAQCzBB62N2d7feto/edit#gid=1188781228) 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](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/pkg/deployments/action-ids/mainnet/action-ids.json#L615).

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](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/pkg/deployments/tasks/20220822-mainnet-gauge-factory-v2/output/mainnet.json).

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](https://etherscan.io/address/0xc128468b7ce63ea702c1f104d55a2566b13d3abd#readContract).

#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](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/pkg/deployments/tasks/20220823-arbitrum-root-gauge-factory-v2/output/mainnet.json).

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](https://etherscan.io/address/0xc128468b7ce63ea702c1f104d55a2566b13d3abd#readContract).

#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](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/pkg/deployments/tasks/20220823-optimism-root-gauge-factory-v2/output/mainnet.json).

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](https://etherscan.io/address/0xc128468b7ce63ea702c1f104d55a2566b13d3abd#readContract).

#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](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/pkg/deployments/tasks/20220823-polygon-root-gauge-factory-v2/output/mainnet.json).

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](https://etherscan.io/address/0xc128468b7ce63ea702c1f104d55a2566b13d3abd#readContract).

#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](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/pkg/deployments/action-ids/mainnet/action-ids.json#L615).

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](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/pkg/deployments/action-ids/mainnet/action-ids.json#L347).

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](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/pkg/deployments/action-ids/mainnet/action-ids.json#L347).

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](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/pkg/deployments/action-ids/mainnet/action-ids.json#L788).  
Second one is for the arbitrum root gauge factory per [this](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/pkg/deployments/action-ids/mainnet/action-ids.json#L825).  
Third one is the polygon root gauge factory per [this](https://github.com/balancer-labs/balancer-v2-monorepo/blob/master/pkg/deployments/action-ids/mainnet/action-ids.json#L837).

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`

---

_[View the full topic](https://forum.balancer.fi/t/bip-57-introduce-gauge-framework-v1/3604)._
