This proposal's description has been partially trimmed to fit.
The full proposal text can be found on the Balancer proposal: https://snapshot.org/#/balancer.eth/proposal/0x436e1f8b83c63820c8c2fc3cb7eeb564b376e59d984e62ff442052223d3f9aaf
https://github.com/BalancerMaxis/multisig-ops/pull/903
Balancer pools traditionally have been launched with 6-month pause window. This allows for pools to be paused for up to 6 months, within within the first 6 months of deployment of the factory that they were created by. Following this, pauses are no longer possible.
Most of the mitigation around the Linear Pool Hack that occured last year involved finding some way to prevent pools from trading. If all affected pools would have allowed pausing, we could have prevented any losses.
Following these events, Balancer forged a relationship with Hypernative. The ability to pause pools for a longer time will enable future integration with Hypernative's threat detection and response systems.
Balancer V3 pools are intended to also have long pause windows, so this BIP also represents a shift in thinking away from truly unstoppable pools towards something that in theory can be paused by a trusted and authorized party should things go really wrong.
As described in the deployment PR ComposableStablePoolV6(CSPv6) will have:
uint256 private constant _INITIAL_PAUSE_WINDOW_DURATION = 4 * 365 days;
uint256 private constant _BUFFER_PERIOD_DURATION = 180 days;
The factories were deployed on or around March 26th (chain dependent) as can be observed by this TX on Mainnet which deploys CSPv6 as referenced by this PR. This means, that on mainnet:
It should be noted that an authorized caller could unpause/repause a pool in a single TX to reset the buffer as long as the pause window has not ended.
This PR contains many payloads that:
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. |
2024-04-17_chainname.json |
For each change with changes, a transaction builder json named after said chain exists to apply the changes described in the tables. |
chainname_CSP5_disable.json |
Disable new CSPV5(no pause window) pool creation |
| 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 would be called to grant the roles as described. These actions should be executed soon after the pasasge of this BIP.
The DAO Multisig is also requested to execute [chainname]_CSP5_disable.json on each chain around it's 26th execution week of the year 2024, which:
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 | function | role | chain | caller | caller_address |
|---|---|---|---|---|---|
| 20240223-composable-stable-pool-v6 | setSwapFeePercentage(uint256) | 0x22627da2e7670aed1292420d5f0a2a49a7bd5992e0aef001702aa3285b5979b3 | arbitrum | maxiKeepers/one_inch/settlement | 0xad3b67BCA8935Cb510C8D18bD45F0b94F54A968f |
| 20240223-composable-stable-pool-v6 | enableRecoveryMode() | 0x73c3332de64a6f7b137bea3255a221d779cc0f170ea4892ff0581faf799230ff | arbitrum | 20221123-pool-recovery-helper/PoolRecoveryHelper | 0xb5e56CC3d2e38e53b1166175C59e921A37cDC1E2 |
| 20240223-composable-stable-pool-v6 | setSwapFeePercentage(uint256) | 0x22627da2e7670aed1292420d5f0a2a49a7bd5992e0aef001702aa3285b5979b3 | arbitrum | multisigs/lm | 0xc38c5f97B34E175FFd35407fc91a937300E33860 |
| 20240223-composable-stable-pool-v6 | startAmplificationParameterUpdate(uint256,uint256) | 0x86f2cd537c832d7823d7b51e7f52288e383427c8c41180561f0f8054bc216f56 | arbitrum | multisigs/lm | 0xc38c5f9... |