Payload PR - BIP-343
Background
On the 24th of June 2023, the Balancer Emergency SubDAO, put all Composable Stable Pools (CSPs) into Recovery Mode. 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. 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 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 permissions 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. |
More information about the various Balancer Multisigs and their functions can be found in the multisig-ops repo
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 file to the source of truth, which should match the order found in the source of truth for actionIds on the balancer-deployments.
For record, the contents of 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.