[GIP-56] Add Timelock contract as a configurator

Overview

Due to the upcoming v2.1 upgrade this proposal is to deploy standard Uniswap Timelock contract and pass Gnosis Multisig setup transactions into it instead of direct execution in the Gearbox contracts.

Context and motivation

At the moment, applying any settings to the Gearbox contracts, we create a bundle of transactions and put it as an array into the Gnosis Safe multi-sig wallet. Which currently has a configurator role - the only role that can make config changes in contracts.
It leads to potential vulnerable cases because transactions approved by multi-sig are executed immediately.
Another case is the user who disagrees with approved proposals has no time to react by withdrawing liquidity or making other financial decisions.
To mitigate these potential vulnerabilities and to give all users time to react, we propose to change the proposal execution flow to add a Timelock contract with 1 day delay of execution after Gnosis transactions are executed.

List of contract changes

  • deploy standard Timelock contract with 1 day minimal delay parameter
  • give configurator role to Timelock by Gnosis Multisig transaction in ACL contract
  • set Timelock as pausibleAdmin and unpausibleAdmin

Timeline

We want to deploy v2.1 next week, and it is important to implement this proposal before v2.1 upgrade
We suppose these changes will be ready to implement at the beginning of the next week starting 1st of May 2023

Voting

https://snapshot.org/#/gearbox.eth/proposal/0x42657a818e4ec43dc952f1e73deb3059b21dc0087a84ec058398d0925c16e40c

how pause & unpause works after adding Timelock?
will it be possible to pause contracts immediately (I think this is critical in the case of security incidents)

Pausing / unpausing is controlled by separate entities from the main configurator, so they will not be impacted by introducing the timelock. Same goes for pausing borrowing

1 Like