[BIP-183] Grant V2 factory disable() and V3 standard permissions on Gnosis Chain

Payload PR - BIP-183


Balancer is getting ready to double-down on gnosis-chain. In doing so, we want to ensure that all of our recent updates, described in BIP-175 are applied to the gnosis chain.

This involves granting the Emergency DAO access and the mandate to disable the V2 pool factories, and granting the proper permissions as defined by prior governance around pools and factories to the parties as specified below.

The v3 Weighted Pool Factory and the v3 Composable Stable Pool Factory where deployed to fix reentrancy issue described here.

English Specification

The transaction details were generated by this script with inputs and outputs in this directory

The following files can be found both linked below and in the payload PR linked above:

Filename Description of Contents
inputs.json The inputs to the script mapping functions and deployments to target addresses that can execute them.
results_address_sorted.md The resulting changes printed in a table sorted by target chain and target address. (to easily understand permisisons granted)
results_deployment_sorted.md The resulting changes printed in a table sorted by target chain and target deployment. (for verification against action ids)
function_descriptions.md A table that describes what each function that is being granted privileged access to allows.
chainname.json For each change with changes, a transaction builder json named after said chain exists to apply the changes described in the tables.

In the tables above:

The “emergency” caller group:

  • maps to the Balancer Emergency DAO Multisig as defined in this vote.

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.

More information about the various Balancer Multisigs and their functions can be found in the multisig-ops repo


As described in the payload json, the authorizer will be called to grant the roles as described.

The change can be reviewed by the below by comparing the results_deployment_sorted.md file to the source of truth, which should match the order found in the source of truth for actionIds on the balancer-v2-monorepo.

For record, the contents of results_address_sorted.md are printed here:

deployment chain function role target target_address
20230206-weighted-pool-v3 gnosis setSwapFeePercentage(uint256) 0xec5cf9ce37bce68429403f673d6dfd0a89d33d4af5960016f9a1bbd07c71be88 feeManager 0x14969B55a675d13a1700F71A37511bc22D90155a
20230206-composable-stable-pool-v3 gnosis setSwapFeePercentage(uint256) 0x49832d9b75ad868dbf821cf6ee67ab240ff87c62516d7ce788883fdb8845b215 feeManager 0x14969B55a675d13a1700F71A37511bc22D90155a
20230206-composable-stable-pool-v3 gnosis startAmplificationParameterUpdate(uint256,uint256) 0x8b804839ef6ccdd1c81145961370ad18658e0bf277e9541fcac3915a5608b94d feeManager 0x14969B55a675d13a1700F71A37511bc22D90155a
20230206-composable-stable-pool-v3 gnosis stopAmplificationParameterUpdate() 0xe0b032f405d9019d046250109c96eb24cf9ff8ed4694d761a65f6153000193c3 feeManager 0x14969B55a675d13a1700F71A37511bc22D90155a
20220908-weighted-pool-v2 gnosis disable() 0x0a7c328c61ac04bc0e79818b5fa98658f18c222d04e7433de4d87fcbfa15e08e emergency 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962
20221122-composable-stable-pool-v2 gnosis disable() 0xa676b10c0a312087e255fee5692d8b31aec2a0839a91e715a43860c3e62437e3 emergency 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962
20230206-weighted-pool-v3 gnosis disable() 0xbe826ebecfd64701333db6557b090b44c6155461ce9aaf6efce57ad8dc12bd2e emergency 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962
20230206-weighted-pool-v3 gnosis enableRecoveryMode() 0x2e31b466b15801536da90012c6e9916b3e0587c2d0b7c63328971c531b6ccf87 emergency 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962
20230206-weighted-pool-v3 gnosis pause() 0xbfd04f562f5ffcabe925c3bca0e8c47adfc4018a6ddeea8baaeccc502815f86d emergency 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962
20230206-composable-stable-pool-v3 gnosis disable() 0x9f637c196de3124bc0febbb78f206994fdb68c3f8fe8070b42230a76e14ece0b emergency 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962
20230206-composable-stable-pool-v3 gnosis enableRecoveryMode() 0xd6f4df0a512a29fa4cf2fcfbe4a0b5ea1266a4bbb1ab6fb5761205dbb038441f emergency 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962
20230206-composable-stable-pool-v3 gnosis pause() 0xf5a74fe74a42c6fe47ddc84feffff02db467d464946b66b317ef6ceeb66bda38 emergency 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962

Risk Assessment

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


Directory of Addresses used by script which generated the table and multsig payloads