# \[BIP-175\] Grant permissions for V3 pool factories

**URL:** <https://forum.balancer.fi/t/bip-175-grant-permissions-for-v3-pool-factories/4360>\
**Category:** General Proposal\
**Created:** [February 9, 2023, 12:40am UTC](https://forum.balancer.fi/t/bip-175-grant-permissions-for-v3-pool-factories/4360 "2023-02-09T00:40:46Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tritium](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.balancer.fi/tritium/32/2011_2.png) [@Tritium](https://forum.balancer.fi/u/Tritium)\
**Post date:** [February 9, 2023, 12:40am UTC](https://forum.balancer.fi/t/bip-175-grant-permissions-for-v3-pool-factories/4360/1 "2023-02-09T00:40:46Z")

</div>

**Payload PR:** [BIP-175: Authorize V3 factories by Tritium-VLK · Pull Request #57 · BalancerMaxis/multisig-ops · GitHub](https://github.com/BalancerMaxis/multisig-ops/pull/57)

## Background

The [v3 Weighted Pool Factory](https://github.com/balancer-labs/balancer-v2-monorepo/tree/master/pkg/deployments/tasks/20230206-weighted-pool-v3) and the [v3 Composable Stable Pool Factory](https://github.com/balancer-labs/balancer-v2-monorepo/tree/master/pkg/deployments/tasks//20230206-composable-stable-pool-v3) where deployed to fix reentrancy issue described [here](https://forum.balancer.fi/t/reentrancy-vulnerability-scope-expanded/4345). Some initial “wire-up” of permissions is required to bring them into standard function. This BIP lays out these changes and requests permission to apply them.

## English Specification

The authorisations to be ratified by this proposal would grant the same permissions to the [Balancer Mulitisigs](https://github.com/Tritium-VLK/multisig-ops) as the v2 factories as described by [BIP-62](https://forum.balancer.fi/t/bip-62-stable-v2-composablestable-weighted-v2-permission-granting/3702).

The specific permissions are best described by this map, which links function calls on the v3 pool and factory contracts to callers:

```json
{
    "setSwapFeePercentage(uint256)": "feeManager",
    "startAmplificationParameterUpdate(uint256,uint256)": "feeManager",
    "stopAmplificationParameterUpdate()": "feeManager",
    "pause()": "emergency",
    "disable()": "emergency",
    "enableRecoveryMode()": "emergency",
}

```

The “emergency” caller maps to the Balancer Emergency DAO Multisig as defined in [this vote](https://forum.balancer.fi/t/form-the-emergency-subdao/3197).

The feeManager caller group maps to the feeManager multisig controlled by the Balancer Maxis on all chains except mainnet. On mainnet a special feeSetter multisig exists to manage a-factors and a gautletFeeSetter contract that allows bulk changing of fees. The maxi’s functionally control all contracts that make up the feeManager target group.

### Authorize the Emergency subDAO to pause the pools

Just like with previous pools, these new pools have an emergency pause period which is hardcoded at 3 months from the time the factories were deployed. During the pause period, the Balancer Governance Multisig has the power to gracefully pause the system in case vulnerabilities or issues arise. Funds can always be withdrawn by users, even during an emergency pause, and the pause is only to be invoked in situations where user funds may be at risk.

Since gathering 6/11 governance multisig signers during an emergency may not be feasible or expedient, we propose also authorizing the [Emergency subDAO](https://forum.balancer.fi/t/form-the-emergency-subdao/3197) to pause pools. Note that after the 3-month pause period ends, neither the Governance Multisig nor the Emergency subDAO will have any pause power. This authorization only applies to the composableStable and weighted v3 pool types.

### Authorize Balancer Maxis to manage pool parameters

Each pool’s smart contract contains a series of parameters that affect their efficiency and can be tuned depending on market conditions. The Balancer Maxis have been managing fees and the amplification factor for weighted and stable pools historically, and this would grant them the ability to do so for the new pool types below if this proposal is approved by the community. Any updates to a pool’s parameters will be announced in Discord beforehand.

- Stable Pools v3:
  - swap fee
  - amplification parameter

- composableStable:
  - swap fee
  - amplification parameter

- Weighted v3
  - swap fee

# Specification

The DAO multisig in each network will initiate transactions with the Authorizer `0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6` calling the function `grantRole` for each one of the following role/account tuples.

For ease of review the below table has been sorted by chain and deployment, which should match the order found in the source of truth for actionIds on the [balancer-v2-monorepo](https://github.com/balancer-labs/balancer-v2-monorepo/tree/master/pkg/deployments/action-ids). This table is also available sorted by chain/address for easy verification of the JSON payloads in the PR linked above.

| deployment | chain | function | role | target | target\_address |
| --- | --- | --- | --- | --- | --- |
| 20230206-composable-stable-pool-v3 | arbitrum | disable() | 0xa23cd4468cbe8403f6163d16350699bab6b407aee02d6a29755b0cffa52dd023 | emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20230206-composable-stable-pool-v3 | arbitrum | enableRecoveryMode() | 0xe6321aecff7f0051958627890aa2a16d7221f860dfa3359a1cea6f4a3f87933e | emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20230206-composable-stable-pool-v3 | arbitrum | pause() | 0xcf96d782d1bc8dd12869fb51374544f9c037fd559b8811972f35756f204c6012 | emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20230206-composable-stable-pool-v3 | arbitrum | setSwapFeePercentage(uint256) | 0xc383be2c6e87a9b18ae919e677f011279a8d98346dbcd5cb326053f5f873b753 | feeManager | 0x7c68c42De679ffB0f16216154C996C354cF1161B |
| 20230206-composable-stable-pool-v3 | arbitrum | startAmplificationParameterUpdate(uint256,uint256) | 0x79f0094a409615c52fb7491ca130145e7ec31efb578af4019db59e6636c07ebf | feeManager | 0x7c68c42De679ffB0f16216154C996C354cF1161B |
| 20230206-composable-stable-pool-v3 | arbitrum | stopAmplificationParameterUpdate() | 0xfaede3ef05348eea541571b87b87560ae56292ed04fd5e08fcced4d41916dfb1 | feeManager | 0x7c68c42De679ffB0f16216154C996C354cF1161B |
| 20230206-weighted-pool-v3 | arbitrum | disable() | 0x3f476d79932a277fc0be18747fc314f1db33802d38a900d529db018c01de81a4 | emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20230206-weighted-pool-v3 | arbitrum | enableRecoveryMode() | 0x1e3379f440ccd8ad4fbacfa446ce3de718eda1a091b271c9053bdedff90cdf1c | emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20230206-weighted-pool-v3 | arbitrum | pause() | 0xbbb29600025604666f66b68dff00546068c5be9c0a5a0fbe825550f6c3519c27 | emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20230206-weighted-pool-v3 | arbitrum | setSwapFeePercentage(uint256) | 0x92253d002d63e0211f775527924e2891f18bb060ff2ab3be19c6b242bafa5fec | feeManager | 0x7c68c42De679ffB0f16216154C996C354cF1161B |
| 20230206-composable-stable-pool-v3 | mainnet | disable() | 0x3fad985e82b2b68120f2bbe4c05b3bcbb41b29519eaa63fb25cb25833043f1e8 | emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20230206-composable-stable-pool-v3 | mainnet | enableRecoveryMode() | 0x8c91ddec262ae544d56464e260d0b840239949d86149c139510d5e399a30099f | emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20230206-composable-stable-pool-v3 | mainnet | pause() | 0xa4d7ff702c3f830a7ce937a195bfb05c081c0c36a462ed72bfbf721bc5a3f462 | emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20230206-composable-stable-pool-v3 | mainnet | setSwapFeePercentage(uint256) | 0x1a88f724f61d4985675e65a2ba85b2a985d250dac00d27e06303f4cdabc906ae | gauntletFeeSetter | 0xE4a8ed6c1D8d048bD29A00946BFcf2DB10E7923B |
| 20230206-composable-stable-pool-v3 | mainnet | startAmplificationParameterUpdate(uint256,uint256) | 0xe560c24a44460de963ea8e6716dd635144e8c4991c131b63dd9e956b1f1415b8 | feeManager | 0xf4A80929163C5179Ca042E1B292F5EFBBE3D89e6 |
| 20230206-composable-stable-pool-v3 | mainnet | stopAmplificationParameterUpdate() | 0x36e63b457adcc8834537417d275eec404708707f4fbe63097f15e865dc3e2847 | feeManager | 0xf4A80929163C5179Ca042E1B292F5EFBBE3D89e6 |
| 20230206-weighted-pool-v3 | mainnet | disable() | 0x0df3339673f8356288d97461676bb443e5def15e6d6e8321add702ef77075160 | emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20230206-weighted-pool-v3 | mainnet | enableRecoveryMode() | 0xa53ffba9aa2195cd7646f9cbaca0985f432bded3dd5319916afc5ec395f280d7 | emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20230206-weighted-pool-v3 | mainnet | pause() | 0x33b06cb79113c1c80d5db0ad41675a5368e7ec0ba8a2fd4d6328524a984d465b | emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20230206-weighted-pool-v3 | mainnet | setSwapFeePercentage(uint256) | 0xd8638fc873fb8c5c0e67c437099a19eb0546fb439dab8babff44196f11d44831 | gauntletFeeSetter | 0xE4a8ed6c1D8d048bD29A00946BFcf2DB10E7923B |
| 20230206-composable-stable-pool-v3 | optimism | disable() | 0xe59ccea4d4a98c33b7c0b3c05a3d65ff930273fa5ee03855a3104befc6d1d362 | emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20230206-composable-stable-pool-v3 | optimism | enableRecoveryMode() | 0xa7508bde3c3d65fa21321ca35b2d1da564bc4a772cff9947de3c3e1a467e9dec | emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20230206-composable-stable-pool-v3 | optimism | pause() | 0x25ec546c5f4dfc2fe31ba04f5cf65a8098b35111075a5fd114ea3475e4254ac6 | emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20230206-composable-stable-pool-v3 | optimism | setSwapFeePercentage(uint256) | 0xe9d4a41f6bb25c8862c0c2c860268861488f862a3702115587343e3c3d6ea29a | feeManager | 0x09Df1626110803C7b3b07085Ef1E053494155089 |
| 20230206-composable-stable-pool-v3 | optimism | startAmplificationParameterUpdate(uint256,uint256) | 0xe0788d96bd3d5c93d8ca894a720bf55835562c15aea8eba5cfb15c2c73bd5652 | feeManager | 0x09Df1626110803C7b3b07085Ef1E053494155089 |
| 20230206-composable-stable-pool-v3 | optimism | stopAmplificationParameterUpdate() | 0x063ab569eba76f955edb79b6f9d647bf9772872dc688a6449689ad4d2d5b5ca3 | feeManager | 0x09Df1626110803C7b3b07085Ef1E053494155089 |
| 20230206-weighted-pool-v3 | optimism | disable() | 0x3e97e0a2e6079577d465a9e3898ed6097ed0c661cb291f58991b80599b0e5558 | emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20230206-weighted-pool-v3 | optimism | enableRecoveryMode() | 0x076ec7596fb2fd56057ab4b4ab843852ee914ca3095f9cdf46a79085b266a748 | emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20230206-weighted-pool-v3 | optimism | pause() | 0xae409b1e306416a87e8d92b1a08f860798e5e882c8785f185db2e2a310793aa1 | emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20230206-weighted-pool-v3 | optimism | setSwapFeePercentage(uint256) | 0x0173d9c9c500f721f528e83cd89297298d530857b46dc4adb8fe329905f4f773 | feeManager | 0x09Df1626110803C7b3b07085Ef1E053494155089 |
| 20230206-composable-stable-pool-v3 | polygon | disable() | 0x9592bbf1ef6b5256ed5698e4cf4610375a5e984fa05ddb8a9c6f2e411f2d0d1e | emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20230206-composable-stable-pool-v3 | polygon | enableRecoveryMode() | 0x4645b2fd612d1e3d4f7cbd5f68df6511f4dedfcba83090853604d4fbf33f467d | emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20230206-composable-stable-pool-v3 | polygon | pause() | 0xf3018734e770ecf7082ee926a91cef5bd218b62d081217bf47f5a67ea7a1e80e | emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20230206-composable-stable-pool-v3 | polygon | setSwapFeePercentage(uint256) | 0xf6c13c09ddba8f114fe2b23ff442766dca7a9bf303adfde386f20ac38c749733 | feeManager | 0x7c68c42De679ffB0f16216154C996C354cF1161B |
| 20230206-composable-stable-pool-v3 | polygon | startAmplificationParameterUpdate(uint256,uint256) | 0x1eeda74ac7741bce16788e080c79c907c79419e41281fa442cc39f8d148a8773 | feeManager | 0x7c68c42De679ffB0f16216154C996C354cF1161B |
| 20230206-composable-stable-pool-v3 | polygon | stopAmplificationParameterUpdate() | 0xe202c405a4ff60ae0c38dea8bbb722ee570a1c89487598e7fc4ede5248a527c7 | feeManager | 0x7c68c42De679ffB0f16216154C996C354cF1161B |
| 20230206-weighted-pool-v3 | polygon | disable() | 0x18be448c0c01ad4576befd4f6bce2abf1214dc50697f946a487657e3c3c66947 | emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20230206-weighted-pool-v3 | polygon | enableRecoveryMode() | 0x8e751c9d2a2e4de88b6c71094d5a2b18be451801333ea94579761179bc9b9ef9 | emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20230206-weighted-pool-v3 | polygon | pause() | 0xb251963ecd27d2fe81c17cdd47c025b03bdc56bd9138b8556a747d1112d8c01b | emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20230206-weighted-pool-v3 | polygon | setSwapFeePercentage(uint256) | 0x22f3e304ab030be776b205711d7ba79f146b07726b10c5e9d29c24dacc09c140 | feeManager | 0x7c68c42De679ffB0f16216154C996C354cF1161B |

_Note that this table and the linked call data was built with a script developed under this [Pull Request](https://github.com/BalancerMaxis/multisig-ops/pull/55)_

## Risk Assessment

This BIP is routine operation for provisioning a new factory. The new factories are themselves a risk mitigation.

## References

[Boosted Pools: Authorize Gauntlet and the Ballers Multisig to manage pool parameters](https://forum.balancer.fi/t/proposal-boosted-pools-authorize-gauntlet-and-the-ballers-multisig-to-manage-pool-parameters/2400)

[Previous swap fee and amp factor permissions granted to BalancerDAO](https://snapshot.org/#/balancer.eth/proposal/0xe8c75512fad1ae00352d70da8572b2184e430d9fbfd1e77369ddc3639bc22695)

[Directory of Addresses used by script which generated the table and multsig payloads](https://github.com/BalancerMaxis/multisig-ops/blob/main/tools/python/brownie/helpers/addresses.py)

---

<div class="post-metadata">

**Author:** ![Xeonus](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.balancer.fi/xeonus/32/3621_2.png) [@Xeonus](https://forum.balancer.fi/u/Xeonus)\
**Post date:** [February 9, 2023, 7:55pm UTC](https://forum.balancer.fi/t/bip-175-grant-permissions-for-v3-pool-factories/4360/2 "2023-02-09T19:55:43Z")

</div>

[https://snapshot.org/#/balancer.eth/proposal/0xa5ec3483b5d271beee925a81aad62d9cc9237615264db32b1f7dfa569837782d](https://snapshot.org/#/balancer.eth/proposal/0xa5ec3483b5d271beee925a81aad62d9cc9237615264db32b1f7dfa569837782d)
