question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. ItĀ collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

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:closed
  • Created 2 years ago
  • Comments:7 (4 by maintainers)

github_iconTop GitHub Comments

2reactions
cygnusvcommented, Feb 1, 2022

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)

2reactions
cygnusvcommented, Nov 26, 2021

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()

Read more comments on GitHub >

github_iconTop Results From Across the Web

How to manage roles on a TimelockController using Defender ...
Navigate to Admin. Click on Add Contract. Select ā€œImport Contractā€. Import new contract using Defender Admin.
Read more >
Transfer Contract Ownership to a TimelockController Using ...
Brief walkthrough for transfering ownership to a Timelock using OpenZeppelin Defenderhttps://docs.openzeppelin.com/defender/admin#timelocks.
Read more >
Does anyone know how to use TimeLockController.sol from ...
I want to use the openzeppelin timelock controller contract in a way that it calls the functions of other deployed contracts at some...
Read more >
Analysis of OZ TimelockController security vulnerability patch
All projects using TimelockController should migrate. ... will see only one change: isOperationReady check added in _beforeCall function.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found