Description
🧐 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.