# \[BIP-343\] Grant emergencyDAO disable recovery mode on Weighted and ComposableStable pools

**URL:** https://forum.balancer.fi/t/bip-343-grant-emergencydao-disable-recovery-mode-on-weighted-and-composablestable-pools/4925
**Category:** General Proposal
**Created:** [June 28, 2023, 5:11pm UTC](https://forum.balancer.fi/t/bip-343-grant-emergencydao-disable-recovery-mode-on-weighted-and-composablestable-pools/4925 "2023-06-28T17:11:54Z")
**Posts on this page:** 4
**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: [June 28, 2023, 5:11pm UTC](https://forum.balancer.fi/t/bip-343-grant-emergencydao-disable-recovery-mode-on-weighted-and-composablestable-pools/4925/1 "2023-06-28T17:11:54Z")

</div>

## [Payload PR - BIP-343](https://github.com/BalancerMaxis/multisig-ops/pull/303)

## Background

On the 24th of June 2023, the [Balancer Emergency SubDAO](https://docs.balancer.fi/concepts/governance/emergency.html#emergency-subdao), put all Composable Stable Pools (CSPs) into [Recovery Mode](https://forum.balancer.fi/t/bip-121-permission-granting-recovery-mode/4045). This was in response to an incident reported by ImmuniFi that Balancer Labs was not able to immediately verify or discount.

Ongoing investigation is leading to the belief, which still must be verified, that many of the pools can run safely outside [Recovery Mode](https://forum.balancer.fi/t/bip-121-permission-granting-recovery-mode/4045). The Emergency DAO has requested that we grant rights to disableRecoveryMode() on all CSPs and all Weighted Pools version 2 and above.

This will allow them to unpause pools as it becomes sensible, without a 1-2 week governance delay.

### TL;DR on recovery mode:

- Pools in Recovery Mode do not collect protocol fees(and therefore do not accumulate core pools incentives)
- Pools in Recovery Mode can only be joined and exited proportionally.
- Recovery Mode may interfere with the compatibility of pools.

## English Specification

The transaction details were generated by [this script](https://github.com/BalancerMaxis/multisig-ops/blob/main/action-scripts/gen_add_permissions_payload.py) with inputs and outputs in [this directory](https://github.com/BalancerMaxis/multisig-ops/tree/staging/BIPs/BIP-343)

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

| Filename | Description of Contents |
| --- | --- |
| [inputs.json](https://github.com/BalancerMaxis/multisig-ops/blob/staging/BIPs/BIP-343/inputs.json) | The inputs to the script mapping functions and deployments to target addresses that can execute them. |
| [results\_address\_sorted.md](https://github.com/BalancerMaxis/multisig-ops/blob/staging/BIPs/BIP-343/results_address_sorted.md) | The resulting changes printed in a table sorted by target chain and target address. (to easily understand permissions granted) |
| [results\_deployment\_sorted.md](https://github.com/BalancerMaxis/multisig-ops/blob/staging/BIPs/BIP-343/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](https://github.com/BalancerMaxis/multisig-ops/blob/staging/BIPs/BIP-343/function_descriptions.md) | A table that describes what each function that is being granted privileged access to allows. |
| [`chainname`.json](https://github.com/BalancerMaxis/multisig-ops/tree/staging/BIPs/2023-W26/BIP-343/) | For each change with changes, a transaction builder json named after said chain exists to apply the changes described in the tables. |

_More information about the various Balancer Multisigs and their functions can be found in the [multisig-ops repo](https://github.com/BalancerMaxis/multisig-ops/blob/staging/multisigs.md)_

# Specification

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](https://github.com/BalancerMaxis/multisig-ops/tree/staging/BIPs/BIP-343/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-deployments](https://github.com/balancer/balancer-deployments/tree/master/action-ids).

For record, the contents of [results\_address\_sorted.md](https://github.com/BalancerMaxis/multisig-ops/tree/staging/BIPs/BIP-343/results_address_sorted.md) are printed here:

| deployment | chain | function | role | caller | caller\_address |
| --- | --- | --- | --- | --- | --- |
| 20230320-weighted-pool-v4 | arbitrum | disableRecoveryMode() | 0x3f9dc3da8a6332271be3fccd1a107fd3117a1a988666ff673241edc8c12279ac | multisigs/emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20230206-weighted-pool-v3 | arbitrum | disableRecoveryMode() | 0x0fb35afbdd369d25e1e13986af342dd66f4af22e88628aded66fc015fddee9e6 | multisigs/emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20220906-composable-stable-pool | arbitrum | disableRecoveryMode() | 0x6849898f08c7f64552f27ae1a4dfcc908200c4d6901ee3945a8c62dbf9cefb8f | multisigs/emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20221122-composable-stable-pool-v2 | arbitrum | disableRecoveryMode() | 0x85896342da44e8444ef54be6c4643b51c1e23270bb9ec1f0257cd03d72a80cb6 | multisigs/emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20230206-composable-stable-pool-v3 | arbitrum | disableRecoveryMode() | 0x0585ff33fe95b333f37198850856b5b788891cbc6fd99c447b8d7625c94a33b9 | multisigs/emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20230320-composable-stable-pool-v4 | arbitrum | disableRecoveryMode() | 0x2cdef929bdc29c7b9ca832b8a8f62ce592fee150df38b736a8cab1d2918fc179 | multisigs/emergency | 0xf404C5a0c02397f0908A3524fc5eb84e68Bbe60D |
| 20230320-weighted-pool-v4 | avalanche | disableRecoveryMode() | 0xd674de2cecb3a543953d0844369358124e617428c5e1bbff8924a84e7e4128fa | multisigs/emergency | 0x308f8d3536261C32c97D2f85ddc357f5cCdF33F0 |
| 20230206-weighted-pool-v3 | avalanche | disableRecoveryMode() | 0x57a99f3ed4c936dc3acc397e914c860702345856a9cca3a5be4c01fefa6a7674 | multisigs/emergency | 0x308f8d3536261C32c97D2f85ddc357f5cCdF33F0 |
| 20230320-composable-stable-pool-v4 | avalanche | disableRecoveryMode() | 0xe41196603a4830aa78064fa1ce052e42607bc0a162707e1ce030e7fd9757f0b1 | multisigs/emergency | 0x308f8d3536261C32c97D2f85ddc357f5cCdF33F0 |
| 20230320-weighted-pool-v4 | gnosis | disableRecoveryMode() | 0x29596d20dcc54c557d94ae57af84f08715a588be1d756198eec61a3dc368b6c1 | multisigs/emergency | 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962 |
| 20230206-weighted-pool-v3 | gnosis | disableRecoveryMode() | 0x9023a208ea63197b4da99dc4a096d44fb3152b807b6e4d37f15239d9fff8beb2 | multisigs/emergency | 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962 |
| 20221122-composable-stable-pool-v2 | gnosis | disableRecoveryMode() | 0x478e7f53087deab85ae5870218c02821a6bafa4a75984797ac58cdfd513a385b | multisigs/emergency | 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962 |
| 20230206-composable-stable-pool-v3 | gnosis | disableRecoveryMode() | 0x4b0cfb0e3afde1903ef88f0072b490a0d78f1027a165371b1b4732daa84a9559 | multisigs/emergency | 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962 |
| 20230320-composable-stable-pool-v4 | gnosis | disableRecoveryMode() | 0x338ff79f4b040df80f9cbc5217e904e2c8dbb7fb58beb6100c837ffa25ab4197 | multisigs/emergency | 0xd6110A7756080a4e3BCF4e7EBBCA8E8aDFBC9962 |
| 20230320-weighted-pool-v4 | mainnet | disableRecoveryMode() | 0x883ac0fb54f0b07161f4c1d1132c7179cf4fd457dec4d2cf15af62bfe93d6402 | multisigs/emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20230206-weighted-pool-v3 | mainnet | disableRecoveryMode() | 0xd1cab845861601849b43df194d75e16c676ee31cf20296f392e9d44dd3793ef3 | multisigs/emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20220906-composable-stable-pool | mainnet | disableRecoveryMode() | 0xdcae01a1d3143e115458cda9b816ea278dd5daf08d9b6d3ec668632aa7b82dad | multisigs/emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20221122-composable-stable-pool-v2 | mainnet | disableRecoveryMode() | 0x85896342da44e8444ef54be6c4643b51c1e23270bb9ec1f0257cd03d72a80cb6 | multisigs/emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20230206-composable-stable-pool-v3 | mainnet | disableRecoveryMode() | 0xa35b682012cf580f34e9cd41e4bf1c0210b6ebfc1a952fb582842c0e23b8c069 | multisigs/emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20230320-composable-stable-pool-v4 | mainnet | disableRecoveryMode() | 0xb6f4ab951143da625c0c25d6eca1ce9e007e3139abfd9cfec3a301bad7238e15 | multisigs/emergency | 0xA29F61256e948F3FB707b4b3B138C5cCb9EF9888 |
| 20230320-weighted-pool-v4 | optimism | disableRecoveryMode() | 0xd674de2cecb3a543953d0844369358124e617428c5e1bbff8924a84e7e4128fa | multisigs/emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20230206-weighted-pool-v3 | optimism | disableRecoveryMode() | 0x94d058c565b594a202b88b57a685b093db0fd3406b926f2033a3443a6d8e1b50 | multisigs/emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20220906-composable-stable-pool | optimism | disableRecoveryMode() | 0x53a0625529c519f2e4a706b874baf30797466df455c9d39cd3ee19e6fe5bc6e2 | multisigs/emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20221122-composable-stable-pool-v2 | optimism | disableRecoveryMode() | 0x85896342da44e8444ef54be6c4643b51c1e23270bb9ec1f0257cd03d72a80cb6 | multisigs/emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20230206-composable-stable-pool-v3 | optimism | disableRecoveryMode() | 0xe4efb851c410e171273aee46d6939a91154b536e375e6fe59c09a4e617072339 | multisigs/emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20230320-composable-stable-pool-v4 | optimism | disableRecoveryMode() | 0xf65bca6198c80a6fc89409c116db12c0427a0b571cd0d2ee5dd614145d006810 | multisigs/emergency | 0xd4c87b33afcE39F1E3F4aF1ce8fFFF7241d9128B |
| 20230320-weighted-pool-v4 | polygon | disableRecoveryMode() | 0x70d81f1b0f71c8c3037ee34b69ad6980888bab8b2e32959f8c6aac274a7f10cb | multisigs/emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20230206-weighted-pool-v3 | polygon | disableRecoveryMode() | 0x70ea65bcadbec99c10058d43f9acdc9a5ad05cde666b7d0065818feb763e7cb2 | multisigs/emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20220906-composable-stable-pool | polygon | disableRecoveryMode() | 0x2bd529cf8062fa0ff07c2054e5dc654a104415c2ae171092c450a88c9ff098a9 | multisigs/emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20221122-composable-stable-pool-v2 | polygon | disableRecoveryMode() | 0x85896342da44e8444ef54be6c4643b51c1e23270bb9ec1f0257cd03d72a80cb6 | multisigs/emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20230206-composable-stable-pool-v3 | polygon | disableRecoveryMode() | 0x3f743640e5e338ede5771590dab93e6860616f4318ca6d5a578c84be2c329844 | multisigs/emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20230320-composable-stable-pool-v4 | polygon | disableRecoveryMode() | 0xdb63b0c040446fcfa9503943eff986bc051fb5e7cb8f83a8bcebb7115c535b60 | multisigs/emergency | 0x3c58668054c299bE836a0bBB028Bee3aD4724846 |
| 20230320-weighted-pool-v4 | zkevm | disableRecoveryMode() | 0xd21198f97672ee6118c9598a1b4c2053515bf28a40c4df5cf02365c4ff3d5ba7 | multisigs/emergency | 0x79b131498355daa2cC740936fcb9A7dF76A86223 |
| 20230320-composable-stable-pool-v4 | zkevm | disableRecoveryMode() | 0x5610aeafaa3f5c4ef9b9b45ee9c0810b2f7bd64b7b504f19d1a8a3bde062a966 | multisigs/emergency | 0x79b131498355daa2cC740936fcb9A7dF76A86223 |

## Risk Assessment

This BIP could allow the EmergencyDAO to remove pools from recovery mode without engaging governance or communicating the change. Voting on this BIP accepts that those who put a pool into Recovery Mode can also move it out without governance intervention.

## References

[Balancer Deployments](https://github.com/balancer/balancer-deployments)  
[BAL Addresses](https://github.com/BalancerMaxis/bal_addresses)

---

<div class="post-metadata">

### Author: ![jeffrey](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.balancer.fi/jeffrey/32/2417_2.png) [@jeffrey](https://forum.balancer.fi/u/jeffrey)
#### Post date: [June 28, 2023, 5:24pm UTC](https://forum.balancer.fi/t/bip-343-grant-emergencydao-disable-recovery-mode-on-weighted-and-composablestable-pools/4925/2 "2023-06-28T17:24:28Z")

</div>

Since emergencyDAO has permission to enable recovery mode, makes total sense that they can also disable it when security issues are cleared.

---

<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: [June 28, 2023, 7:57pm UTC](https://forum.balancer.fi/t/bip-343-grant-emergencydao-disable-recovery-mode-on-weighted-and-composablestable-pools/4925/3 "2023-06-28T19:57:21Z")

</div>

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

---

<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: [June 30, 2023, 1:14am UTC](https://forum.balancer.fi/t/bip-343-grant-emergencydao-disable-recovery-mode-on-weighted-and-composablestable-pools/4925/4 "2023-06-30T01:14:40Z")

</div>

Secondary review by master @solarcurve revealed that CSPv4 had been missed. The payload has been updated, as has the BIP text above with new information. The snapshot text can not be changed and still does not reflect CSPv4.

The Maxis have deemed it acceptable to make this change early in the snapshot period in order to avoid future governance spam and potential delays in disabling recovery mode.

If anyone believes otherwise, please say so and we can run this again next week.
