Managing Proposals
How to queue, execute, and cancel proposals
Last updated
How to queue, execute, and cancel proposals
Last updated
Besides creating a proposal and voting on it, there are several other actions that can be taken: queuing, executing, and canceling.
Queuing, executing, and canceling proposals can all be accomplished directly from the Proposal Page.
Once voting ends, a proposal is not done. If a proposal passed, there are still more steps to take before it’s executed. A successful Governor proposal still needs to be queued—if the DAO uses a Timelock—and then executed.
Once a proposal passes, you can queue and execute it from the same place you voted:
Queue prepares a proposal for execution. The queue action sends the proposal to the Timelock contract, which starts the countdown until the proposal can be executed.
Someone needs to call the queue()
function because the EVM (Ethereum Virtual Machine) does not support scheduled or automatic calls. Every call must be kicked off by a user.
If a Governor does not have a Timelock, then proposals don’t need to be queued. They can be executed as soon as the proposal passes.
Generally, anyone can queue a proposal that has passed! The only exception is that some custom Governor contracts limit who can call queue()
.
This depends on the Timelock Delay of the Timelock contract. You can check that delay on Etherscan until Tally adds it to the DAO Page.
Executing a proposal runs its function calls onchain. Each proposal is associated with one or more function calls, which are visible in the Executable Code
section of the Proposal page. These calls can do things like transfer assets from the treasury, update parameters of the Governor itself, change or upgrade a DeFi protocol, or call another smart contract.
Generally, anyone can execute a proposal that has passed! The only exception is when a custom Governor contract limits who can call execute()
.
To cancel a proposal, click the three-dot menu to access additional actions. You can also copy the proposal's URL and view contextual information.
It depends! There isn’t a standard version of cancel logic across Governor implementations. Governor Alpha, Governor Bravo and OpenZeppelin Governor each have different behavior.
OpenZeppelin Governor
OpenZeppelin Governor leaves the cancellation up to the developer implementing the contract. Many DAOs implement a Canceller
role that gives a list of addresses the power to cancel proposals.
Governor Alpha
If the proposer’s voting power drops below the voting threshold, anyone can cancel that proposal.
Governor Bravo
Same as Governor Alpha. Also, the proposer can always cancel their proposal.
Not if it’s the exact same one. To re-submit a proposal, create a new proposal with the same executable code.