Add CANCEL_ROLE to TimelockController
See original GitHub issueš§ Motivation
In the forthcoming Threshold Network DAO, thereās a council with veto power over proposals. The only way to allow this with current implementation of TimelockController
would be to grant the council the PROPOSER_ROLE
, but this council shouldnāt be able to make proposals, according to our governance design. We need something like a CANCEL_ROLE
thatās different from PROPOSER_ROLE
and EXECUTION_ROLE
. This feature could also be a solution for the āProposer fightā problem thatās discussed in the documentation.
Discussion
I wanted to do this by creating a contract that inherits from TimelockController
, but since its variables and functions are marked as private itās being difficult. In particular, we need to further restrict the cancel operation to a different role than proposers, but the modifier in cancel()
forces us to override it and re-implement it, and we encounter the problem of _timestamps
being private.
Anyway, if you find this interesting, Iād love to help, since Iām working on that anyway.
Issue Analytics
- State:
- Created 2 years ago
- Comments:7 (4 by maintainers)
In the Threshold DAO, it was decided that a council multisig has veto power in case thereās a dangerous proposal (see https://forum.threshold.network/t/threshold-network-dao-proposal-v2/57)
Thanks @frangio and @Amxx !
After playing around with the idea of a cancel proxy I realized that we actually want the cancel functionality to happen at the Governor level, and since itās already a proposer in the timelock, it can cancel. We then just add an access control check in
Governor.cancel()