[BIP-813] Grant Permissions for Latest V3 Chain Deployment: Avalanche

PR with Payload

Summary

Following quite a few successful BIPs granting permissions for V3, this proposal simply aims to extend the existing permissions to the newest chain we recently deployed to: Avalanche.

  • BIP-741: basic V3 permissions to manage fees (Maxis) and disable pools (emergency DAO)
  • BIP-778: parameter changes on the stable surge pools
  • BIP-787: addendum to BIP-778
  • BIP-790: added permissions for the Maxis to manage the contract registry
  • BIP-797: allow the fee sweeper and its bot to collect fees
  • BIP-803: added the ability to disable the Gyro ECLPs for the emergency DAO multisig

List of all the permissions from the executed proposals listed above, extended by disable on some newer factories:

Emergency DAO

VaultAdmin.pauseVault
VaultAdmin.unpauseVault
VaultAdmin.pausePool
VaultAdmin.unpausePool
VaultAdmin.pauseVaultBuffers
VaultAdmin.unpauseVaultBuffers
VaultAdmin.enableRecoveryMode
VaultAdmin.disableRecoveryMode
VaultAdmin.enableQuery
VaultAdmin.disableQuery
VaultAdmin.disableQueryPermanently
StablePoolFactory.disable
WeightedPoolFactory.disable
GyroECLPPoolFactory.disable
Gyro2CLPPoolFactory.disable
StableSurgePoolFactory.disable
LBPoolFactory.disable

Maxis

VaultAdmin.setStaticSwapFeePercentage
StablePool.startAmplificationParameterUpdate
StablePool.stopAmplificationParameterUpdate
StableSurgeHook.setMaxSurgeFeePercentage
StableSurgeHook.setSurgeThresholdPercentage
ProtocolFeeController.setGlobalProtocolSwapFeePercentage
ProtocolFeeController.setGlobalProtocolYieldFeePercentage
ProtocolFeeController.setProtocolSwapFeePercentage
ProtocolFeeController.setProtocolYieldFeePercentage
ProtocolFeeController.withdrawProtocolFees
ProtocolFeeController.withdrawProtocolFeesForToken
BalancerContractRegistry.addOrUpdateBalancerContractAlias
BalancerContractRegistry.deprecateBalancerContract
BalancerContractRegistry.deregisterBalancerContract
BalancerContractRegistry.registerBalancerContract

V3 Fee Bot (0x74E283B985EA76c55C8B48d6bD1067a418188424)

ProtocolFeeSweeper.sweepProtocolFeesForToken(address,address,uint256,uint256,address)

Protocol Fee Sweeper

ProtocolFeeCollector.withdrawProtocolFeesForToken(address,address,address)

2 Likes

https://snapshot.box/#/s:balancer.eth/proposal/0x85f87aa704c0007019f7126a0e9ec70e3fb29eb92513fc5ee2a5d5a7ed244402

edit: we have added permissions for the maxis to also call VaultAdmin.setProtocolFeeController to the payload; this to prevent the need for a fullblown migration as needed for all other chains (BIP-804)

Thanks for pushing this.

One small clarification: this is required because the first version of the VaultFactory was deployed in Avalanche. The ProtocolFeeController V1 is deployed and plugged in to the Vault as part of the creation process, and there is no way around it after the VaultFactory is deployed because the Vault address depends on it.

After Avalanche upgraded the network to support 16M as the max block limit, we could effectively deploy the Vault with the same address used in every other network, plugged in to the ProtocolFeeController V1.

This won’t be necessary in future network deployments because we’ve adapted the VaultFactory and the deployment script to separate the deployment of the Vault from the deployment of the ProtocolFeeController. The new factory deploys the same version of the Vault, but accepts the ProtocolFeeController V2. This version has already been executed successfully in Optimism and shall be used from now on.

3 Likes